๋ฐฑ์๋ ๊ฐ๋ฐ ๋งฅ๋ฝ์์ ๋ฏธ๋ค์จ์ด๋ ๋ ์ด์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ์์ ์ฌ์ด์์ ์ค๊ฐ์ ์ญํ ์ ํ๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์ ๋๋ ์๋น์ค ๊ณ์ธต์ ๋งํ๋ฉฐ ํต์ , ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฅ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ๋ฏธ๋ค์จ์ด์ ์ฃผ์ ๋ชฉ์ ์ ๋ถ์ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๋ ๋์์ ์ฌ์ฌ์ฉ์ฑ, ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ๋ฐ ํ์ฅ์ฑ์ ์ด์งํ๋ ๊ฒ์ ๋๋ค. ๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ ์์๋ฅผ ๊ฒฐํฉํ๋ ๊ตฌ์กฐ์ ์ ์ฐฉ์ ์ธ ๋ฏธ๋ค์จ์ด๋ ์ํํธ์จ์ด ๋ชจ๋ ๊ฐ์ ์ํํ ์ํธ ์์ฉ์ ๋ณด์ฅํ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ์ํฌํ๋ก๋ฅผ ๊ฐ์ํํ๋ฉฐ ๋ค์ํ ํ๋ซํผ๊ณผ ํ๋ ์์ํฌ์์ ํธํ์ฑ์ ๊ฐํํฉ๋๋ค.
๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ข ์ข ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์น ์๋น์ค ๋ฐ ํ์ฌ API์ ๊ฐ์ ์๋ก ๋ค๋ฅธ ์์คํ ์ ํตํฉํฉ๋๋ค. ์ด๋ฌํ ์์คํ ๊ฐ์ ํจ๊ณผ์ ์ธ ํต์ ๋ฐ ์ํธ ์์ฉ์ ๋ฌ์ฑํ๊ธฐ ์ํด ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ ๋ณํ, ์์ฒญ ์ฒ๋ฆฌ ๋ฐ ์ค๋ฅ ๊ด๋ฆฌ์ ๊ฐ์ ๋ค์ํ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ ์์ ์ ์ด๊ณ ํจ์จ์ ์ด๋ฉฐ ์ ์ฐํ ๊ณ์ธต์ ํตํฉํด์ผ ํฉ๋๋ค. ๋ฏธ๋ค์จ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ์์๋ฅผ ์ฐ๊ฒฐํ๊ณ ๊ฐ๋ฐ์์๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋ํ ์ถ์ํ๋ ๋ชจ๋์ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ ์ด ํ์ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค.
๋ฏธ๋ค์จ์ด๋ MOM(๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด), ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฏธ๋ค์จ์ด, ORB(๊ฐ์ฒด ์์ฒญ ๋ธ๋ก์ปค), ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ ๋ฐ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํตํฉ ํ๋ซํผ์ ๋น๋กฏํ ๋ค์ํ ๊ธฐ์ ๊ณผ ์๋น์ค๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฏธ๋ค์จ์ด ๊ธฐ์ ์ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ฐ๊ฒฐ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ๊ณ ์ ํ ๋ฐฑ์๋ ๊ฐ๋ฐ ์๊ตฌ ์ฌํญ์ ๋ง๋ ๋ง์ถคํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ๋ฏธ๋ค์จ์ด ์๋ฃจ์ ์ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ฝ๋๋ฒ ์ด์ค์ ์ค๋ณต์ ์ต์ํํ๊ณ ๊ฐ๋ฐ ์ผ์ ์ ๋จ์ถํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
AppMaster ์ ๊ฐ๋ ฅํ ์ฝ๋ ์๋ ํ๋ซํผ์ ํตํด ๊ณ ๊ฐ์ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ๋ก์ง, REST API ๋ฐ WebSocket endpoints ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋์์ธํ์ฌ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๊ณ ๊ธ ์ํคํ ์ฒ๋ ๋ฏธ๋ค์จ์ด ๊ธฐ์ ์ ์ง๋ฅ์ ์ธ ์ฌ์ฉ์ ์์กดํ์ฌ ์ฌ์ฉ์๊ฐ ๋ค์ํ ์๋น์ค ๋ฐ ํ๋ซํผ๊ณผ ์ํํ๊ฒ ํตํฉ๋๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๊ฐ๋ ฅํ๋ฉฐ ํ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ๋์์ค๋๋ค.
AppMaster๋ ๋ฏธ๋ค์จ์ด ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ ์์ฒญ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ธ์ฆ, ๊ถํ ๋ถ์ฌ, ์บ์ฑ, ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฐ ๋น๋๊ธฐ ๋ฉ์์ง๊ณผ ๊ฐ์ ์์ ์ ๊ด๋ฆฌํฉ๋๋ค. AppMaster ํ๋ซํผ ๋ด์ ๋ฏธ๋ค์จ์ด ๊ตฌ์ฑ ์์์๋ ๋ค์์ด ํฌํจ๋์ง๋ง ์ด์ ๊ตญํ๋์ง๋ ์์ต๋๋ค.
- API ๊ฒ์ดํธ์จ์ด: API ์์ฒญ์ ๋ํ ๋จ์ผ ์ง์ ์ ์ญํ ์ ํ๋ ๋ฏธ๋ค์จ์ด ๊ตฌ์ฑ ์์๋ก, ํด๋ผ์ด์ธํธ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ถ์ํํ๋ฉด์ ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ณด์ ๋ฐ ์ ํ ๊ธฐ๋ฅ์ ํ์ฑํํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ก์ธ์ค ๋ ์ด์ด: ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๊ฐ์ ์ํํ ์ํธ ์์ฉ์ ์ด์งํ๊ณ CRUD(Create, Read, Update, Delete) ์์ , ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ํธ๋์ญ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฏธ๋ค์จ์ด ์๋น์ค ์ ํ๊ตฐ์ ๋๋ค.
- Message Queue: ์์ฉ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ ์์ ๊ฐ์ ๋น๋๊ธฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋ด๊ฒฐํจ์ฑ, ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฐ ์ํ์ ํ์ฅ์ฑ์ ์ด์งํ๋ ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด ์๋ฃจ์ ์ ๋๋ค.
๋ฏธ๋ค์จ์ด ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ AppMaster ์๋ ์ฝ๋ฉ์ด๋ ๊ด๋ฒ์ํ ๊ธฐ์ ์ ๋ฌธ ์ง์ ์์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์๊ฐ์ ์ผ๋ก ์ง๊ด์ ์ด๋ฉด์๋ ๊ฐ๋ ฅํ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ณ ๊ฐ์ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ ๋ฐ ๋ ผ๋ฆฌ๋ฅผ ์ ์ํ๋ ๋ฐ ์ง์คํ ์ ์์ผ๋ฉฐ ํ๋ซํผ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ, ๋ฉ์์ง ๋ฐ ์์คํ ํตํฉ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๊ธฐ์ ๋ณต์ก์ฑ์ ์ฒ๋ฆฌํฉ๋๋ค.
๋๊ธ ์ต๊ณ ์ ๋ฐฑ์๋ ๊ฐ๋ฐ ๊ดํ์ ๋ํ ์ฐ๋ฆฌ์ ์ฝ์์ ๋ํ ์ฆ๊ฑฐ๋ก AppMaster ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ PostgreSQL ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์์ค๋ก ์ํธ ์์ฉํ์ฌ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ฒ์, ๊ธฐ์กด ๋ฐ์ดํฐ ์ธํ๋ผ์์ ์ํํ ํตํฉ์ ๋ณด์ฅํฉ๋๋ค. ๋น์ฌ ํ๋ซํผ์ ๋ํ Go ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(Golang)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ฉฐ, ์ด๋ ์ํฐํ๋ผ์ด์ฆ ๋ฐ ๊ณ ๋ถํ ์ฌ์ฉ ์ฌ๋ก์ ํ์ํ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋ฏธ๋ค์จ์ด๋ ์ต์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ํ์์ ์ด๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก ๋ค๋ฅธ ์์คํ , ํ๋ซํผ ๋ฐ ์๋น์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํต์ ํ๊ณ ์ํธ ์์ฉํ๊ณ ๊ตํํ ์ ์๋๋ก ํฉ๋๋ค. AppMaster ๋ฏธ๋ค์จ์ด ๊ธฐ์ ์ ํ์ ํ์ฉํ์ฌ ๋ชจ๋ ๊ท๋ชจ์ ๊ธฐ์ ์ด ๊ธฐ์ ์๊ตฌ ์ฌํญ ๋ฐ ์์ฅ ๊ฐ๋ฐ๊ณผ ์กฐํ๋ฅผ ์ด๋ฃจ๋ฉฐ ๋ฐ์ ํ๊ณ ์ฑ์ฅํ ์ ์๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ ๋น์ฉ ํจ์จ์ ์ธ ์น, ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ํฉ๋๋ค.