์นด์ ์ธ๋๋ผ์๋ฆฌ,
์๋ฌด, WSO2
๊ธฐ์ ์ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง์ ๋น์ฆ๋์ค ์๊ฑด์ ์ฉ์ดํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ฐ๋ผ์, ํ๋์ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ฐฑ ๊ฐ์ง์ ๋น์ฆ๋์ค ์ญ๋์ ์ ๊ณตํ๊ณ ์ด๋ฌํ ์ญ๋๋ค์ด ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ด๊ฒ ๋ฉ๋๋ค. ์ ์ฌ์ ์์๊ด๋ฆฌ ERP, ๊ณ ๊ฐ๊ด๊ณ๊ด๋ฆฌ CRM ๋ฑ์ ์ํํธ์จ์ด ์์คํ ๋ค์ด ์ข์ ์์ ๋๋ค. ์ด๋ฌํ ์์คํ ๋ค์ ์๋ฐฑ ๊ฐ์ง ๋น์ฆ๋์ค ์ญ๋์ ๊ฐ์ถ ๋ชจ๋ ธ๋ฆฌ์ค์ ๋๋ค. ์ด๋ฌํ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ, ํธ๋ฌ๋ธ์ํ , ํ์ฅ, ์ ๊ทธ๋ ์ด๋ ํ๋ ๊ฒ์ ์ ๋ชฝ๊ณผ๋ ๊ฐ์ ์ผ์ ๋๋ค.
์๋น์ค๊ธฐ๋ฐ ์ํคํ ์ฒ SOA๋ โ์๋น์คโ ์ปจ์ ์ ๋์ ํจ์ผ๋ก์จ ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ์ผ๊ธฐ๋๋ ๋ฌธ์ ๋ฅผ ๊ทน๋ณตํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ฐ๋ผ์, ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ SOA์ ํจ๊ป ์๋น์ค์ ํผํฉ์ฒด๋ก ์ค๊ณ๋ฉ๋๋ค. SOA์ ์ปจ์ ์ ์๋น์ค ์คํ์ ๋ชจ๋ ธ๋ฆฌ์ค๋ก ์ ํํ์ง ์์ผ๋ฉฐ, ์คํ๋ ค ๊ฐ์ฅ ์ธ๊ธฐ์๋ ์น ์๋น์ค๊ฐ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ธ๋ฆฌ์ค๋ก ์คํ๋ ์ ์๋๋ก ํ๋ฉฐ, ์ด๋ ๋์ผํ ๋ฐํ์์ ์ด์๋๋ ์ฑ๊ธ๊ฒ ๊ตฌ์ฑ๋ ์น์๋น์ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ชจ๋ ธ๋ฆฌํฑ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋น์ทํ๊ฒ ์ด๋ฌํ ์๋น์ค๋ค์ ๋ค์ํ ์ญ๋์ ์ถ์ ํ์ฌ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฑ์ฅํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ด์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ๊ณง ๋ชจ๋ ธ๋ฆฌํฑ ๊ธ๋ก๋ธ๋ก ์ฑ์ฅํ๋ฉฐ, ์ด๋ ํ๋ฒํ ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ํ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
ํ 1: ๋ชจ๋ ธ๋ฆฌํฑ ์ํคํ ์ฒ
๊ทธ๋ฆผ 1์ ๋ค์ํ ์๋น์ค๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฆฌํ ์ผ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ๋ชจ๋ ์๋น์ค๋ค์ ๋์ผํ ๋ชจ๋ ธ๋ฆฌํฑ ๋ฐํ์(์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๊ฐ์) ์ผ๋ก ๋ฐฐ์น๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ๋ค์ํ ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ง์ ๋ณด์ฌ์ค๋๋ค. ๋ณต์กํ๊ณ , ๋จ์ผ ์ ๋์ผ๋ก ์ค๊ณ๋๊ณ , ๊ฐ๋ฐ๋๊ณ , ์คํ๋ฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ถ์ ์ ๋ฐ์ดํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ฏผ์ฒฉํ ๊ฐ๋ฐ ๋ฐ ์ ๋ฌ ๋ฐฉ๋ฒ์ ์คํํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
์ด๋ฌํ ์ ๊ทผ๋ฐฉ๋ฒ์ ์ฝ๊ฐ์ ๋ค๋ฅธ ๋ฌธ์ ๋ ์์ต๋๋ค. ๋ชจ๋ ธ๋ฆฌ์ค๋ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ํ์ฅ๋์ด์ผ ํ๋ฉฐ, ์ถฉ๋ํ๋ ๋ฆฌ์์ค ์๊ตฌ์ฌํญ์ ํฌํจํ์ฌ ํ์ฅ๋๊ธฐ ์ด๋ ต์ต๋๋ค. (์, ํ๋์ ์๋น์ค๋ ๋ ๋ง์ CPU๋ฅผ ์๊ตฌํ๋ ๋ฐ๋ฉด ๋ ๋ค๋ฅธ ์๋น์ค๋ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌํ ๋) ํ๋์ ๋ถ์์ ํ ์๋น์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๋ฅผ ๋ค์ด ์ํฌ ์ ์์ผ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์๋ก์ด ๊ธฐ์ ๊ณผ ํ๋ ์์ํฌ๋ฅผ ํ์ ํ๊ฑฐ๋ ๋์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์ด๋ฌํ ์ด์ ๋ค๋ก ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๊ฐ ๊ฐ๋ฐ๋์์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๋ํด์ ์์ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ MSA์ ๊ธฐ๋ณธ์ ๊ฐ๋ณ ํ๋ก์ธ์ค์ ๋ฐ๋ผ ์ด์๋๊ณ , ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ๋๊ณ ํ์ฉ๋๋ ์ผ๋จ์ ๋ ๋ฆฝ์ ์ธ ์๊ท๋ชจ ์๋น์ค๋ค์ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค.
MSA์ ๋๋ถ๋ถ์ ์ ์๋ค์ ๋ณด๋ฉด, ๋ชจ๋ ธ๋ฆฌ์ค์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋น์ค๋ค์ ์ผ๋ จ์ ๋ ๋ฆฝ๋ ์๋น์ค๋ค๋ก ๊ตฌ๋ถํ๋๋ฐ ์ด์ ์ ๋ง์ถ ์ํคํ ์ฒ์ ์ปจ์ ์ผ๋ก ์ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ชจ๋ ธ๋ฆฌ์ค์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋น์ค๋ค์ ๋ ๋ฆฝ๋ ์๋น์ค๋ค๋ก ๋จ์ํ ๋ถ๋ฅํ๋ ๊ฒ์ ๊ทธ์น์ง ์์ต๋๋ค.
๋ชจ๋ ธ๋ฆฌ์ค์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ ๋ณด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๊ตฌ๋๋ ๋น์ฆ๋์ค ์ญ๋๋ค์ ํ์ธํ ์ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ฆ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉํ๊ฒ ํ๊ธฐ ์ํด ํ์ํ ๊ฒ๋ค์ ์ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ๋น์ฆ๋์ค ์ญ๋๋ค์ ์์ ํ ๋ ๋ฆฝ์ ์ด๊ณ , ์น๋ฐํ๊ณ , ์ถฉ๋ถํ ๊ฐ์ถฐ์ง (๋ง์ดํฌ๋ก) ์๋น์ค ์ ๋๋ค. ์ด๋ฌํ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ค๋ฅธ ๊ธฐ์ ๋ค์ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๋ค๊ณ ํ ์ง๋ผ๋ ๊ฐ ์๋น์ค๋ ๋งค์ฐ ๊ตฌ์ฒด์ ์ด๊ณ ์ ํ์ ์ธ ๋น์ฆ๋์ค ์์ญ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์ ์๊ฐํ ์จ๋ผ์ธ ๋ฆฌํ ์ผ ์์คํ ์๋๋ฆฌ์ค๋ ๊ทธ๋ฆผ 2์ ๋ฌ์ฌ๋ MSA๋ก ์คํ๋ ์ ์์ต๋๋ค. ๋ณด๋ค์ํผ, ๋น์ฆ๋์ค ์๊ตฌ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก, ๊ธฐ์กด์ ๋ชจ๋ ธ๋ฆฌ์ค์ ์กด์ฌํ๋ ์ค๋ฆฌ์ง๋ ์๋น์ค๋ค์ ์ถ๊ฐ๋ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ ๋จ์ํ ์๋น์ค๋ฅผ ๋์ฑ ๋ณต์กํ ๊ทธ๋ผ์ด๋์์ ๋ถ๋ฅํ๋ ๊ฒ ์ด์์์ด ๋ช ๋ฐฑํฉ๋๋ค.
ํ 2: ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ
๋ง์ดํฌ๋ก์๋น์ค์ ์ฃผ์ ์ํคํ ์ฒ ์๋ฆฌ๋ฅผ ์์๋ณด๊ณ , ์ค์ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ค์ ์ ์ผ๋ก ์์๋ณด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ผ ํ๋ฉด ๋ค์์ ๋ ์ค ํ๊ฐ์ง๋ฅผ ํด๋น๋ฉ๋๋ค. ์์ ๋ง์ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ์ด๋ถํฐ ๊ตฌ์ถ ํ๋์ง, ๊ธฐ์กด์ ์ ํ๋ฆฌ์ผ์ด์ /์๋น์ค๋ฅผ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ชฝ์ด๋ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค์ ๊ท๋ชจ, ๋ฒ์, ์ญ๋์ ์ ์ ํ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. MSA๋ฅผ ์ค์ ์คํํ ๋ ๊ฐ์ฅ ๋จผ์ ๋ถ๋ชํ๊ฒ ๋ ๊ฐ์ฅ ์ด๋ ค์ด ์ผ์ ๋๋ค.
์ด์ ๊ด๋ จํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์คํ ์์ ์ฐ๋ ค ๋ฐ ์คํด๊ฐ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด MSA์์ ์๋น์ค๋ฅผ ์ด๋ป๊ฒ ์ ์ ํ๊ฒ ์ค๊ณํด์ผ ํ ๊น์?
๋ฆฌํ ์ผ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณด์๋ฉด, ๋ชจ๋ ธ๋ฆฌ์ค์ ๊ธฐ๋ฅ์ 4๊ฐ์ ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค ์ธ โ์ธ๋ฒคํ ๋ฆฌโ, โ์ด์นด์ดํ โ, โ๋ฐฐ์กโ, โ์คํ ์ดโ๋ก ๊ตฌ๋ถํ ๊ฒ์ ๋ณด์ค ์ ์์ต๋๋ค. ์ ํ์ ์ด์ง๋ง ์ง์ค๋ ๋น์ฆ๋์ค ์์ญ์ผ๋ก ๊ตฌ์ฑ๋์ด, ๊ฐ์ ์์ ํ ๋ ๋ฆฝ๋์ด ์๊ณ , ๊ฐ๋ฐ๊ณผ ์คํ์ ์์ด ๋ฏผ์ฒฉ์ฑ์ด ์์ต๋๋ค.
๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋ก์ธ์/๊ตฌ์ฑ์์์ ๋น์ฆ๋์ค ์ญ๋์ ํจ์ ํธ์ถ ํน์ ์ธ์ด ์์ค์ ๋ฉ์๋ ํธ์ถ์ ์ฌ์ฉํ์ฌ ํธ์ถํฉ๋๋ค. SOA์์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ํจ์ฌ ๋ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋ ์น ์๋น์ค ์์ค์ ๋ฉ์์ง ๊ธฐ๋ฅ์ผ๋ก ์ด์ ๋์๊ณ , HTTP์ JMS์ ๊ฐ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋กํ ์ฝ ์์ SOAP์ ์ฃผ๋ก ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค.
MSA์์ ๋๊ธฐํ๋ ๋ฉ์์ง ์ ์ก ๊ธฐ๋ฅ์ (ํด๋ผ์ด์ธํธ๋ ์๋น์ค๋ก๋ถํฐ ์ ์ํ ์๋ต์ ๊ธฐ๋ํ๊ณ , ๊ธฐ๋ค๋ฆฝ๋๋ค.) ๋ฆฌ์์ค์ ๊ธฐ๋ฐํ HTTP ๋ฆฌํ์คํธ(์์ฒญ)-๋ฆฌ์คํฐ์ค(์๋ต)๋ก ๋จ์ ๋ฉ์์ง ์ ์ก ์คํ์ผ๋ก ์คํ๋จ์ ์ฆ๋ช ํREST (Representation State Transfer)๋ฅผ ๋ง์ฅ์ผ์น๋ก ์ฌ์ฉํฉ๋๋ค.
ํ 3: ๋ง์ดํฌ๋ก์๋น์ค ๋ ธ์ถ์ ์ํ REST ์ธํฐํ์ด์ค ์ฌ์ฉ
gRPC ์ญ์ RESTful ์๋น์ค์ ๋์์ฑ ์ด์ ์ธํฐ-ํ๋ก์ธ์ค ์ปค๋ฎค๋์ผ์ด์ ๊ธฐ์ ๋ก ๊ฝค ์ธ๊ธฐ๊ฐ ๋ง์์ก์ต๋๋ค. ๋ก์ปฌ ํจ์ ํธ์ถ์ ํ๋ ๊ฒ๋งํผ ์ฝ๊ฒ ๋ถ์ฐ๋ ์ด์ข ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐ, ํธ์ถ, ์ด์, ๋๋ฒ๊ทธ ํ ์ ์๋๋ก ํด ์ค๋๋ค. REST์๋ ๋ฌ๋ฆฌ, ์ธํฐํ์ด์ค ์ ์ ์ธ์ด (Interface Definition Language, IDL)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก gRPC์ ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ฝ๋ฅผ ์์ ํ ์ ์ํ ์ ์์ผ๋ฉฐ, ์ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด (Go, Java, Node ๋ฑ)๋ฅผ ์ํ ์๋น์ค ๋ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
GraphQL ์ญ์ ๊ณ ์ ์ ์ธ ์๋น์ค ๊ณ์ฝ์ ๊ฐ์ง ์ ์๋ ๊ฒฝ์ฐ์ ๊ฝค ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. GraphQL์ API๋ฅผ ์ํ ์ง์ ์ธ์ด์ด์, ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ก ์ง์์ ๋ตํ๊ธฐ ์ํ ๋ฌ๋ ํ์์ ๋๋ค. ์ผ๋ฐ์ ์ธ ํด๋ผ์ด์ธํธ-์๋ฒ ์ปค๋ฎค๋์ผ์ด์ ๊ณผ๋ ๋ค๋ฅด๋ฉฐ, ๊ธฐ์ด ์์ค์์๋ถํฐ ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐ์ ํ๊ณ , ์ด๋ ํ ๋ฐฉ์์ผ๋ก, ์ด๋ ํ ํ์์ผ๋ก ์ ์๋ ์ง ๊ฒฐ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
Thrift (์ฐ๋ฆฌํํธ) ๋ REST/HTTP ๋๊ธฐํ ๋ฉ์์ง ๊ธฐ๋ฅ์ ๋์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. (๋ง์ดํฌ๋ก์๋น์ค์ ์ธํฐํ์ด์ค ์ ์๋ฅผ ์ ์ํ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋ฉ๋๋ค.)
๋๊ธฐํ ์์ฒญ-์๋ต ์คํ์ผ ๋ฉ์์ง๊ฐ ๋๋ถ๋ถ ์ธํฐ๋ ํฐ๋ธํ๊ณ ์ธํฅ์ API์ ๊ฐ์ด ๋ฆฌ์ผ ํ์ ํ๋ก์ธ์ฑ์ ์ํ๋ ์๋น์ค ๋ฐ ํด๋ผ์ด์ธํธ์ ๋์ฑ ์ ํฉํฉ๋๋ค.
์๋น์ค ๊ฐ ๋ฉ์์ง ๊ธฐ๋ฅ์ ์ด๋ฒคํธ ์ฃผ๋ ๋ฉ์์ง ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋น๋๊ธฐํ ๋ฉ์์ง ๊ธฐ๋ฅ์ ์ฆ๊ฐ์ ์ธ ์๋ต์ ๊ธฐ๋ํ์ง ์๊ฑฐ๋, ์์ ์๋ต์ ๊ธฐ๋ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์๋๋ฆฌ์ค๋ฅผ ์ํด ๋ง์ดํฌ๋ก์๋น์ค๋ NATS, Kafka, AMQP, STOMP, MQTT์ ๊ฐ์ ๋ฉ์์ง ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฉ์์ง ํ๋กํ ์ฝ๊ณผ๋ ๋ฌ๋ฆฌ, Kafka์ NATS๋ ๋จ์ํ๊ณ (dumb) ๋ถ์ฐ๋ ๋ฉ์์ง ์ธํ๋ผ๋ฅผ ์ ๊ณตํ๋๋ฐ ์ด๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์ถ์ ๋์ฑ ์ ํฉํฉ๋๋ค. ๋ฐ๋ผ์ ์์ฐ์์ ์๋น์๋ ๋ชจ๋ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ์ง์ง๋ง, ๋ธ๋ก์ปค๋ ์๋ฌด๋ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ์ง์ง ์๊ฒ ๋ฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค์ ๊ฐ์ฅ ์ ํฉํ ๋ฉ์์ง ํฌ๋งท์ ์ ํ๋ ์ผ๋ ๋ ๋ค๋ฅธ ์ค์ ์์์ ๋๋ค. ์ ํต์ ์ธ ๋ฐฉ์์ ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์กํ ์ด์ง์ ํฌ๋งท์ ์ฌ์ฉํ๋ ๋ฐ๋ฉด, SOA โ ๊ทธ๋ฆฌ๊ณ ์น๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์กํ ๋ฉ์์ง ํฌ๋งท (SOAP) ๋ฐ ์คํค๋ง (XSD)๋ฅผ ๊ธฐ๋ฐํ ํ ์คํธ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋๋ถ๋ถ์ ๋ง์ดํฌ๋ก์๋น์ค๋ HTTP REST API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ JSON, XML๊ณผ ๊ฐ์ด ๋จ์ํ ํ ์คํธ ๊ธฐ๋ฐ ๋ฉ์์ง ํฌ๋งท์ ์ฌ์ฉํฉ๋๋ค. ์ด์ง์ ๋ฉ์์ง ํฌ๋งท์ด ํ์ํ ๊ฒฝ์ฐ (ํ ์คํธ ๋ฉ์์ง๊ฐ ์ฅํฉํ ๊ฒฝ์ฐ), ๋ง์ดํฌ๋ก์๋น์ค๋ ์ด์ง์ ์ฐ๋ฆฌํํธ, ProtoBuf ํน์ Avro์ ๊ฐ์ ์ด์ง์ ๋ฉ์์ง ํฌ๋งท์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋น์ฆ๋์ค ์ญ๋์ ์๋น์ค๋ก ์คํํ๋ ๊ฒฝ์ฐ, ์๋น์ค ๊ณ์ฝ์ ์ ์ํ๊ณ ๋ฐํํ ํ์๊ฐ ์์ต๋๋ค. ์ ํต์ ์ธ ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฐ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ์ญ๋์ ์ ์ํ๋ ๊ธฐ๋ฅ์ ๊ฑฐ์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค. SOA/์น ์๋น์ค ์ธ์์์๋ WSDL์ ์๋น์ค ๊ณ์ฝ์ ์ ์ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ WSDL์ REST๋ฅผ ์ผ๋ฑ์๋ฏผ์ผ๋ก ์ทจ๊ธํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ณ์ฝ ์ ์๋ฅผ ์ํ ์ด์์ ์ธ ์๋ฃจ์ ์ ์๋๋๋ค.
REST ์ํคํ ์ฒ ์คํ์ผ ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ๋๋ฌธ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ณ์ฝ์ ์ ์ํ๊ธฐ ์ํด์ ๋์ผํ REST API ์ ์ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ง์ดํฌ๋ก์๋น์ค๋ ์๋น์ค ๊ณ์ฝ์ ์ ์ํ๊ธฐ ์ํด ์ค์จ๊ฑฐ๋ RAML๊ณผ ๊ฐ์ ํ์ค REST API ์ ์ ์ธ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
HTTP/REST์ ๊ธฐ๋ฐํ์ง ์๋ ๋ง์ดํฌ๋ก์๋น์ค์ ์คํ์ ์ํด ์๋ฅผ ๋ค์ด, gRPC ๋ฐ ์ฐ๋ฆฌํํธ์ ์คํ์ ์ํด ํ๋กํ ์ฝ ๋ ๋ฒจ IDL์ ์ฌ์ฉํ ์ ์์ต๋๋ค. GraphQL์ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๊ฐ GraphQL-๊ธฐ๋ฐ API๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉ๋ ์ ์๋ GraphQL์คํค๋ง๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ์คํค๋ง๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
๋ชจ๋ ธ๋ฆฌํฑ ์ํคํ ์ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์ญ๋์ ์คํํ๊ธฐ ์ํด ๋จ์ผ ์ค์ฌ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
ํ 4: ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์คํํ๊ธฐ ์ํด ์ง์คํ ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
MSA์์ ๋น์ฆ๋์ค ์ญ๋๋ค์ ๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ถ์ฐ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ์ง์คํ ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์๋น์ค ๊ฐ ๋์จํ ์ปคํ๋ง์ ๋ณด์ฅํ๊ธฐ ์ด๋ ต์ต๋๋ค. (์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์คํค๋ง๊ฐ ํ ๋ง์ดํฌ๋ก์๋น์ค์์ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์๋น์ค๋ค์ด ๊ณ ์ฅ ๋ ์ ์์ต๋๋ค. ) ๋ฐ๋ผ์ ๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๋ ์์ ๋ง์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋ณด์ ํด์ผ ํฉ๋๋ค.
ํ 5: ๋ง์ดํฌ๋ก์๋น์ค๋ ์์ ์ ์ ์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณด์ ํ๊ณ , ํ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ณด์ ํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
MSA์์ ๋ถ์ฐ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ์ ์์ด์ ์ค์ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ถ์ฐ๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ํตํด ์์ ํ ๋ถ์ฐ๋ถ๋ฆฌ๋(Decoupled)๋ ๋ง์ดํฌ๋ก์๋น์ค์ ๊ตฌ์ถ ๋ฐ ์ด์ง์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๊ธฐ์ ์ ์ ํ์ด ์์ ๋กญ๋๋ก ํฉ๋๋ค. (SQL ํน์ NoSQL ๋ฐ ๊ฐ ์๋น์ค๋ฅผ ์ํ ์์ดํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ). ๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค์ ๊ฑธ์ณ ๋๊ธฐํ๋ ๋ฉ์์ง ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ, ๋ค์์ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ํ๋์ ์๋น์คAPI๋ฅผ ํตํด ์๊ตฌ๋๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ ๋ฐ์ดํธ ํ๊ธฐ ์ํด ํด๋น ์๋น์ค๊ฐ ๋ค์์ ์๋น์ค๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ ์๋น์ค ๊ตฌ์ฑ์ ๊ตฌ์ถํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๋ํ ๊ฐ๊ธฐ ๋ค๋ฅธ ์๋น์ค๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ , ๋ฐ์ดํฐ์ ๋ค์ํ ์ค์ฒด๋ฅผ ํ์ฑํ๊ธฐ ์ํด ์๋น์ค ๊ฐ ์ด๋ฒคํธ-๊ธฐ๋ฐ ๋ฉ์์ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค์์ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๊ด๋ จ CQRS (Command Query Responsibility Segregation)์ ๊ฐ์ ๊ด๋ จ ํจํด๋ค์ด ์์ต๋๋ค. ๋ณธ ์ ์์์ ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ์ดํฐ ๊ด๋ฆฌ ๊ธฐ์ ๋ฐ ํจํด์ ๋ํ ๋์ฑ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ค ์ ์์ต๋๋ค.
IT ๋ฌธ๋งฅ์์ โ๊ฑฐ๋ฒ๋์คโ๋ ๊ธฐ์ ์ด ๊ธฐ์ ์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด IT๋ฅผ ํจ๊ณผ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๋๋ก ํ๋ ํ๋ก์ธ์ค๋ก ์ ์๋ฉ๋๋ค. SOA ๊ฑฐ๋ฒ๋์ค๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋น์ค์ ๊ฐ๋ฐ์ ๋ํ ๊ฐ์ด๋๋ผ์ธ์ ์ ์ํ๊ณ , ์๋น์ค๊ฐ ์ด๋ป๊ฒ ์ค๊ณ๋๊ณ ๊ฐ๋ฐ๋์ด์ผ ํ๋์ง, ์ด๋ฌํ ์๋น์ค๋ค์ด ์๊ฐ์ด ๊ฒฝ๊ณผํจ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋๋์ง ๋ณด์ฌ์ค๋๋ค. ์๋น์ค ์ ๊ณต์์ ์ฌ์ฉ์ ์ฌ์ด์ ํฉ์๋ฅผ ๋์ถํ๊ณ , ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ ์ ์๋ ๋ฐ์ ์ ๊ณต์๋ค์ด ์ ๊ณตํ ์๋ฌด๊ฐ ์๋ ๊ฒ๋ค์ ๋ํด์ ์๋ ค ์ค๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ ์ข ๋ฅ์ SOA ๊ฑฐ๋ฒ๋์ค๊ฐ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ง์ดํฌ๋ก์๋น์ค ๋ฌธ๋งฅ์์ ๊ฑฐ๋ฒ๋์ค๊ฐ ์๋ฏธํ๋ ๋ฐ๋ ๋ฌด์์ผ๊น์? ๋ง์ดํฌ๋ก์๋น์ค ๊ฑฐ๋ฒ๋์ค๋ฅผ ์์ ํ ๋ถ์ฐ๋ ํ๋ก์ธ์ค๋ก ํฌ์ง์ ๋ํ๋ ๊ฒ์ ๋ํ ๋ ผ์๊ฐ ์์ง๋ง, ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ์ฌ๋ฌ ๋ฉด์ ์์ธํ ๋ค์ฌ๋ค๋ณด๋ฉด, ๋ง์ดํฌ๋ก์๋น์ค ๊ฑฐ๋ฒ๋์ค์๋ ์ง์คํ ๋ ๋ฉด๊ณผ ๋ถ์ฐํ ๋ ๋ฉด์ด ๋ชจ๋ ์กด์ฌํ๋ค๋ ์ฌ์ค์ด ๋ถ๋ช ํด ์ง๋๋ค. MSA์์๋ ๊ฑฐ๋ฒ๋์ค์ ๋ค์ํ ๋ฉด์ ๋ณผ ์ ์์ต๋๋ค:
๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ์ ๊ด๋ จํ์ฌ, ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ค์ํ ๊ธฐ์ ๊ณผ ํ๋ซํผ์ ๊ฐ์ง ์์ ํ ๋ ๋ฆฝ๋๊ณ ๋ถ๋ฆฌ๋ ์๋น์ค๋ก ๊ตฌ์ถ๋ฉ๋๋ค. ๋ฐ๋ผ์, ์๋น์ค์ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ์ ์ํ ๊ณตํต๋ ๊ธฐ์ค์ ์ ์ํ ํ์๊ฐ ์์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค์ ๋ถ์ฐํ ๋ ๊ฑฐ๋ฒ๋์ค ์ญ๋์ ๋ค์๊ณผ ๊ฐ์ด ์์ฝํ ์ ์์ต๋๋ค.
์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ๋์ค์ปค๋ฒ๋ฆฌ๋ ๋ค์ ์ค์ํ ๋ ํ๋ก์ธ์ค๋ก์จ, ์ค์ ์ ์ฅ์์ ์๋น์ค ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค. ๋น์ทํ๊ฒ๋, ๊ด์ธก๊ฐ๋ฅ์ฑ ์ญ์ ์ค์ํ ๋ ํ๋ก์ธ์ค๋ก์จ ์๋น์ค ๋งคํธ๋ฆญ์ค๋ฅผ ๋ฐํํ ์ ์๊ณ , ์๋น์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ค์ํ ๋ ๋ชจ๋๋ก ์ด์๋๋ ๋๊ตฌ์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ณ ์ถ์ ํฉ๋๋ค. ๊ด๋ฆฌ ์๋น์ค ํน์ ๊ด๋ฆฌ API๋ก ๋ ธ์ถํ๋ ๊ฒฝ์ฐ, ์ ํ๋ ์ผ๋จ์ ์๋น์ค๋ค์ API ๊ด๋ฆฌ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. API ๊ด๋ฆฌ๊ธฐ๋ฅ ์ญ์ MSA์ ์ค์ํ ๋ ๊ตฌ์ฑ์์๋ก์จ ์คํ๋ฉ๋๋ค. ๋ค์ ๋ถ๋ถ์์๋ ๊ฑฐ๋ฒ๋์ค์ ๋ชจ๋ ๋ฉด์ ๋ํด์ ์์ธํ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.
MSA์์ ๋ค๋ฃจ์ด์ผ ํ ๋ง์ดํฌ๋ก์๋น์ค์ ์๋ ๊ฝค ๋ง์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค์ ์ฑ๊ฒฉ์ ๊ฐ๋ฐ ๋ฐ ์คํ์ด ๋งค์ฐ ๋น ๋ฅด๊ณ ๋ฏผ์ฒฉํ๊ฒ ์ด๋ฃจ์ด ์ง๋ฏ๋ก, ๋ก์ผ์ด์ ์ด ๋งค์ฐ ์ญ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ฐ๋ผ์, ๋ฐํ์ ๋์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ก์ผ์ด์ ์ ์ฐพ์์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ธ์คํด์ค๋ค์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํฉ๋๋ค. (์ด๋ ์ค์ ๋ก์ผ์ด์ , ํธ์คํธ ํฌํธ ๋ฑ์ ํฌํจํฉ๋๋ค.) ๋ง์ดํฌ๋ก์๋น์ค์ ์ธ์คํด์ค๋ค์ ์คํํธ์ ์ ๋ฑ๋ก๋๋ฉฐ, ์ ง ๋ค์ด ์ ๋ฑ๋ก ํด์ ๋ฉ๋๋ค. ์ฌ์ฉ์๋ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ง์ดํฌ๋ก์๋น์ค์ ์ด๋ฌํ ์๋น์ค๋ค์ ๋ก์ผ์ด์ ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ง์ดํฌ๋ก์๋น์ค์ ํด๋น ์๋น์ค์ ๋ก์ผ์ด์ ์ ํ์ธํ๊ธฐ ์ํด ์๋น์ค ๊ฒ์ ๋ฉ์ปค๋์ฆ์ ๋ณด์ ํ ํ์๊ฐ ์์ต๋๋ค. ๋ ๊ฐ์ง์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ์ ์๋ฒ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ์ ๋๋ค. ์ด ๋๊ฐ์ง ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ๋ํด์ ๋์ฑ ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค:
์ด์ ๊ฐ์ ์ ๊ทผ ๋ฐฉ๋ฒ์์, ํด๋ผ์ด์ธํธ ํน์ API ๊ฒ์ดํธ์จ์ด๋ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ์์ฒญํ์ฌ ์๋น์ค ์ธ์คํด์ค์ ๋ก์ผ์ด์ ์ ํ๋ณดํฉ๋๋ค.
ํ 6: ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ
ํด๋ผ์ด์ธํธ ํน์ API ๊ฒ์ดํธ์จ์ด๋ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ ๊ตฌ์ฑ์์๋ฅผ ํธ์ถํจ์ผ๋ก์จ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋ก์ง์ ์คํํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์ ๊ทผ๋ฐฉ๋ฒ์์ ํด๋ผ์ด์ธํธ ํน์ API ๊ฒ์ดํธ์จ์ด๋ ์ ์๋ ค์ง ๋ก์ผ์ด์ ์์ ์ด์๋๋ ๊ตฌ์ฑ์์(๋ก๋ ๋ฐธ๋ฐ์)์ ์์ฒญ์ ๋ณด๋ ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ์์๋ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํธ์ถํ๊ณ , ์์ฒญํ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ก์ผ์ด์ ์ ํ์ธํฉ๋๋ค.
ํ 7: ์๋ฒ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ
๋ง์ดํฌ๋ก์๋น์ค๋ ์๋ฒ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ ์ ์ํดKubernetes ์ ๊ฐ์ ์คํ ์๋ฃจ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Kubernetes๋ ๋นํธ-์ธ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ๋์ค์ปค๋ฒ๋ฆฌ ์ญ๋์ ์ ๊ณต ํ๋ฉฐ, ๋ ผ๋ฆฌ๋ช ์ ์ฌ์ฉํด ์๋น์ค๋ฅผ ํธ์ถํ ์ ์๋๋ก ํ๋ฉฐ, Kubernetes๋ ๋ ผ๋ฆฌ๋ช ์ ์ค์ IP์ ํฌํธ๋ก ํ์ด์ค๋๋ค.
MSA์ ์์ด์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ฐฐํฌ๋ ์ค์ํ ์ญํ ์ ํ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ์ค์ํ ์๊ฑด์ ํ์๋ก ํฉ๋๋ค:
๋์ปค (Docker, ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ๊ฐ๋ฐ์ ๋ฐ ์์คํ ์ด๋๋ฏผ์ด ์๋ฆฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ ์ ์๋ ์คํ์์ค ์์ง)๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ฐฐํฌํ ์ ์๋ ํ๋ฅญํ ๋ฐฉ์์ ์ ๊ณตํ๋ ํํธ ์์ ์๊ฑด์ ์ถฉ์กฑํฉ๋๋ค. ์ด์ ๊ด๋ จ๋ ์ค์ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Kubernetes ๋ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋ ํด๋ฌ์คํฐ๋ฅผ ๋จ์ผ ์์คํ ์ผ๋ก ๊ด๋ฆฌ ์ฉ์ดํ๊ฒ ํจ์ผ๋ก์จ ๋์ปค์ ์ญ๋์ ํ์ฅ ์์ผ์ฃผ๋ฉฐ, ์ด์ ๋๋ถ์ด, ๋ค์์ ํธ์คํธ์์ ๋์ปค ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌ ๋ฐ ์ด์ฉํ๊ณ , ์ปจํ ์ด๋์ ๊ณต๋ ๋ก์ผ์ด์ , ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ, ์ฌ์๊ด๋ฆฌ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด์ ๊ฐ์ด ๋๋ถ๋ถ์ ๊ธฐ๋ฅ๋ค์ด ๋ง์ดํฌ๋ก์๋น์ค ๋งฅ๋ฝ์์๋ ์ค์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ๋ฅผ ์ํด Kubernetes (๋์ปค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ) ํ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋ ฅํ ์ ๊ทผ๋ฒ์ด๊ณ , ํนํ ๋๊ท๋ชจ ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ์ ์์ด์ ๊ฐ๋ ฅํฉ๋๋ค.
ํ 8: ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ปจํ ์ด๋๋ก์จ ๊ตฌ์ถํ๊ณ ๋ฐฐํฌํ๊ธฐ
ํ 8์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ฆฌํ ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ป๊ฒ ๋ฐฐํฌ๋๋์ง ๋ณด์ฌ์ค๋๋ค. ๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค ์ธ์คํด์ค๋ ์ปจํ ์ด๋๋ก ๋ฐฐํฌ๋๋ฉฐ, ํธ์คํธ๋น ๋ ๊ฐ์ ์ปจํ ์ด๋๊ฐ ๋ฐฐํฌ๋ฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค์ ๋ณด์์ ์ค์ ์ํฉ์์ ์ฌ์ฉ์ ๊ณตํต์ ์ผ๋ก ์๊ตฌ๋๋ ์๊ฑด์ ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ๋ณด์์ ๋ํด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์๋ณด๊ธฐ ์ ์ ๋ชจ๋ ธ๋ฆฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์์ ๋ณดํต ์ด๋ป๊ฒ ๋ณด์์ ์คํํ๋์ง ๊ฐ๋ตํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ์ด๋ฌํ ํจํด์ MSA๋ก ์ง์ ํด์ํ ์ ์์๊น์? ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์๊ตฌ๋๋ ์ ๋ณด๋ฅผ ํ์ํ๊ธฐ ์ํด ์ค์ํ ๋๊ณ / ๊ณต์ ๋ ์ฌ์ฉ์ ์ ์ฅ์์ ์์ฌ ์ํตํ ์ ์๋ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค ์์ค์์ ์คํ๋๋ ๋ณด์ ๊ตฌ์ฑ์์๊ฐ ์๊ตฌ๋ฉ๋๋ค. ์ด๋ ์ด์ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋งค์ฐ ๋ฐ๋ถํ ์ ๊ทผ๋ฒ์ ๋๋ค.
๋์ ์ ๋ ๋์ ์๋ฃจ์ ์ ์ฐพ๊ธฐ ์ํด์ OAuth 2.0 ๋ฐ OpenID Connect (OIDC)์ ๊ฐ์ ๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ API-๋ณด์ ํ์ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ ๋ํด์ ๋์ฑ ์์ธํ ์์๋ณด๊ธฐ ์ด์ ์ ๊ฐ ํ์ค์ ๋ชฉ์ ์ ๋ํด์ ์์ฝํด ๋ณด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง ์ฌ์ฉ๋ฒ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด์ , ๋ฆฌํ ์ผ ์ํฉ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํ์ฉํ๊ธฐ ์ํด ์ด๋ฌํ ํ์ค๋ค์ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
ํ 9: OAuth 2.0๊ณผ OpenID Connect๋ฅผ ํตํ ๋ง์ดํฌ๋ก์๋น์ค ๋ณด์
ํ 9์์ ๋ณผ ์ ์๋ฏ์ด ๋ง์ดํฌ๋ก์๋น์ค ๋ณด์์ ์คํํ๊ธฐ ์ํด์๋ ๋ค์์ ์ฃผ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
๋ชจ๋ ธ๋ฆฌํฑ ์ค๊ณ์ ๋น๊ตํด ๋ณผ ๋ MSA๋ ๋ถ์ฐ๋ ์๋น์ค๋ฅผ ๋์ ํ๊ธฐ ๋๋ฌธ์, ๊ฐ ์๋น์ค ์์ค์์ ์ฅ์ ๋ฐ์ ํ๋ฅ ์ด ์ฆ๊ฐํฉ๋๋ค. ์ฌ์ค ์ด๋ฌํ ๊ธฐ์ ๋ค์ MSA์ ํจ๊ป ๋ฐ๋ช ๋ ๊ฒ์ด ์๋๋ฉฐ, ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ณต๊ฐ์ ์ค๋ ๋์ ์กด์ฌํด ์์ต๋๋ค. (MSA๋ ์ด๋ฌํ ์ปจ์ ์ ์ค์์ฑ ๋ง์ ๊ฐ์กฐํ ๋ฟ์ ๋๋ค. )์
ํ๋์ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋คํธ์ํฌ์ ๋ฌธ์ ํน์ ๊ฐ์ฉํ ๊ธฐ๋ณธ ๋ฆฌ์์ค๊ฐ ์์ด ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฌ์ฉ ๋ถ๊ฐํ ํน์ ์๋ต ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๋ฅผ ๋ค์ด ์์ผ์๋ ์๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ง์ดํฌ๋ก์๋น์ค๋ ์ฅ์ ํ์ฉ์ฑ์ ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํ๋ณตํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ํ ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ์ ์ ํ๊ฒ ํด๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ํ ์๋น์ค๋ ์ธ์ ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ์ฅ์ ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ง (์ค์๊ฐ ๋ชจ๋ํฐ๋ง)ํ ์ ์๋ ๊ฒ์ด ์ค์ํ๊ณ , ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์๋ ๋ณต์ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ๋งฅ๋ฝ์์ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ค์ํ ํจํด๋ค์ด ์์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค์ ์ธ๋ถ ํธ์ถ์ ํ๋ ๊ฒฝ์ฐ, ๊ฐ ํธ์ถ์ ์ฅ์ ๋ชจ๋ํฐ ์ปดํฌ๋ํธ๋ฅผ ์ค์ ํฉ๋๋ค. ์ฅ์ ๊ฐ ํน์ ๋ถ๊ธฐ์ ์ ๋๋ฌํ๊ฒ ๋๋ฉด, ํด๋น ์ปดํฌ๋ํธ๋ ์๋น์ค์ ์ถ๊ฐ ํธ์ถ์ ์ ์งํฉ๋๋ค. (์ํท ํธ๋ฆฝ). ์คํ ์คํ ์ดํธ์์ ์ผ์ ์์ค์ ์์ฒญ ์๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ (ํ๊ฒฝ์ ์ค์ ํ ์ ์์ต๋๋ค), ์ํท์ ๋ค์ ํด๋ก์ฆ ์คํ ์ดํธ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์ด ํจํด์ ๋ถํ์ํ ๋ฆฌ์์ค ์ฌ์ฉ์ ํผํ๊ณ , ํ์์์์ผ๋ก ์ธํ ๋๋ ์ด ์์ฒญ์ ํ๋๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋ํ ์์คํ ๋ชจ๋ํฐ๋ง ๋ฅ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. (์กํฐ๋ธ ์คํ ์ํท ์คํ ์ดํธ ๊ธฐ๋ฐ)
๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ฑํ๋ค๋ ๊ฐ์ ํ์, ๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ถ ์ฅ์ ๊ฐ ๋๋จธ์ง ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํฉ๋๋ค. ๋ฒํฌ ํค๋ ํจํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ๊ณ ๋ฆฝ์ํค๋ ๊ฒ์ผ๋ก์จ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ๋ถ๋ถ์ ์๋น์ค ์ฅ์ ๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
ํ์์์ ํจํด์ ๋ง์ดํฌ๋ก์๋น์ค๋ก๋ถํฐ์ ์๋ต์ด ์ค์ง ์์ ๊ฒ์ผ๋ก ์์๋ ๋ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์ค์งํ๋๋ก ํฉ๋๋ค. ์ฌ๊ธฐ์ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํ๋ ๋งํผ์ ์๊ฐ ๊ฐ๊ฒฉ์ ์ค์ ํ ์ ์์ต๋๋ค.
์์ ๋ ผ์ํ ํจํด์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋๋ถ๋ถ์ ํจํด๋ค์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์. Hystrix)์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ๋ฐํ๋ ์๋น์ค์์ ์ด๋ฌํ ํจํด์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
MSA์์ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋จ์ ๋ ๋ฆฝ๋ ์๋น์ค๋ก์จ ๊ตฌ์ถ๋ฉ๋๋ค. ๋ฐ๋ผ์, ๋น์ฆ๋์ค ํ์ฉ ์ฌ๋ก๋ฅผ ์คํํ๊ธฐ ์ํด, ๋ค์ํ ๋ง์ดํฌ๋ก์๋น์ค/ํ๋ก์ธ์ค ๊ฐ ์ปค๋ฎค๋์ผ์ด์ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์, ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ์ธํฐ-์๋น์ค/ํ๋ก์ธ์ค ์ปค๋ฎค๋์ผ์ด์ ์ด ์ค์ํฉ๋๋ค.
itself. SOA ์คํ์ ์์ด์ ์๋น์ค ๊ฐ ๋ด๋ถ ์ปค๋ฎค๋์ผ์ด์ ์ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค ๋ฒ์ค(EBS)๋ก ์๋ ค์ง ์ผํธ๋ด ๋ฐํ์์ ์ํด ์ด์ง๋๋ฉฐ, ๋๋ถ๋ถ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ค๊ฐ ๋ ์ด์ด์ ์กด์ฌํฉ๋๋ค. (๋ฉ์์ง ๋ผ์ฐํ , ๋ณ๊ฒฝ, ์๋น์ค ์ค์ผ์คํธ๋ ์ด์ ) ๊ทธ๋ฌ๋ MSA์ ์ผํธ๋ด ๋ฉ์์ง ๋ฒ์ค/ESB๋ฅผ ์ ๊ฑฐํ๊ณ ์๋น์ค์ ํด๋ผ์ด์ธํธ (โ์ค๋งํธ ์๋ ํฌ์ธํธโ๋ผ ํจ)์ โ์ค๋งํธํจ (smartness)โ ํน์ ๋น์ฆ๋์ค ๋ก์ง์ ์ด๋์ํต๋๋ค. ๋ฐ๋ผ์ ์ฌํ ์๋น์ค ๋ฐ ์์คํ ์ ํธ์ถํ๊ธฐ ์ํด ํ์ํ ๋น์ฆ๋์ค ๋ก์ง ๋ฐ ๋คํธ์ํฌ ์ปค๋ฎค๋์ผ์ด์ ๋ก์ง์ ๋ง์ดํฌ๋ก์๋น์ค ์์ฒด์ ์ผ๋ถ๋ถ์ผ๋ก์จ ์คํ๋ฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ์ํธ์์ฉ ๋ฐ ํตํฉ์ ๋๊ฐ์ ๋ฉ์ธ ํตํฉ ์คํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๊ฒ ์ ๋๋ค.: ์กํฐ๋ธ ์ปดํฌ์ง์ , ๋ฆฌ์ก์ ์ปดํฌ์ง์ .
๋ง์ดํฌ๋ก์๋น์ค ์คํ์ ์์ธํ ๋ค์ฌ๋ค๋ณด๋ฉด ํ 10์์์ ๊ฐ์ด ๋ค์ํ ์ข ๋ฅ์ ์๋น์ค๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค.
ํ 10: ๋ง์ดํฌ๋ก์๋น์ค์ ์กํฐ๋ธ ์ปดํฌ์ง์
๋๋ถ๋ถ์ ๋น์ฆ๋์ค ๋ก์ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋คํธ์ํฌ ์ปค๋ฎค๋์ผ์ด์ ๋ก์ง์ ์ ๊ฑฐ๋ ๊ฑฐ์ ์๋ ์ด์ดํ๊ณ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๊ฐ ์์ต๋๋ค. (์ธ๋ถ ์๋น์ค ์ข ์ ์์) ์ด๋ฌํ ์๋น์ค๋ค์ ์ํ ๋ฏน/์ฝ์ด ์๋น์ค๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค.
์ํ ๋ฏน/์ฝ์ด ๋ง์ดํฌ๋ก์๋น์ค๋ ๋งค์ฐ ์ด์ดํ ์กฐ์ง๋์ด ์์ด ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ฑ์ ๋ฐ๋ผ ์ง์ ์ ์ผ๋ก ๋งคํ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ต๋๋ค. ๋ฐ๋ผ์ ํน์ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ๋ค์์ ์ํ ๋ฏน/์ฝ์ด ์๋น์ค์ ๊ตฌ์ฑ์ด ์๊ตฌ๋ ๊ฒ์ ๋๋ค. ํ๋์ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋๊ธฐํ ์์ฒญ-์๋ต ๋ฉ์์ง ์คํ์ผ๋ก ๋ค์์ ๋ค์ด์คํธ๋ฆผ ์๋น์ค๋ฅผ ํธ์ถํ์ฌ ๋ณตํฉ ์๋น์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋น์ค๋ฅผ ์กํฐ๋ธ ์ปดํฌ์ง์ ์ผ๋ก ๋ถ๋ฆ ๋๋ค. ์ด๋ฌํ ์๋น์ค๋ค์ ๋ณตํฉ ํน์ ํตํฉ ์๋น์ค๋ก ๋ช ๋ช ๋๋ฉฐ ๋ผ์ฐํ , ๋ณ๊ฒฝ, ์ค์ผ์คํธ๋ ์ด์ , ๋ณต์๋ ฅ ๋ฐ ์์ ์ฑ ํจํด๊ณผ ๊ฐ์ SOA์์ ๊ฐ์ง๊ณ ์๋ ESB ๊ธฐ๋ฅ์ ํน์ ๋ถ๋ถ์ด ์คํ๋ฉ๋๋ค.
์ด๋ฌํ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ๋งค๋์ง๋ ๊ด๋ฆฌ API๋ก ์ฌ์ฉ์์๊ฒ ๋ ธ์ถ๋๋ฉฐ, ์ ํ๋ ์ผ๋จ์ ๋ณตํฉ ์๋น์ค ํน์ ์ํ ๋ฏน ์๋น์ค์ ์ผ๋ถ๋ถ์ด API ์๋น์ค/์์ง ์๋น์ค๋ฅผ ํ์ฉํ๋ API๋ก ๋ ธ์ถ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์๋น์ค๋ ํน๋ณํ ์ข ๋ฅ์ ๋ณตํฉ ์๋น์ค๋ก API๋ฒ์ ๋, API ๋ณด์ ํจํด, ์ฐ๋กํ๋ง, ์ ๋ฃํ API ์ปดํฌ์ง์ ์์ฑ์ ๊ฐ์ ๊ธฐ๋ณธ ๋ผ์ฐํ ์ญ๋์ ์ ์ฉํฉ๋๋ค.
์กํฐ๋ธ ์ปดํฌ์ง์ ์คํ์ผ๋ก๋ ๋ณตํฉ ์๋น์ค๊ฐ ์์ ํ ์์จ์ ์ผ๋ก ์ด์๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋น์ค๋ API ํน์ ์ธ๋ถ ์งํฅ ์๋น์ค์ ์ํธ์์ฉํ๊ธฐ์๋ ์ข์ผ๋ ๋๋ถ๋ถ ๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด๋ถ ๋น์ฆ๋์ค ๋ก์ง์ ์๋น์ค๊ฐ ๋น๋๊ธฐ ์ด๋ฒคํธ-๊ธฐ๋ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ํตํด ์คํํ ์ ์์ต๋๋ค. ์ด์ ๊ฐ์ ์ธํฐ-์๋น์ค ์ปค๋ฎค๋์ผ์ด์ ๊ตฌ์ถ ์คํ์ผ์ ๋ฆฌ์กํฐ๋ธ ์ปดํฌ์ง์ ์ด๋ผ๊ณ ํฉ๋๋ค. ํ 11์์ ๋ณผ ์ ์๋ฏ์ด, ๋ง์ดํฌ๋ก์๋น์ค๋ โ๋ค ํ์ดํโ์ ์ญํ ์ ํ๋ ์ค์ ํน์ ๋ถ์ฐ ์ด๋ฒคํธ ๋ฒ์ค/๋ธ๋ก์ปค๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , ๋ชจ๋ ์ค๋งํธ๋ ํ๋ก๋์ ๋ง์ดํฌ๋ก์๋น์ค์ ์ฌ์ฉ์ ๋ง์ดํฌ๋ก์๋น์ค์ ์กด์ฌํฉ๋๋ค.
ํ 11: ๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ API-๊ฒ์ดํธ์จ์ด๋ฅผ ํตํด ๋ ธ์ถ๋ฉ๋๋ค.
์ด๋ฒคํธ ๋ฒ์ค๋ Kafka, AMQP, NATS.io.์ ๊ฐ์ ๊ธฐ์ ๋ค์ ํตํด ์คํ๋ฉ๋๋ค. ์ ์ค ์ผ์ด์ค์ ๋ฐ๋ผ ์ด๋ฒคํธ ๋ฒ์ค๋ฅผ ์ง์ํ๋ ์ธ-๋ฉ๋ชจ๋ฆฌ ํน์ ์ง์ ๋ ์ด์ด๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
๋๋ถ๋ถ์ ๋ง์ดํฌ๋ก์๋น์ค ์คํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์กํฐ๋ธ ์ปดํฌ์ง์ ๊ณผ ๋ฆฌ์กํฐ๋ธ ์ปดํฌ์ง์ ๋ชจ๋ธ์ ํผํฉํ์ฌ ์ฌ์ฉํฉ๋๋ค. ํ 12์์๋ ๋ณผ ์ ์๋ฏ์ด ์ํธ์์ฉ ์๋น์ค ๋ฐ ์ธ๋ถ ์งํฅ ์๋น์ค์ ๊ฒฝ์ฐ ์กํฐ๋ธ ์คํ์ผ๋ก, ๋ค๋ฅธ ์ ๋ฌ ๋ณด์ฅ์ ์๊ตฌํ๋ ๋ด๋ถ ์๋น์ค ์ปค๋ฎค๋์ผ์ด์ ์ ๊ฒฝ์ฐ ๋ฆฌ์กํฐ๋ธ ์คํ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
ํ 12: ํ์ด๋ธ๋ฆฌ๋ ์ปดํฌ์ง์
API๋ ์ด์ด๋ ์ปดํฌ์ง์ ๋ ์ด์ด ์์ ์ํ์ง๋ฉฐ, ๋ค๋ฅธ ์ธ๋ถ ๋ฐ ๋ชจ๋ ธ๋ฆฌํฑ ์๋ธ์์คํ ์ ์ปดํฌ์ง์ ๋ ์ด์ด๋ฅผ ํตํด ํตํฉ๋ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ ๊ฒ์ดํธ ์จ์ด๋ฅผ ํตํด ๋ ธ์ถ๋ ์ ์๊ณ , ๋ชจ๋ API ๊ด๋ฆฌ ๊ธฐ์ ์ ํด๋น ๋ ์ด์ด์ ์ ์ฉ๋ ์ ์์ต๋๋ค. ๋ณด์, ์ฐ๋กํ๋ง, ์บ์ฑ, ์ ๋ฃํ, ๋ชจ๋ํฐ๋ง ๊ฐ์ ๋ชจ๋ ๊ธฐํ ์๊ฑด๋ค์ ๊ฒฝ์ฐ ๊ฒ์ดํธ์จ์ด ๋ ์ด์ด์์ ์คํ๋์ด์ผ ํฉ๋๋ค. API ๊ฒ์ดํธ์จ์ด ๋ ์ด์ด๋ ๋ค์์ ๊ฒ์ดํธ์จ์ด ์ธ์คํด์ค๋ค๋ก ๋ถ๋ฆฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋ฐ๋ฉด (API๋น ํ ๋น๋๋ ๋ง์ดํฌ๋ก ๊ฒ์ดํธ์จ์ด) API ๊ด๋ฆฌ ์ปดํฌ๋ํธ๋ ์ค์์ ๋จ์ ์์ต๋๋ค. API ๊ฒ์ดํธ์จ์ด ๋ ์ด์ด์ ๋์ ๋น์ฆ๋์ค ๋ก์ง์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์๋น์ค ๊ฐ ์ปค๋ฎค๋์ผ์ด์ ๊ด๋ จ ๊ธฐ๋ฅ์ ๊ธฐ์ด๋ถํฐ ์คํํ๋ ๊ฒ์ ์ ๋ชฝ ๊ฐ์ ์ผ์ ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ๋ ๋์ ์, ์๋น์ค ๊ฐ ์ปค๋ฎค๋์ผ์ด์ ๊ธฐ๋ฅ์ ๊ตฌ์ถํ๋๋ฐ ๋ง์ ์๊ฐ์ ์ฌ์ฉํด์ผ ํ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ์ธ์ด์ ๋ฐ๋ผ ๋์ผํ ๋ ธ๋ ฅ์ ๋ฐฐ๋ก ๊ธฐ์ธ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์ถ์ ์ํด ๋ค์ํ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋์ฑ ์ต์ ์ ๋๋ค. (์, ์ํท ๋ธ๋ ์ด์ปค์ ๊ฐ์ ๊ฒฝ์ฐ, Java, Node, Python์์ ์คํํด์ผ ํฉ๋๋ค.)
๋๋ถ๋ถ์ ์ธํฐ-์๋น์ค ์ปค๋ฎค๋์ผ์ด์ ์๊ฑด์ด ๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค ์คํ ๊ฐ ๊ฝค ์ผ๋ฐ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ํ ์คํธ๋ฅผ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ณ์ธต์ ์คํ๋ก๋ฉํ๋๋ก ํ์ฌ, ์๋น์ค ์ฝ๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์งํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์๋น์ค ๋ฉ์ฌ๊ฐ ์ฌ์ฉ๋๋ ๊ฒ์ ๋๋ค.
ํ 13: ์คํ ์ค์ธ ์๋น์ค ๋ฉ์ฌ
์๋น์ค ๋ฉ์ฌ๋ ์ธํฐ-์๋น์ค ์ปค๋ฎค๋์ผ์ด์ ์ธํ๋ผ์ ๋๋ค. ํ๋์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค์ ์ง์ ํต์ ํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ชจ๋ ์๋น์ค ๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ์๋น์ค ๋ฉ์ฌ (ํน์ ์ฌ์ด๋์นด ํ๋ก์)๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ํํธ์จ์ด ์ปดํฌ๋ํธ ์์์ ์ด๋ฃจ์ด ์ง๋๋ค. ์๋น์ค ๋ฉ์ฌ๋ ๋ณต์์ฑ ๋ฐ ์๋น์ค ๊ฒ์๊ณผ ๊ฐ์ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ํ ๋นํธ์ธ ์ํฌํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ์๋น์ค ๊ฐ๋ฐ์๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋์ฑ ์ง์คํ ์ ์๊ณ , ๋คํธ์ํฌ ์ปค๋ฎค๋์ผ์ด์ ๊ด๋ จ๋ ๋๋ถ๋ถ์ ์์ ์ ์๋น์ค ๋ฉ์ฌ๊ฐ ๋์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ค๋ฅธ ์๋น์ค๋ฅผ ํธ์ถํ ๋ ์ํท ๋ธ๋ ์ดํน์ ๋ํ์ฌ ๋ ์ด์ ๊ฑฑ์ ํ์ง ์์๋ ๋ฉ๋๋ค. ์ด๋ฏธ ์๋น์ค ๋ฉ์ฌ์ ์ผ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋น์ค ๋ฉ์ฌ๋ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์์ต๋๋ค. ๋ฉ์ฌ ํ๋ก์ ์ปค๋ฎค๋์ผ์ด์ ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ HTTP.1/2/x ๋ฐ gPRC์ ๊ฐ์ ํ์ค ํ๋กํ ์ฝ ์์ ํญ์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ๊ธฐ์ ์ ์ฌ์ฉํด์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์์ฑํด๋ ํด๋น ์๋น์ค ๋ฉ์ฌ๋ฅผ ํตํด ์ ์๋ ๋ฉ๋๋ค.
๋ค์์ ์๋น์ค ๋ฉ์ฌ๊ฐ ์ ๊ณตํ๋ ์ฃผ์ ๊ธฐ๋ฅ๋ค์ ๋๋ค.
์๋น์ค ๋ฉ์ฌ๋ ์๋น์ค ๋น์ฆ๋์ค ๋ก์ง์ผ๋ก๋ถํฐ ์์ ํ ๋ ๋ฆฝ์ ์ด๋ผ๋ ๊ฒ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋คํธ์ํฌ ๊ด๋ ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. ์์ ์ ์๋น์ค ๋น์ฆ๋์ค ๊ธฐ๋ฅ ์คํ์ ์์ ์ ์ฑ ์์ ๋๋ค. ๋ฐ๋ผ์ ๋ถ์ฐ ESB๊ฐ ์ ๋ ์๋๋๋ค. (์ด ์ฃผ์ ์ ๋ํ ์์ธํ ์ฌํญ์ [1] ๋ฐ [2] ์ฐธ์กฐ)
๋ง์ดํฌ๋ก์๋น์ค์์ ํธ๋์ญ์ ์ํฌํธ๋ ๋ฌด์์ผ๊น์? ์ฌ์ค ์ฌ๋ฌ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ถ์ฐ๋ ํธ๋์ญ์ ์ ์ง์ํ๋ ๊ฒ์ ๋ณต์กํ ์ผ์ ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ์๋น์ค ๊ฐ ํธ๋์ญ์ ์๋ ์กฐํ๋ฅผ ์ด์งํ ์ ์์ต๋๋ค.
์ฆ ํ๋์ ์๋น์ค๊ฐ ์์ ํ ๋ ๋ฆฝ ์ ์ด๋ฉฐ ๋จ์ผ ์ฑ ์ ์์น์ ๊ธฐ๋ฐํ๊ณ ์๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์ํฉ์์ ํธ๋์ญ์ ์ ๋ง์ดํฌ๋ก์๋น์ค์ ์์ญ์๋ง ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค. (์ฆ, ๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค์ ์ ์ฉ ๋ถ๊ฐ๋ฅํฉ๋๋ค.)
๊ทธ๋ฌ๋ ๋ค์์ ์๋น์ค์ ๋ถ์ฐ๋ ํธ๋์ญ์ ์ด ์๊ตฌ๋๋ ๊ฒฝ์ฐ, ๋ฌด์จ ์๋ฅผ ์จ์๋ผ๋ 2๋จ๊ณ ์คํ(2PC)์ ํผํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ํจํด์ SAGA ํจํด์ ๋์ ํด์ผ ์คํํ ์ ์์ผ๋ฉฐ, [1] ์ด๋ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค ์ฒด๊ณ์์ โ๋ณด์ ์ด์โ ์ ํ์ฉํฉ๋๋ค. ์ค์ํ ๊ฒ์ ํ๋์ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋จ์ผ ์ฑ ์ ์์น์ ๊ธฐ๋ฐํ๊ณ ์์ผ๋ฉฐ, ํ๋์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์ฃผ์ด์ง ์์ ์ ์คํํ์ง ๋ชปํ ๊ฒฝ์ฐ, ์ด๋ฅผ ๋ง์ดํฌ๋ก์๋น์ค ์ ์ฒด์ ์ฅ์ ๋ก ๊ฐ์ฃผํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ชจ๋ ๊ธฐํ (์ ์คํธ๋ฆผ) ์์ ๋ค์ ์ด๋ฌํ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๊ฐ์ ๋ณด์ ์์ ์ ํธ์ถํจ์ผ๋ก์จ ๋ฌดํจํ ํ ์ ์์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ํธ๋์ญ์ ๊ตฌ์ถ์ ์ํ SAGA ํจํด ์คํ์ ๋ํ ๋์ฑ ์์ธํ ๋ด์ฉ์ [1]์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
MSA์ ๋ค์ํ ๋ฉด์ ์คํํ๊ธฐ ์ํด WS02์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ์ 100% ์คํ ์์ค ๊ธฐ์ ์ ํ์ฉํ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด WS02์ ์ํด ๊ตฌ๋๋๋ Ballerina ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ ๋ฆฌ๋๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ์ ๋จ์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋คํธ์ํฌ ์ํธ์์ฉ, ๋คํธ์ํฌ ํ์ , ๋ฆฌ์ง๋ฆฌ์ธํธ ์ธํฐ-์๋น์ค ์ปค๋ฎค๋์ผ์ด์ , ๋ฐ์ดํฐ ํตํฉ, ๊ด์ธก๊ฐ๋ฅ์ฑ ๋ฐ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์์ฝ์์คํ ๊ณผ์ ํตํฉ์ ๋ํ ์ถ์์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋ ๋ฆฌ๋๋ ๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค (์ฝ์ด ์๋น์ค)์ ์ปดํฌ์ง์ (์กํฐ๋ธ ํน์ ๋ฆฌ์ก์ )์ ์์ฑํ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ธฐ์ ์ด์์ ์ ๋๋ค.
๋ํ WSO2 Micro Integrator ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ, ์ง๊ด์ ๊ทธ๋ํฝ ๊ฐ๋ฐ๋๊ตฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์กํฐ๋ธ ํน์ ๋ฆฌ์กํฐ๋ธ ์ปดํฌ์ง์ ํจํด์ ์ฌ์ฉํ๊ฑฐ๋ ์ปจํผ๊ท๋ ์ด์ ์ธ์ด (DSL)์ ์ฌ์ฉํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํตํฉํ๋๋ก ํ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐํ์์ ๋๋ค. WS02 Micro Integrator๋ ์ฑ๋ฅ์ด ์ ์ฆ๋, ์ญ์ ์ WSO2 Enterprise Integrator/WSO2 ESB ์ ํ ๋ณํ์ ๋๋ค. ๋ฐ๋ผ์ ํตํฉ ์๋น์ค ๊ตฌ์ถ์ ์ํด์ ๋ณธ์ธ์ ์ทจํฅ์ ๋ฐ๋ผ Ballerina ํน์ Micro Integrator๋ฅผ ์ ํํ ์ ์์ต๋๋ค. (ํ 13) ๋ํ ๊ธฐ์กด์ ๋ชจ๋ ธ๋ฆฌํฑ ์์คํ ๊ณผ์ ํตํฉ์ ์ํด ์ผํธ๋ด WS02 Enterprise Integrator๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
API ์๋น์ค ๋ ์ด์ด WS02 API Manager์ ํจ๊ป ์คํ ๊ฐ๋ฅํ๋ฉฐ WS02 Identity Server๋ API ํธ๋ํฝ ๋ณด์์ ์ํ ์์ด๋ดํฐํฐ ์ ๊ณต์ ํน์ ์ฃผ์ ๊ด๋ฆฌ์๋ก์จ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ชจ๋ WS02๊ธฐ์ ์ Docker, Kubernetes, Istio ์๋น์ค ๋ฉ์์ ๊ฐ์ ๋ฐฐํฌ ๊ธฐ์ ๋ฐ Prometheus, Grafana, Zipkin, Jaeger์ ๊ฐ์ ๊ด์ธก๊ฐ๋ฅ์ฑ ๋๊ตฌ์ ํจ๊ป ๋งค๋๋ฝ๊ฒ ํตํฉํฉ๋๋ค.
ํ 14: WS02 ์ ํ๊ณผ ๊ธฐ์ ์ ํตํด ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ์คํํ๊ธฐ
MSA๋ฅผ ์ด๋ป๊ฒ ํ๋ ๊ธฐ์ ์ IT ํ๊ฒฝ์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ ๋ ๋ค์์ ์ฃผ์ ์ฌํญ๋ค์ ๋ช ์ฌํด์ผ ํฉ๋๋ค.
์๋ฃจ์ ์์ธ ์๊ฐ ํน์ ์๊ตฌ์ฌํญ์ด ์์ผ์ญ๋๊น?