๊ฐ๋ฐ์๋ฅผ ์ํ โ์ํํธ์จ์ด ์ํคํ ์ฒโ ๊ฐ๋ ๊ณผ ํ์ฉ๋ฒ
๊ฐ๋ฐ์๋ฅผ ์ํ โ์ํํธ์จ์ด ์ํคํ ์ฒโ ๊ฐ๋ ๊ณผ ํ์ฉ๋ฒ ๊ด๋ จ
์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์์คํ ์ ๊ตฌ์กฐ์ ์ฑ๋ฅ ๋ฐ ์ ๋ขฐ๋ ๋ฑ์ ์ํฅ์ ๋ฏธ์น๋ ์ค์ํ ์์์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ฅผ ์ดํดํ๋ฉด ์ฝ๋๋ฅผ ๋์ฑ ์ฒด๊ณ์ ์ผ๋ก ์์ฑํ ์ ์๊ณ , ์ฅ๊ธฐ์ ์ผ๋ก๋ ์์คํ ์ ์ง ๋ณด์์ ํ์ฅ์ ์ฉ์ดํ๊ฒ ํ ์ ์์ต๋๋ค.
๋ํ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ ๊ฐ๋ฐ์ ๊ฐ์ธ์ ์ญ๋๊ณผ ์ปค๋ฆฌ์ด์๋ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ํนํ ์๋์ด ๊ฐ๋ฐ์๋ ์ํํธ์จ์ด ์ํคํ ํธ๋ก ์ปค๋ฆฌ์ด๋ฅผ ๋ฐ์ ์ํค๊ณ ์ถ๋ค๋ฉด, ์ํํธ์จ์ด ์ํคํ ์ฒ์ ๋ํ ํ์ต์ ๊พธ์คํ ํด์ผ ํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์ํํธ์จ์ด ์ํคํ ์ฒ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ฃผ์ ํจํด์ ์ ๋ฆฌํด ๋ณด๊ณ , ๊ฐ๋ฐ ํ๋ก์ ํธ์์ ์ํํธ์จ์ด ์ํคํ ์ฒ๊ฐ ์ด๋ป๊ฒ ํ์ฉ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ํํธ์จ์ด ์ํคํ ์ฒ๋?
1) ์ํํธ์จ์ด ์ํคํ ์ฒ ์ ์
์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์์คํ ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋ฉฐ, ์์คํ ์ ๊ตฌ์ฑํ๋ ์์์ ๊ฐ ์์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ์ผ์ข ์ ์ฒญ์ฌ์ง์ ๋๋ค. ์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์์คํ ์ ์ฃผ์ ์์ฑ์ ๊ฒฐ์ ํ๊ณ , ๊ฐ๋ฐ ๊ณผ์ ์ ์ค์ํ ์ค๊ณ ๊ฒฐ์ ์ ํต์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ์์ธ๋ฌ ์์คํ ์ ์ ๋ฐ์ ์ธ ํ์ ์ ์ํ๊ณ , ๊ฐ ์ดํด๊ด๊ณ์ ์ฌ์ด์ ์์ฌ์ํต์ ๋๋ ๋๊ตฌ๊ฐ ๋๊ธฐ๋ ํ์ฃ .
2) ์ํคํ ์ฒ์ ์ค๊ณ์ ์ฐจ์ด์
์ํํธ์จ์ด ์ํคํ ์ฒ์ ์ํํธ์จ์ด ์ค๊ณ๋ ์ธ๋ป ๋น์ทํด ๋ณด์ด์ง๋ง ์์ฐํ ๋ค๋ฅธ ๊ฐ๋ ์ ๋๋ค. ์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์์คํ ์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ๊ฐ ์์ ๊ฐ์ ๊ด๊ณ์ ์ค๊ณ ์ง์นจ์ ์ธ์ฐ๋ ๋ฐ ์ด์ ์ ๋ก๋๋ค. ๋ฐ๋ฉด ์ํํธ์จ์ด ์ค๊ณ๋ ๊ฐ๋ณ ๊ตฌ์ฑ ์์์ ์ธ๋ถ ๊ตฌํ์ ์ง์คํ๋ค๋ ๊ฒ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์ฆ, ์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์์คํ ์ ์ฃผ์ ๊ตฌ์ฑ ์์์ ์ด๋ค ๊ฐ์ ์ํธ์์ฉ์ ์ ์ํ๊ณ , ์ค๊ณ๋ ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ค์ด ์ค์ ๋ก ์ด๋ป๊ฒ ๊ตฌํ๋ ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ ํฉ๋๋ค.
์ํํธ์จ์ด ์ํคํ ์ฒ ์์น
์ํํธ์จ์ด ์ํคํ ์ฒ ์์น์ ์ํํธ์จ์ด ์ค๊ณ ๋ฐ ๊ตฌํ ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๊ณ , ์ ์ง ๋ณด์์ ํ์ฅ์ ์ฉ์ดํ๊ฒ ํด์ฃผ๋ ์ง์นจ์ ๋งํฉ๋๋ค. ์ํํธ์จ์ด ์ํคํ ์ฒ ์์น์๋ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ๊ด์ฌ์ฌ ๋ถ๋ฆฌ, ๋ชจ๋ํ, ์ถ์ํ, ์บก์ํ ๋ฑ์ ๋ค ์ ์์ต๋๋ค.
1) ๊ด์ฌ์ฌ ๋ถ๋ฆฌ์ ๋ชจ๋ํ
**๊ด์ฌ์ฌ ๋ถ๋ฆฌ(Separation of Concerns)**๋ ์ํํธ์จ์ด ์์คํ ์ ๋ ๋ฆฝ๋ ๋ถ๋ถ์ผ๋ก ๋๋์ด ๊ฐ ๋ถ๋ถ์ด ํน์ ๊ด์ฌ์ฌ์๋ง ์ง์คํ๋๋ก ํ๋ ์ค๊ณ ์์น์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด, UI ๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ฑฐ๋, ํ๊ฒฝ ์ค์ ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฑ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ํ๋๋ก ๋ชจ๋ํ๊ฐ ์์ต๋๋ค.
**๋ชจ๋ํ(Modularity)**๋ ์์คํ ์ ์ฌ๋ฌ ๋ชจ๋๋ก ๋ถํ ํ๊ณ , ๊ฐ ๋ชจ๋์ด ํน์ ๊ธฐ๋ฅ์ ๋ด๋นํ๋๋ก ํ๋ ๋ฐฉ์์ ๋๋ค. ์ ์์๊ฑฐ๋ ์์คํ ์์ ์ ํ ๊ด๋ฆฌ, ์ฃผ๋ฌธ ์ฒ๋ฆฌ, ๊ฒฐ์ ๋ฑ์ ๊ฐ๊ฐ์ ๋ชจ๋๋ก ๊ตฌ๋ถํ๋ ๊ฒ์ ์๋ก ๋ค ์ ์๋๋ฐ์. ๊ฐ ๋ชจ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ, ํ ์คํธ, ๋ฐฐํฌ๋ ์ ์๊ณ , ์์คํ ๋ณต์ก์ฑ์ ์ต์ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ํ๊ฐ ํจ๊ณผ์ ์ด๋ ค๋ฉด ๋ชจ๋ ๊ฐ์ ๊ฒฐํฉ๋๋ ๋ฎ์ถ๊ณ , ๊ฐ ๋ชจ๋ ๋ด๋ถ์ ์์ง๋๋ ๋์ฌ์ผ ํฉ๋๋ค. ์ด๋ฅผ ๋์จํ ๊ฒฐํฉ(Loose Coupling)๊ณผ ๋์ ์์ง๋(High Cohesion) ์์น์ด๋ผ๊ณ ํฉ๋๋ค.
๋์จํ ๊ฒฐํฉ์ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ(dependency)์ ๋ฎ์ถฐ ๊ฐ ๋ชจ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋๋ก ํ๋ ์์น์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฃผ๋ฌธ ์ฒ๋ฆฌ ๋ชจ๋์ด ๊ฒฐ์ ๋ชจ๋๊ณผ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด, ๊ฒฐ์ ๋ฐฉ์์ด ๋ฐ๋์ด๋ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ๋ชจ๋์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๋ฐ๋ฉด ๋์ ์์ง๋๋ ๋ชจ๋ ๋ด๋ถ ์์๋ค์ด ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด, ํด๋น ๋ชจ๋์ ๊ธฐ๋ฅ์ด ์ผ๊ด์ฑ ์๊ฒ ์ํํ๋๋ก ํ๋ ์์น์ ๋๋ค. ๊ฒฐ์ ๋ชจ๋ ๋ด ๋ชจ๋ ํด๋์ค์ ํจ์๊ฐ ๊ฒฐ์ ์ฒ๋ฆฌ ์์ ์๋ง ์ง์คํ๋๋ก ํ๋ ๊ฒ์ ์๋ก ๋ค ์ ์์ต๋๋ค.
2) ์ถ์ํ์ ์บก์ํ
**์ถ์ํ(Abstraction)**๋ ๋ณต์กํ ์์คํ ์ ์ดํดํ๊ธฐ ์ฝ๋๋ก ์ธ๋ถ ์ฌํญ์ ๊ฐ์ถ๊ณ ์ค์ํ ๊ฐ๋ ๋ง ๋๋ฌ๋ด๋ ์์น์ ๋งํฉ๋๋ค. ์ฆ, ์ถ์ํ๋ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ ๊ฐ์ถ๊ณ , ํ์คํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์คํ ์ ๊ฐ ์์๊ฐ ์ํธ ์์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ฐจ๋ฅผ ์ด์ ํ ๋ ์ด์ ์๋ ์์ง์ ์๋ ๋ฐฉ์์ ๋ชจ๋ ์ ํ์ ์์ด ์ด์ ๋์ ํ๋ฌ๋ง ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด์ฒ๋ผ ์ถ์ํ๋ฅผ ํ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๋ณต์กํ ์์คํ ์ ๋ชจ๋ ๋์ ๋ฐฉ์์ ์ ํ์๊ฐ ์์ผ๋ฉฐ, ๋น์ฅ ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ์๋ง ์ง์คํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ถ์ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ๋ณดํต ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค๋ฅผ ์ด์ฉํฉ๋๋ค.
**์บก์ํ(Encapsulation)**๋ ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์จ๊ธฐ๊ณ , ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด์๋ง ์ํธ ์์ฉํ๋๋ก ํ๋ ์์น์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ํ ๊ณ์ข ํด๋์ค์์ ์์ก(balance) ๋ณ์๋ private์ผ๋ก ์ ์ธํ๊ณ , ์ ๊ธ(deposit)๊ณผ ์ถ๊ธ(withdraw) ๋ฉ์๋๋ฅผ ํตํด์๋ง ๋ณ๊ฒฝํ ์ ์๋๋ก ํฉ๋๋ค.
์ด๋ฅผ ํตํด ์์ก ๋ณ์์ ๋ํ ์ง์ ์ ์ธ ์ ๊ทผ์ ๋ฐฉ์งํ๊ณ , ์ ๊ธ๊ณผ ์ถ๊ธ ์ ํ์ํ ๊ฒ์ฆ ๋ก์ง์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ๊ฐ๋ฐ์๋ ์บก์ํ ์์น์ ์ ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ , ์์คํ ์ ๋ณต์ก์ฑ์ ์ ๋ฐ์ ์ผ๋ก ๋ฎ์ถ ์ ์์ต๋๋ค.
์ฃผ์ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด
1) ๋ ์ด์ด๋ ์ํคํ ์ฒ(Layered Architecture)
๋ ์ด์ด๋ ์ํคํ ์ฒ๋ ์ํํธ์จ์ด ์์คํ ์ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๋ถ๋ฆฌํด, ๊ฐ ๊ณ์ธต์ด ํน์ ์ญํ ์ ๋ด๋นํ๊ฒ ํ๋ ๊ตฌ์กฐ์ ๋๋ค. ๊ฐ ๊ณ์ธต์ ์์ ๋ณด๋ค ์๋์ ์๋ ๊ณ์ธต์๋ง ์์กดํ๋ฉฐ, ์์ชฝ ๊ณ์ธต๊ณผ์ ์์กด์ฑ์ ์์ต๋๋ค. ์ฆ, ๋จ๋ฐฉํฅ ์์กด์ฑ์ ๊ฐ๋๋ค๋ ๊ฒ์ด ๋ ์ด์ด๋ ์ํคํ ์ฒ์ ํต์ฌ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ผ๋ฐ์ ์ธ 4-tier ๋ ์ด์ด๋ ์ํคํ ์ฒ์ ๊ตฌ์กฐ๋ ํ๋ ์ ํ ์ด์ , ๋น์ฆ๋์ค, ํผ์์คํด์ค, ๋ฐ์ดํฐ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ ๋ฐฉํฅ์ผ๋ก๋ง ์์ฒญ์ด ์ ๋ฌ๋ฉ๋๋ค.
ํ๋ ์ ํ ์ด์ ๊ณ์ธต(Presentation Layer)์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ด๋นํ๋ฉฐ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ์๋ค์ ๋๋ค. ๋น์ฆ๋์ค ๊ณ์ธต(Business Layer)์ ์ฃผ๋ฌธ ์ฒ๋ฆฌ์ ๊ฐ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ฉฐ, ํผ์์คํด์ค ๊ณ์ธต(Persistence Layer)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ฒฐ์ ๋ด๋นํฉ๋๋ค. ๋ฐ์ดํฐ ๊ณ์ธต(Database Layer)์ ๋ณดํต ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋งํฉ๋๋ค. ์ด์ฒ๋ผ ๋ ์ด์ด๋ ์ํคํ ์ฒ ํจํด์ ์ ์ฉํ๋ฉด ๊ฐ ๊ณ์ธต์ ์ญํ ๊ณผ ์ฑ ์์ ๋ช ํํ ํ์ฌ, ์์คํ ์ ๋ํ ์ดํด์ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค.
2) ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ(Monolithic Architecture)
๋ชจ๋๋ฆฌ์(Monolithic)์ด๋ ์์ด๋ก ํ๋์ ๋ฉ์ด๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ ํ ์ฝ๋๋ฒ ์ด์ค์ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ํตํฉํ์ฌ, ํ๋์ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ๊ฐ๋ฐํ๋ ์ํคํ ์ฒ ํจํด์ ๋งํฉ๋๋ค. ์ด ์ํคํ ์ฒ์ ์ฅ์ ์ ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ , ์ํํธ์จ์ด ์ ํ์ ๋น ๋ฅด๊ฒ ์ถ์ํด์ผ ๊ฐ๋ฐ ์ด๊ธฐ์ ์ด์ ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๋จ, ์ ์ฐจ ์ฝ๋ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ์ ์ง๋ณด์์ ํ์ฅ์ด ์ด๋ ค์ธ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๋์ฒด๋ก ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด ๋ชจ๋ ๋ชจ๋์ด ๊ธด๋ฐํ๊ฒ ๊ฒฐํฉ๋์ด ํ๋์ ์คํ ํ์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ์ฆ, ์ฌ๋ฌ ๋ชจ๋์ด ๊ฐํ ์์กด์ฑ์ผ๋ก ๊ฒฐํฉ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ๋ณ๊ฒฝ์๋ ์ ์ฒด ์์คํ ์ ๋ค์ ๋น๋ํ๊ณ , ๋ฐฐํฌํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ๋งํ๋ฏ์ด ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ ์คํํธ์ ์ด๋ ๊ท๋ชจ๊ฐ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ํ์ฉ๋๊ธฐ๋ ํฉ๋๋ค. ์ฐธ๊ณ ๋ก, ๊ธฐ์กด์ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์ ๋จ์ ์ ๋ณด์ํ ๋ชจ๋์ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ ์์ต๋๋ค.
3) ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(Microservices Architecture)
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๋๋์ด, ๊ฐ๊ฐ ํน์ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ์ํํ๋๋ก ์ค๊ณํ ์ํคํ ์ฒ ํจํด์ ๋๋ค. ๊ฐ ์๋น์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋๊ณ ์์ฒด์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์๋น์ค์ ํต์ ํ ๋ HTTP๋ gRPC์ ๊ฐ์ ํ์ค ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ ์์๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ, ๊ฒฐ์ , ์ฃผ๋ฌธ, ์ฌ๊ณ ์ฒ๋ฆฌ ๋ฑ์ ๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ์์คํ ์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๋ฉฐ, ํน์ ์๋น์ค์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ์๋น์ค์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํฉ๋๋ค.
๋ํ ๊ฐ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ ์์คํ ๊ฐ๋ฐ์ ์ ํฉํ๋ฉฐ, ์๋น์ค๋ณ๋ก ๋ค์ํ ๊ธฐ์ ์คํ์ ์ฌ์ฉํ ์ ์์ด, ๊ฐ ์๋น์ค์ ์ ํฉํ ์ต์ ์ ๊ธฐ์ ์ ์ ํํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ค๋ง ๋ง์ดํฌ๋ก ์๋น์ค ๊ฐ ํต์ ๊ด๋ฆฌ, ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง, ๋ถ์ฐ ์์คํ ๋๋ฒ๊น ๋ฌธ์ ๋ฑ ์๋ก์ด ๋ณต์ก์ฑ์ ์ผ์ผํฌ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
4) ๋ง์ดํฌ๋ก์ปค๋ ์ํคํ ์ฒ(Microkernel Architecture)
๋ง์ดํฌ๋ก์ปค๋ ์ํคํ ์ฒ๋ ์์คํ ์ ํต์ฌ ๊ธฐ๋ฅ์ ํ๋์ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๊ณ , ์ดํ ์ถ๊ฐ๋๋ ํ์ฅ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ์ด๋ ์ ๋์จ์ผ๋ก ๊ตฌํํ๋ ํจํด์ ๋๋ค. ์ด ํจํด์ ์ฃผ์ ๋ชฉํ๋ ์์คํ ์ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, VS Code๋ IntelliJ ๊ฐ์ IDE๋ ํต์ฌ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋ ์ํ์์, ์๋กญ๊ฒ ์ถ๊ฐ๋๋ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ ๊ฐ์ ์ธ๋ถ ๋ชจ๋๋ก ํ์ฅํ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก์ปค๋ ์ํคํ ์ฒ๋ ์์คํ ์ ํต์ฌ ๋ถ๋ถ์ ์์ ์ ์ผ๋ก ์ ์งํ๋ฉด์๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ ์๊ฐ ๋ง์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋, ์ํํธ์จ์ด ์ ํ ๋ผ์ธ์ ํนํ ์ ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์คํ ์ด ๋ณต์กํด์ง์๋ก ํ๋ฌ๊ทธ์ธ ๊ฐ ์์กด์ฑ ๊ด๋ฆฌ์ ๋ฒ์ ํธํ์ฑ ์ ์ง๊ฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
5) ์ด๋ฒคํธ ์ฃผ๋ ์ํคํ ์ฒ(Event-Driven Architecture)
์ด๋ฒคํธ ์ฃผ๋ ์ํคํ ์ฒ(EDA)๋ ์์คํ ๊ตฌ์ฑ ์์๊ฐ ์ด๋ฒคํธ๋ฅผ ํตํด ์ํธ ์์ฉํ๋๋ก ์ค๊ณํ ์ํคํ ์ฒ ํจํด์ ๋งํฉ๋๋ค. EDA์๋ ์ด๋ฒคํธ ์์ฐ์(Event Producer)์ ์ด๋ฒคํธ ์๋น์(Event Consumer)๊ฐ ์์ผ๋ฉฐ, ์ด๋ฒคํธ ๋๊ธฐ์ด(Event Queue)์ ๊ด๋ฆฌํ๋ ์ด๋ฒคํธ ์ค์ฌ์(Event Meditator)๋ฅผ ํตํด ๋น๋๊ธฐ์ ์ผ๋ก ํต์ ํฉ๋๋ค. ์ด์ฒ๋ผ ๋น๋๊ธฐ ํต์ ์ ํตํด ์์คํ ์ ๋์จํ๊ฒ ๊ฒฐํฉ๋๋ฉฐ, ๋์ ํ์ฅ์ฑ๊ณผ ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๊ฐ์ถ ์ ์์ต๋๋ค.
์ ์์๊ฑฐ๋ ์์คํ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ๊ณผ์ ์ ์๋ก ๋ค๋ฉด, ์ฌ์ฉ์๊ฐ ์ฃผ๋ฌธ์ ์์ฑํ๋ฉด ์ฃผ๋ฌธ ์๋น์ค๋ ์ฃผ๋ฌธ ์์ฑ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ณ , ์ด ์ด๋ฒคํธ๋ ์ด๋ฒคํธ ์ค์ฌ์๋ฅผ ํตํด ๊ฒฐ์ ์๋น์ค๋ก ์ ๋ฌ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ์ ์๋น์ค๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ์ ์๋ฃ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ฉด, ๋ค์ ์ฌ๊ณ ๊ด๋ฆฌ ์๋น์ค๋ก ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋์ด ์ฌ๊ณ ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์์ ๋๋ค. ์ด์ฒ๋ผ ์ด๋ฒคํธ ์ฃผ๋ ์ํคํ ์ฒ๋ ๊ฐ ๋ชจ๋์ด ๋์จํ๊ฒ ๊ฒฐํฉ๋์ด ์์ด ์์คํ ํ์ฅ์ ์ ๋ฆฌํ์ง๋ง, ์ด๋ฒคํธ ์์์ ์ผ๊ด์ฑ ๊ด๋ฆฌ, ๋๋ฒ๊น ๋ฌธ์ ๋ฑ์ ๊ณผ์ ๊ฐ ์์ต๋๋ค.
๊ฐ๋ฐ์์์ ์ํํธ์จ์ด ์ํคํ ์ฒ ํ์ฉ
1) ํ๋ก์ ํธ ์์ ์ ์ํคํ ์ฒ ๊ฒฐ์ ๊ณผ์
ํ๋ก์ ํธ ์์ ์ ์ํคํ ์ฒ ๊ฒฐ์ ์ ์ฑ๊ณต์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ํ ์ค์ํ ๊ณผ์ ์ ๋๋ค. ๋จผ์ ํ๋ก์ ํธ ์๊ตฌ์ฌํญ์ ๋ถ์ํ์ฌ, ์์คํ ์ด ํด๊ฒฐํด์ผ ํ ๋ฌธ์ ์ ๊ธฐ๋ฅ์ ๋ช ํํ ์ ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์, ์์ ์ ์๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์์คํ ์ ์ฃผ์ ํ์ง ์์ฑ(์ฑ๋ฅ, ๋ณด์, ํ์ฅ์ฑ, ์ ์ง ๋ณด์์ฑ ๋ฑ)์ ์๋ณํ๊ณ ์ฐ์ ์์๋ฅผ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์คํ ์ ํต์ฌ ๋ชฉํ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ ์ ์์ต๋๋ค.
์ดํ ๋ค์ํ ์ํคํ ์ฒ ํจํด์ ๊ฒํ ํ์ฌ ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ ์ํคํ ์ฒ๋ฅผ ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋น ๋ฅธ ์์คํ ๊ตฌ์ถ์ด ์ค์ํ๋ค๋ฉด ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ฅผ ์ ํํ ์ ์๊ณ , ์์คํ ์ ํ์ฅ์ฑ์ด ์ค์ํ๋ค๋ฉด ๋ง์ดํฌ๋ก์๋น์ค๋ ์ด๋ฒคํธ ์ฃผ๋ ์ํคํ ์ฒ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์ ํ๋ ์ํคํ ์ฒ ๋ฐฉ์์ ๋ฐ๋ผ ์์คํ ์ ๋ชจ๋๊ณผ ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๊ณ , ์ด๋ค ๊ฐ์ ๊ด๊ณ์ ์์กด์ฑ์ ์ค๊ณํฉ๋๋ค. ์์ธ๋ฌ ์ด๊ธฐ ํ๋กํ ํ์ ์ ํตํด ์ํคํ ์ฒ์ ์ ํฉ์ฑ์ ๊ฒ์ฆํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ์ํคํ ์ฒ๋ฅผ ์กฐ์ ํด ๋๊ฐ๋๋ค.
2) ์ํํธ์จ์ด ์ํคํ ์ฒ ๋ฌธ์ํ ๋ฐฉ๋ฒ
์ํํธ์จ์ด ์ํคํ ์ฒ ๋ฌธ์๋ ๊ฐ๋ฐํ ๊ฐ์ ์ดํด๋ฅผ ๋์ด๊ณ , ํ๋ก์ ํธ์ ์ผ๊ด์ฑ๊ณผ ํ์ง์ ๋ณด์ฅํ๊ธฐ ์ํ ์ค์ํ ์๋ฃ์ ๋๋ค. ์ํํธ์จ์ด ์ํคํ ์ฒ ๋ฌธ์์๋ ์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ, ๋ฐ์ดํฐ ํ๋ฆ ๋ค์ด์ด๊ทธ๋จ, ์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ ๋ฑ์ด ์์ผ๋ฉฐ, ์ฃผ๋ก ์์คํ ์ ์ฃผ์ ๊ตฌ์ฑ ์์์ ์ด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐํํ๊ณ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ช ํํ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ํ์ํคํ ์ฒ ๊ฒฐ์ ๊ธฐ๋ก(Architecture Decision Records, ADR)์ ์์ฑํ๋ฉด, ์ํคํ ์ฒ์ ๋ํ ์ค์ํ ์ค๊ณ ๊ฒฐ์ ๊ณผ ๊ทธ ์ด์ ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๋ฌธ์ํํ ์ ์์ต๋๋ค. ADR์๋ ์์คํ ์ ํ์ง ์์ฑ, ์ค๊ณ ์์น, ์ฌ์ฉ๋ ํจํด ๋ฑ์ด ํฌํจ๋๋ฉฐ, ํ๋ก์ ํธ ์งํ ์ค ๋ฐ์ํ๋ ์ํคํ ์ฒ ๋ณ๊ฒฝ์ ๋ํ ์ด๋ ฅ์ ๋จ๊ฒจ ํ์ ๊ฐ ์์คํ ์ ๋ํ ์ผ๊ด๋ ์ดํด๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
3) ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ๋ฆฌํฉํ ๋ง์ ํ์ฉ
๊ฐ๋ฐ ํ๋ก์ ํธ์์ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์ค์ํ ์ปค๋ฎค๋์ผ์ด์ ๋๊ตฌ๊ฐ ๋ฉ๋๋ค. ์์ ์ดํด๋ณธ ์ํคํ ์ฒ ๋ฌธ์๋ฅผ ํตํด ์์คํ ์ด ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ป๊ฒ ๊ฐ๋ฐ๋๊ณ , ์ ์ง ๋ณด์๋์ด์ผ ํ๋์ง ๋ฐฉํฅ์ ์ค์ ํ ์ ์์ต๋๋ค. ๋ํ ๊ฐ๋ฐ ์๋, ์์คํ ์์ ์ฑ, ๋ณด์ ์์ค ๋ฑ ์๋ก ์์ถฉํ ์ ์๋ ๊ฐ์น์ ๋ํ ์์ฌ ๊ฒฐ์ ์ ํ์ฉํ ์ ์์ฃ . ์์ธ๋ฌ ์๋ก์ด ํ์์ด ํ๋ก์ ํธ์ ์ฐธ์ฌํ ๋ ์ ์ฉํ ์ฐธ๊ณ ์๋ฃ๊ฐ ๋์ด, ๋น ๋ฅธ ์ ์์ ๋์ธ ์ ์์ต๋๋ค.
๋ํ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ ์ค์ ๊ตฌํ์ด ์์คํ ๋ชฉํ์ ์ผ์นํ๋์ง ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ๊ณ , ๋ฆฌํฉํ ๋ง์ ํตํด ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ ์ง์ ์ผ๋ก ๊ฐ์ ํ๊ธฐ ์ํ ๊ธฐ์ค์ผ๋ก๋ ํ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฆฌํฉํ ๋ง ์์ ์๋ ์ฃผ๋ก ์ฝ๋์ ์ค๋ณต ์ ๊ฑฐ, ์ฑ๋ฅ ์ต์ ํ, ์ถ์ํ ์์ค ํฅ์, ์์กด์ฑ ๊ด๋ฆฌ, ๋ณด์ ๊ฐํ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
๋ง์น๋ฉฐ
์ง๊ธ๊น์ง ์ํํธ์จ์ด ์ํคํ ์ฒ์ ๊ด๋ จํ์ฌ ๊ฐ๋ฐ์๊ฐ ์์์ผ ํ๋ ๊ธฐ์ด์ ์ธ ๋ด์ฉ๊ณผ ํ์ฉ์ ๋ํด์ ์ดํด๋ดค์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ฅผ ์ดํดํ๋ฉด, ๋ณต์กํ ์์คํ ๊ตฌ์กฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ดํดํ๊ณ ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฃผ์ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด๊ณผ ์ค๊ณ ์์น์ ํ์ตํ๊ณ , ์ค์ ๋ค์ํ ํ๋ก์ ํธ์์ ๊ฒฝํํด ๋ณด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๋ ธ๋ ฅ๊ณผ ๊ฒฝํ์ด ์์ด๋ฉด ํ ๋จ๊ณ ๋ ๋์ ์์ค์ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค.