System Design2 ์ค๋ฌด์์ ์์ฃผ ๊ณ ๋ คํด๋ณผ ์ ์๋ ์ํฐ ํจํด ์ํฐ ํจํด์ํฐํจํด(Anti-Pattern)์ด๋ ์ํํธ์จ์ด ๊ฐ๋ฐ, ์ค๊ณ, ๋๋ ๋ฌธ์ ํด๊ฒฐ์์ ๋นํจ์จ์ ์ด๊ณ ํด๋ก์ด ๊ดํ์ ๋งํฉ๋๋ค. ์ฝ๋๋ฅผ ์์ฑํ ๋, ๋นํจ์จ์ ์ด๊ฑฐ๋ ๋น์์ฐ์ ์ผ ์ ์๋ ๋ฐฉ์๋ค์ ์๋ฏธํฉ๋๋ค. ์ฝ๋๋ฅผ ์์ฑํ ๋น์์๋ ๋ฌธ์ ๊ฐ ์์ด๋ณด์ผ ์ ์์ง๋ง, ์๊ฐ์ด ์ง๋๊ณ ์๊ตฌ ์ฌํญ์ด ๋ฐ๋๋ฉด ์์ ์ด ๋งค์ฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค. ์๋ชป๋ ๋ฐฉ์์ผ๋ก ์์ฑ๋ ์ฝ๋๋ ์คํ ์๋์ ์์คํ ์ ์ฒด ์ฑ๋ฅ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋ํ์ ์ธ ์ํฐ ํจํด1. Spaghetti Code (์คํ๊ฒํฐ ์ฝ๋) ๊ตฌ์กฐ๊ฐ ์๋ ๋ณต์กํ๊ณ ๋ค์ฝํ ์ฝ๋. ์ดํดํ๊ธฐ ์ด๋ ต๊ณ , ์ ์ง๋ณด์๊ฐ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๊ณ ์ฝ๋ ๋ณ๊ฒฝ ์ ์์์น ๋ชปํ ๋ฌธ์ ๋ฐ์์ด ๊ฐ๋ฅํฉ๋๋ค.์์function calculate(value) { if (value > 10) { if (val.. System Design 2024. 12. 26. ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋์์ฑ ๋ฌธ์ ๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ์์คํ ์์ ์ฑ์ ์ํด ๋ฐ๋์ ๊ณ ๋ คํด์ผ ํ๋ ์์๋ค. ํนํ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ฌ๋ฌ ์ฌ์ฉ์์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ๋ฉด์๋ ๋ฐ์ดํฐ์ ์ ํ์ฑ์ ์ ์งํ๋ ๊ฒ์ด ํต์ฌ์ด๋ค. ์ ์ฐฉ์ ์ด๋ฒคํธ๋ ์ฌ๊ณ ์ฒ๋ฆฌ๋ ๋์์ฑ(Concurrency) ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ์์ญ์ผ๋ก, ๋ค์์ ์์ฒญ์ด ๋์์ ์ฒ๋ฆฌ๋ ๋ ์ ํ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํด์ผ ํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ํ ๋์์ฑ ์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์์คํ ์ ์๊ตฌ ์ฌํญ๊ณผ ํธ๋ํฝ์ ๋ฐ๋ผ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ ํํด์ผ ํ๋ค. 1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ์์ ๋์์ฑ ์ ์ด ํธ๋์ญ์ & ๋ฝ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ ์ฌ์ฉํ์ฌ SELECT ... FOR UPDATE๋ก ์ฌ๊ณ ๋ฅผ ์กฐํํ๊ณ ์ ๋ฐ์ดํธ ์ ๋ฝ์ ๊ฑธ์ด ๋์์ฑ์ ์ ์ด. .. System Design 2024. 11. 25. ์ด์ 1 ๋ค์