Java์ 6๊ฐํ ์ํคํ ์ฒ์ ๋ํ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ์ ๋ต
Java์ Hexagonal Architecture๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.

Hexagonal Architecture ๋๋ Ports and Adapters๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ์ ์ํธ ์์ฉํ๋ ์ธ๋ถ ์๋น์ค, ๋ฐ์ดํฐ ์์ค ๋ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด์ ๋๋ค. Hexagonal Architecture์ ์ฃผ์ ๋ชฉํ๋ ํต์ฌ ๋ก์ง์ ์ค์ฌ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ํฌํธ ๋ฐ ์ด๋ํฐ๋ผ๊ณ ํ๋ ์ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ธ๋ถ ์ธ๊ณ์ ์ฐ๊ฒฐํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ, ์ ์์ฑ ๋ฐ ํ ์คํธ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค.
"Hexagonal"์ด๋ผ๋ ์ด๋ฆ์ ํต์ฌ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ๋ฅผ ๋ค์ํ ์ธ๋ถ ์๋น์ค์ ์ฐ๊ฒฐํ๋ ๊ฐ ๋ฉด์ ์๋ก ๋ค๋ฅธ ์ด๋ํฐ๊ฐ ์๋ ์ก๊ฐํ์ ๋ณด์ฌ์ฃผ๋ ์ด ์ํคํ ์ฒ ํจํด์ ์๊ฐ์ ํํ์์ ์ ๋๋์์ต๋๋ค. ์ด ๋ ์ด์์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ ์ด๋ํฐ๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ผ๋ฏ๋ก ์ด ์ํคํ ์ฒ์ ์ ์ฐ์ฑ๊ณผ ๋ชจ๋์ฑ์ ๋ณด์ฌ์ค๋๋ค.
์ก๊ฐํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
Hexagonal Architecture๋ฅผ ์ฌ์ฉํ๋ฉด Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ด ์์ต๋๋ค.
- ํต์ฌ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ๊ฒฉ๋ฆฌ: ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ๋ฅผ ์ธ๋ถ ์ข ์์ฑ์์ ๋ถ๋ฆฌํ๋ฉด ์ธ๋ถ ํตํฉ์ ์ธ๋ถ ์ฌํญ์ ๋ํด ๊ฑฑ์ ํ์ง ์๊ณ ํต์ฌ ๊ธฐ๋ฅ ๊ตฌํ์ ์ง์คํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ๋ํ ์ธ๋ถ ์๋น์ค์ ๋ ๋ฆฝ์ ์ผ๋ก ํต์ฌ ๋ ผ๋ฆฌ๋ฅผ ํ ์คํธํ ์ ์์ผ๋ฏ๋ก ์ฝ๋์ ํ ์คํธ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ ์์ฑ ํฅ์: ์ฐ๋ ค ์ฌํญ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๋ฉด ์ธ๋ถ ์ข ์์ฑ ๋๋ ํด๋น ๊ตฌํ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ด ํต์ฌ ๋ ผ๋ฆฌ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ธ๋ถ ์ข ์์ฑ์ ์ฝ๊ฒ ์ ๋ฐ์ดํธ, ๋ฆฌํฉํฐ๋ง ๋๋ ๊ต์ฒดํ ์ ์์ต๋๋ค.
- ํฅ์๋ ๋ชจ๋์ฑ: Hexagonal Architecture๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ชจ๋์ ๊ตฌ์ฑ ์์์ ๊ฐ๋ฐ์ ์ด์งํ์ฌ ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ, ์ด๋ํฐ ๊ต์ฒด ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ ์ฌ๊ตฌ์ฑ์ ๋ ๊ฐ๋จํ๊ฒ ๋ง๋ญ๋๋ค.
- ์ ์ฐํ ํตํฉ: ํฌํธ ๋ฐ ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์ ํ์ ์ธ๋ถ ์๋น์ค ๋ฐ ๋ฐ์ดํฐ ์์ค์ ์ฝ๊ฒ ์ฐ๊ฒฐํ ์ ์์ผ๋ฏ๋ก ๋ค์ํ ํ๊ฒฝ ๋ฐ ์๊ตฌ ์ฌํญ์ ๋ํ ์ ์์ฑ์ด ํฅ์๋ฉ๋๋ค.
- ํฅ์๋ ํ ์คํธ ๊ฐ๋ฅ์ฑ: ํต์ฌ ๋๋ฉ์ธ ๋ก์ง์ด ์ธ๋ถ ์๋น์ค์ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฏ๋ก ์ ์ฒด ์ธ๋ถ ์ข ์์ฑ ์ฒด์ธ์ ๋ชจ์ ๋๋ ์คํ ์์ํ์ง ์๊ณ ๋ ํต์ฌ ๋น์ฆ๋์ค ๊ท์น์ ๋ํ ๋จ์ ํ ์คํธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.

์ด๋ฏธ์ง ์ถ์ฒ: GitHub
์ฃผ์ ๊ฐ๋ ๋ฐ ์ฉ์ด
Hexagonal Architecture๋ฅผ ๋ ์ ์ดํดํ๊ธฐ ์ํด ๋ค์์ ๋ช ๊ฐ์ง ํ์ ์ฉ์ด์ ๊ฐ๋ ์ ๋๋ค.
ํต์ฌ ๋๋ฉ์ธ ๋ก์ง
์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ๋ํ๋ ๋๋ค. Hexagonal Architecture์์ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฉ์์ง ์์คํ ๋๋ UI ๊ตฌ์ฑ ์์์ ๊ฐ์ ์ธ๋ถ ์ข ์์ฑ ๋ฐ ๋ฌธ์ ์ ๋ ๋ฆฝ์ ์ด์ด์ผ ํฉ๋๋ค.
ํฌํธ
ํฌํธ๋ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ์ ์ธ๋ถ ์๋น์ค ๊ฐ์ ์ํธ ์์ฉ์ ๋ํ ๊ณ์ฝ์ ์ ์ํ๋ ์ธํฐํ์ด์ค์ ๋๋ค. ํฌํธ๋ ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํด๋น ์ด๋ํฐ ๊ฐ์ ์ ๋ ฅ/์ถ๋ ฅ ํ์ ๋ฐ ํต์ ํ๋กํ ์ฝ์ ์ ์ํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ ๊ฐ์ง ์ ํ์ ํฌํธ๊ฐ ์์ต๋๋ค.
- ๊ตฌ๋ ํฌํธ: ๊ตฌ๋ ํฌํธ๋ ์ธ๋ถ ์กํฐ(์: UI ๊ตฌ์ฑ ์์, ์ธ๋ถ ์์คํ )๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ํธ ์์ฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ธ๋ถ ํด๋ผ์ด์ธํธ๊ฐ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ์ ๋ช ๋ น๊ณผ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค.
- ๊ตฌ๋ ํฌํธ: ๊ตฌ๋ ํฌํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฉ์์ง ์์คํ ๋๋ ํ์ฌ API์ ๊ฐ์ ์ธ๋ถ ์๋น์ค์ ์ํธ ์์ฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ธ๋ถ ์ข ์์ฑ์ ๋ํ ๋ฉ์๋๋ฅผ ์ ์ํฉ๋๋ค.
์ด๋ํฐ
์ด๋ํฐ๋ ํฌํธ๋ฅผ ๊ตฌํํ๊ณ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ์ ์ธ๋ถ ์๋น์ค ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ฐ์ดํฐ ๋ฐ ๊ธฐ๋ฅ์ ์ธ๋ถ ํํ์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ดํดํ ์ ์๋ ํ์์ผ๋ก ๋ณํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํฉ๋๋ค.
- ๊ตฌ๋ ์ด๋ํฐ: ๊ตฌ๋ ์ด๋ํฐ๋ ์ธ๋ถ ์ ๋ ฅ(์: HTTP ์์ฒญ ๋๋ ์ฌ์ฉ์ ์ ๋ ฅ)์ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ๊ฐ ์ดํดํ ์ ์๋ ๋ช ๋ น ๋ฐ ์ฟผ๋ฆฌ๋ก ๋ณํํฉ๋๋ค.
- ๊ตฌ๋ ์ด๋ํฐ: ๊ตฌ๋ ์ด๋ํฐ๋ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ์ ์ถ๋ ฅ ๋ฐ ์๊ตฌ ์ฌํญ์ ์ธ๋ถ ์๋น์ค์ ์ํธ ์์ฉํ๋ ๋ฐ ํ์ํ ํธ์ถ ๋ฐ ์์ ์ผ๋ก ๋ณํํฉ๋๋ค.
์ด๋ฌํ ์ฃผ์ ๊ฐ๋ ์ ์ดํดํ๋ฉด Java ์ ํ๋ฆฌ์ผ์ด์ ์์ Hexagonal Architecture๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๊ณ ํ์ฉํ์ฌ ์ ์ง ๊ด๋ฆฌ, ์ ์์ฑ ๋ฐ ํ ์คํธ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Java์ 6๊ฐํ ์ํคํ ์ฒ ๊ตฌํ
Java์์ Hexagonal Architecture๋ฅผ ๊ตฌํํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ธํ๋ผ ๊ณ์ธต์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค. ์ด๋ Hexagonal Architecture์ ์ฃผ์ ๊ตฌ์ฑ ์์์ธ Port์ Adapter๋ฅผ ์ ์ํจ์ผ๋ก์จ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๋ค์์ Java์์ Hexagonal Architecture๋ฅผ ๊ตฌํํ๋ ๋จ๊ณ์ ๋๋ค.
- ํฌํธ ์ ์: ํฌํธ๋ฅผ Java ์ธํฐํ์ด์ค๋ก ์ ์ํ์ฌ ์์ํ์ญ์์ค. ํฌํธ๋ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ํธ ์์ฉ์ ๋ํ ๊ณ์ฝ์ ๋ํ๋ด๋ฉฐ ํต์ฌ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ์ธ๋ถ ์์คํ ๋๋ UI ๊ตฌ์ฑ ์์ ๊ฐ์ ๊ฒฝ๊ณ ์ญํ ์ ํฉ๋๋ค. ๊ฐ ํฌํธ๋ ์์๋๋ ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ์ ์ ์ํ๋ ์ผ๋ จ์ ๋ฉ์๋๋ฅผ ๋ ธ์ถํด์ผ ํฉ๋๋ค.
- ์ด๋ํฐ ๊ตฌํ: ํฌํธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ Java ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋ฌํ ์ด๋ํฐ๋ ์ธ๋ถ ์์คํ ์ ํต์ ํ๋กํ ์ฝ์ ํฌํธ์์ ์ ์ํ ๊ณ์ฝ์ผ๋ก ๋ณํํฉ๋๋ค. ์ด๋ํฐ๋ ๊ธฐ๋ณธ ๋ฐ ๋ณด์กฐ์ ๋ ๊ฐ์ง ์ ํ์ผ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์ด๋ํฐ๋ UI ๋๋ ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ์ํธ ์์ฉํ๋ ๋ฐ๋ฉด ๋ณด์กฐ ์ด๋ํฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, API ๋๋ ๋ฉ์์ง ์์คํ ๊ณผ ๊ฐ์ ์ธ๋ถ ์์คํ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ์์ฑ: ์ด๋ํฐ ๋ฐ ํฌํธ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํฉ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ์คํ ๋ฆฌ์ง ๋๋ ๋ฉ์์ง๊ณผ ๊ฐ์ ์ธํ๋ผ ๋ฌธ์ ์ ๋ํ ์ข ์์ฑ ์์ด ์์ํ๊ณ ์ํ ๋น์ ์ฅ์ด์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋๋ฒ ์ด์ค์ ํ ์คํธ ๊ฐ๋ฅ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ด ํฅ์๋๊ณ ํต์ฌ ๋๋ฉ์ธ์ด ์ฃผ๋ณ ์ํคํ ์ฒ์ ๋ณ๊ฒฝ์ ์ํฅ์ ๋ฐ์ง ์๋๋ก ํฉ๋๋ค.
- ๊ตฌ์ฑ ์์ ์ฐ๊ฒฐ: DI(์ข ์์ฑ ์ฃผ์ )๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ข ์์ฑ์ ๊ด๋ฆฌํฉ๋๋ค. DI๋ ํน์ ๊ตฌ์ฑ ์์์ ํ์ํ ์ข ์์ฑ์ด ๊ตฌ์ฑ ์์ ๋ด์์ ์ง์ ์ธ์คํด์คํ๋์ง ์๊ณ ์ธ๋ถ์ ์ผ๋ก ์ ๊ณต๋๋๋ก ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ข ์์ฑ์ ํ ์คํธ double ๋๋ ๋ชจ์๋ก ๋์ฒดํ ์ ์์ผ๋ฏ๋ก ์ฐ๋ ค ์ฌํญ์ ๋ณด๋ค ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๊ณ ๋จ์ ํ ์คํธ๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค.
6๊ฐํ ์ํคํ ์ฒ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
6๊ฐํ ์ํคํ ์ฒ๋ฅผ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ๋ชจ๋์ฑ ๊ฐ์กฐ: ์ ์ ์๋ ์ธํฐํ์ด์ค์ ์ถ์ํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ฑ์ ์ผ๋์ ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํฉ๋๋ค. ๊ตฌ์ฑ ์์๋ฅผ ๋ชจ๋์์ผ๋ก ์ ์งํ๋ฉด ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ํ๋์ ๊ตฌํ์ ๋ค๋ฅธ ๊ตฌํ์ผ๋ก ์ฝ๊ฒ ๊ต์ฒดํ ์ ์์ต๋๋ค.
- ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ ๋ถ๋ฆฌ: ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํ๊ณ ์ธํ๋ผ ๋ฌธ์ ์ ๋ถ๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ ์ฝ๊ฒ ํ ์คํธ ๋ฐ ์ ์ง ๊ด๋ฆฌํ๊ณ ๊ธฐ์ ๋๋ ์๊ตฌ ์ฌํญ์ ๋ณํ์ โโ์ ์ํ ์ ์์ต๋๋ค.
- ๋ช ํํ ํฌํธ ๊ณ์ฝ ์ ์: ํฌํธ์ ๋ํด ์ ์๋ ์ธํฐํ์ด์ค๊ฐ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ์ง ํ์ธํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ํธ ์์ฉ์ ๋ํ ๊ณ์ฝ์ ํจ๊ณผ์ ์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํต์ฌ ๋๋ฉ์ธ ๋ก์ง๊ณผ ์ธ๋ถ ์์คํ ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ์ฌ ๊ตฌํ์ ์ ์ํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ์ข ์์ฑ ์ญ์ ์ ์ฉ: DI(์ข ์์ฑ ์ฃผ์ )๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ข ์์ฑ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฐ๋ ค ์ฌํญ์ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํ๊ณ ๊ฒฐํฉ์ ์ค์ด๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ํ ์คํธ ๋๋ธ ๋๋ ๋ชจ์๋ฅผ ์ฃผ์ ํ ์ ์์ผ๋ฏ๋ก ํ ์คํธ๊ฐ ๊ฐ์ํ๋ฉ๋๋ค.
- ์ผ๊ด๋ ๋ช ๋ช ๊ท์น ์ ์ฉ: ์ผ๊ด๋ ๋ช ๋ช ๊ท์น์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ๋ด์์ ํฌํธ์ ์ด๋ํฐ๋ฅผ ๋ช ํํ๊ฒ ์๋ณํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๋ฒ ์ด์ค์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ด ํฅ์๋์ด ๊ฐ๋ฐ์๊ฐ ์ํคํ ์ฒ๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
์ก๊ฐํ ์ํคํ ์ฒ์ ์ค์ ์ฌ๋ก
์๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ํํธ์จ์ด ์์คํ ์ ๋ ๋์ ์ ์ง ๊ด๋ฆฌ, ์ ์์ฑ ๋ฐ ์ ์ฐ์ฑ์ ๋ฌ์ฑํ๊ธฐ ์ํด Hexagonal Architecture๋ฅผ ์ฑํํ์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ค์ ์ฌ๋ก์ ๋๋ค.
- ์ ์์๊ฑฐ๋ ํ๋ซํผ: ์ ์์๊ฑฐ๋ ์์คํ ์ ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด, ๋ฐฐ์ก์ ์ฒด, ์ฌ๊ณ ๊ด๋ฆฌ ์์คํ ๊ณผ ๊ฐ์ ๋ค์ํ ์ธ๋ถ ์๋น์ค์์ ํตํฉ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Hexagonal Architecture๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ ํตํฉ์ ๋ณ๋์ ์ด๋ํฐ๋ก ๊ตฌํํ ์ ์๋ ๋ชจ๋์ ์์คํ ์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ์๋ก ๋ค๋ฅธ ๊ณต๊ธ์ ๊ฐ์ ์ฝ๊ฒ ์ ํํ๊ฑฐ๋ ํ์ฌ ์๋น์ค์ ์ ๋ฐ์ดํธ์ ์ ์ํ ์ ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค: ๋ง์ดํฌ๋ก์๋น์ค๋ Hexagonal Architecture์ ํ์ํ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. Hexagonal ์์น์ ์ฌ์ฉํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค, API ๋ฐ ๋ฉ์์ง ์์คํ ๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ธ๋ถ ์๋น์ค ๋ฐ ๊ตฌ์ฑ ์์์ ์ฐ๊ฒฐํ ๋ ๋ฌธ์ ๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ฉฐ ์ ์ฐ์ฑ์ ์ป์ ์ ์์ต๋๋ค.
- ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ (CMS): Drupal ๋๋ WordPress์ ๊ฐ์ ์ธ๊ธฐ ์๋ CMS ํ๋ซํผ์ ๋ค์ํ ์ธ๋ถ ํ๋ฌ๊ทธ์ธ, ํ ๋ง ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํด์ผ ํ๋ฏ๋ก Hexagonal Architecture์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. Hexagonal ์์น์ ๊ตฌํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ์ธ๋ถ ์ข ์์ฑ ๋๋ ์๊ตฌ ์ฌํญ ๋ณ๊ฒฝ์ ์ฝ๊ฒ ์ ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ค์ ์ฌ๋ก๋ฅผ ํตํด ํ์ตํ๊ณ ํ์ตํจ์ผ๋ก์จ ์์ ์ ํ๋ก์ ํธ์ Hexagonal Architecture ์์น์ ์ ์ฉํ์ฌ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๊ณ ์ ์ฐํ๋ฉฐ ์ฝ๊ฒ ์ ์ํ ์ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ ์ ์ดํดํ ์ ์์ต๋๋ค. Hexagonal Architecture๋ฅผ AppMaster.io ์ ๊ฐ์ ํ๋ซํผ๊ณผ ํตํฉํ๋ฉด AppMaster ์ no-code ๊ธฐ๋ฅ์ ์ด์ ์ ๋๋ฆฌ๋ฉด์ Hexagonal Architecture์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ฑ์ ๊ตฌ์ถํ ์ ์์ผ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค. .
AppMaster.io์ ์ก๊ฐํ ์ํคํ ์ฒ ํตํฉ
AppMaster.io ํ๋ก์ ํธ์ Hexagonal Architecture๋ฅผ ํตํฉํ๋ฉด ์ ์ง ๊ด๋ฆฌ, ์ ์์ฑ ๋ฐ ์ ์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. Hexagonal Architecture์ ์์น์ ์ค์ํ๋ฉด์ ๋ฐฑ์๋ ๋ฐ ์น ์ฑ์์ ํต์ฌ ๋๋ฉ์ธ ๋ก์ง์ ์ค๊ณํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ฅผ ์ธ๋ถ ์๋น์ค ๋ฐ UI ๊ตฌ์ฑ ์์์ ์ฐ๊ฒฐํ์ฌ ๊ฐ์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. AppMaster.io๋ ๊ฐ๋ฐ์๊ฐ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐ์ ์ผ๋ก ์์ฑํ ์ ์๋ ๊ฐ๋ ฅํ ๋ ธ์ฝ๋ ํ๋ซํผ์ ๋๋ค.

์ผ๋ จ์ ๋๊ตฌ์ ์ง๊ด์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ถ AppMaster.io๋ ํ๋ก์ ํธ์์ Hexagonal Architecture ๊ตฌํ์ ๋จ์ํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. Hexagonal Architecture๋ฅผ AppMaster.io์ ํตํฉํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
1๋จ๊ณ: Visual BP Designer๋ฅผ ์ฌ์ฉํ์ฌ ํต์ฌ ๋๋ฉ์ธ ๋ก์ง ์ค๊ณ
AppMaster.io์ ์๊ฐ์ BP Designer๋ฅผ ์ฌ์ฉํ์ฌ ํต์ฌ ๋๋ฉ์ธ ๋ก์ง์ ์ค๊ณํ๋ ๊ฒ๋ถํฐ ์์ํ์ญ์์ค. ํต์ฌ ๋ ผ๋ฆฌ์ ๊ตฌ์ฑ ์์๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํ๊ณ ๊ธฐ๋ณธ ์ฑ ์์ ์ง์คํด์ผ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ Hexagonal Architecture๊ฐ ์นํธํ๋ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
2๋จ๊ณ: ์ธ๋ถ ์๋น์ค์ฉ ํฌํธ ๋ฐ ์ด๋ํฐ ์ ์
์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ํ ํฌํธ ๋ฐ ์ด๋ํฐ์ ์ํธ ์์ฉํ๊ณ ์ ์ํ๋ ๋ฐ ํ์ํ ์ธ๋ถ ์๋น์ค๋ฅผ ์๋ณํฉ๋๋ค. AppMaster.io๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ถ ์๋น์ค์ ํต์ ํ๊ธฐ ์ํ ๋ง์ถคํ endpoints ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์ ์ง์ endpoints ์ฌ์ฉํ์ฌ ํฌํธ๋ฅผ ์ ์ํ๊ณ ๊ฐ ์ธ๋ถ ์๋น์ค์ ์ํธ ์์ฉํ๋ ๋ฐ ํ์ํ ๋ ผ๋ฆฌ๋ฅผ ์บก์ํํ๋ ์ด๋ํฐ๋ฅผ ๊ตฌํํฉ๋๋ค.
3๋จ๊ณ: ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ฐ ์ํธ ์์ฉ ์ค๊ณ
AppMaster.io์ ๋๋๊ทธ ์ค ๋๋กญ UI ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋์์ธํ์ญ์์ค. UI ๊ตฌ์ฑ ์์๊ฐ Hexagonal Architecture ์์น์ ์ค์ํ๋์ง ํ์ธํ๊ณ ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ ๋ฐ ์ธ๋ถ ์๋น์ค์ ํต์ ํ๊ธฐ ์ํด ์ ์ ํ ํฌํธ์ ์ฐ๊ฒฐํฉ๋๋ค.
4๋จ๊ณ: UI ๊ตฌ์ฑ ์์์ ๋ํ ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ
AppMaster.io๋ฅผ ์ฌ์ฉํ๋ฉด ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ ์๊ฐ์ BP ๋์์ด๋๋ฅผ ์ฌ์ฉํ์ฌ UI ๊ตฌ์ฑ ์์์ ๋น์ฆ๋์ค ๋ก์ง์ ์ ์ํ ์ ์์ต๋๋ค. Hexagonal Architecture ์์น์ ๋ฐ๋ฅด๋ฉด ํต์ฌ ๋๋ฉ์ธ ๋ ผ๋ฆฌ ๋ฐ ์ธ๋ถ ์๋น์ค์ ํจ๊ณผ์ ์ผ๋ก ํตํฉ๋๋ ์กฐ์ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ UI๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
5๋จ๊ณ: ์ ํ๋ฆฌ์ผ์ด์ ๊ฒ์ ๋ฐ ๋ฐฐํฌ
์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋๋ฉ์ธ ๋ก์ง, ํฌํธ, ์ด๋ํฐ ๋ฐ UI๊ฐ ์ค๊ณ๋๊ณ ๊ตฌํ๋๋ฉด AppMaster.io์์ "๊ฒ์" ๋ฒํผ์ ๋๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์ปดํ์ผํ๊ณ , ํ ์คํธ๋ฅผ ์คํํ๊ณ , Docker ์ปจํ ์ด๋ ์ ์์ถํ ์ ์์ต๋๋ค( ๋ฐฑ์๋๋ง ํด๋น) ํด๋ผ์ฐ๋์ ๋ฐฐํฌํฉ๋๋ค.
์ถ๊ฐ ํ
- ์ข ์์ฑ ์ฃผ์ ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ข ์์ฑ์ ๊ด๋ฆฌํ์ฌ ๋ณ๊ฒฝ ๋ฐ ํ์ฅ์ฑ์ ๋จ์ํํฉ๋๋ค.
- ํฌํธ ๋ฐ ์ด๋ํฐ๋ฅผ ์ค๊ณํ ๋ ๋ชจ๋์ฑ์ ๋ชฉํ๋ก ํ์ฌ ๊ฐ ๊ตฌ์ฑ ์์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ๋๋ก ํฉ๋๋ค.
- ๊ด์ฌ์ฌ ๋ถ๋ฆฌ, ๋ชจ๋์ฑ ๋ฐ ํด๋ฆฐ ์ํคํ ์ฒ์ ์ค์ ์ ๋ 6๊ฐํ ์ํคํ ์ฒ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ํํธ์จ์ด ๊ฐ๋ฐ์์ธ ์ฑ๋ ํ์ธ๋ฌ(Chad Fowler )๋ "๋์ด๊ฐ ๋ค์๋ก ๊ธฐ์ ๋ถ์ผ์์ ํด๊ฒฐํด์ผ ํ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ฌ๋๋ค์ด ๋ ์ด์ ์ผ์ ๋ ์ด๋ ต๊ฒ ๋ง๋ค์ง ์๋๋ก ํ๋ ๊ฒ์์ ๊นจ๋ซ๊ฒ ๋ฉ๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค. AppMaster.io๊ฐ ๋ณต์ก์ฑ์ ๋จ์ํํ๋ฏ๋ก ์ด๋ ์ฌ์ค์ ๋๋ค. ์๊ฐ์ ์ธ BP Designer, ์ง๊ด์ ์ธ UI ๋น๋ ๋ฐ ๊ฐ๋ ฅํ ํ๋ก์ ํธ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ Hexagonal Architecture์ ์์น์ ํ๋ก์ ํธ์ ์ํํ๊ฒ ์ฃผ์ ํ์ฌ ๊ฐ์ํ๋ ๊ฐ๋ฐ ์๋๋ฅผ ์ด ์ ์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
ํฌํธ ๋ฐ ์ด๋ํฐ๋ผ๊ณ ๋ ํ๋ 6๊ฐํ ์ํคํ ์ฒ๋ ์ฐ๋ ค ์ฌํญ์ ๋ถ๋ฆฌ๋ฅผ ์ด์งํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ, ์ ์์ฑ ๋ฐ ํ ์คํธ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด์ ๋๋ค.
Hexagonal Architecture๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ถ ์๋น์ค ๋ฐ UI์์ ํต์ฌ ๋๋ฉ์ธ ๋ก์ง์ ๋ถ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ๋ณด๋ค ์ ์ฐํ๊ณ ์ ์ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌ์ฑํ ์ ์์ผ๋ฏ๋ก ์ข ์์ฑ์ ๋ณ๊ฒฝํ๊ณ ๋ค๋ฅธ ๊ตฌํ ๊ฐ์ ์ ํํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
Hexagonal Architecture์ ์ฃผ์ ๊ตฌ์ฑ ์์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํธ ์์ฉ์ ๋ํ ๊ณ์ฝ์ ์ ์ํ๋ ์ธํฐํ์ด์ค ์ธ ํฌํธ ์ ํฌํธ๋ฅผ ๊ตฌํํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ๋ถ ์๋น์ค์ ์ฐ๊ฒฐํ๋ ์ด๋ํฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
Java์์ Hexagonal Architecture๋ฅผ ๊ตฌํํ๋ ค๋ฉด ํฌํธ ๋ฐ ์ด๋ํฐ๋ฅผ ์ ์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ธํ๋ผ ๊ณ์ธต์ ๋ช ํํ๊ฒ ๊ตฌ๋ถํฉ๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ํฌํธ๋ฅผ ์ ์ํ ๋ค์ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ์ด๋ํฐ ์ ๊ตฌํํ์ญ์์ค.
Hexagonal Architecture๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก์๋ ๋ชจ๋์ฑ์ ์ง์คํ๊ณ , ํต์ฌ ๋๋ฉ์ธ ๋ก์ง์ ๊นจ๋ํ๊ณ ๊ฒฉ๋ฆฌ๋ ์ํ๋ก ์ ์งํ๊ณ , ๋ช ํํ ํฌํธ ๊ณ์ฝ์ ์ ์ํ๊ณ , ์ข ์์ฑ ์ฃผ์ ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ข ์์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
Hexagonal Architecture์ ์ค์ ์ฌ๋ก์๋ ๋ ๋์ ์ ์ง ๊ด๋ฆฌ, ์ ์์ฑ ๋ฐ ์ ์ฐ์ฑ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ด ์ํคํ ์ฒ ํจํด์ ์ฑํํ ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋ง์ดํฌ๋ก ์๋น์ค ๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ํํธ์จ์ด ์์คํ ์ด ํฌํจ๋ฉ๋๋ค.
AppMaster.io ํ๋ก์ ํธ ๋ด์์ Hexagonal Architecture๋ฅผ ํตํฉํ๋ฉด ์ ์ง ๊ด๋ฆฌ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. AppMaster ์ ์๊ฐ์ BP ๋์์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋ ๋ฐ ์น ์ฑ์์ ํต์ฌ ๋๋ฉ์ธ ๋ก์ง์ ์ค๊ณํ๊ณ Hexagonal Architecture ์์น์ ๋ฐ๋ผ ์ธ๋ถ ์๋น์ค ๋ฐ UI ๊ตฌ์ฑ ์์์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.


