๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ํ๋ก์ ํธ์์ CI/CD๋ ์ฆ๊ฑฐ์ด ๊ธฐํ์ ๋ฒ์ฃผ์์ ๊ธด๊ธํ ํ์์ฑ์ ๋ฒ์ฃผ๋ก ์ด๋ํฉ๋๋ค. ์๋ํ๋ ํ ์คํธ๋ ํ์๊ฒ ๊ฐ์กฑ ๋ฐ ์น๊ตฌ๋ค๊ณผ ํจ๊ป ์ฆ๊ฑฐ์ด ์ ๋ ์๊ฐ์ ๋ณด๋ผ ์ ์๋ ์ ๋ฅํ ์ ๊ทผ ๋ฐฉ์์ธ ์ง์์ ์ธ ํตํฉ์ ํ์์ ์ธ ๋ถ๋ถ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก์ ํธ๊ฐ ์๋ฃ๋์ง ์์ ์ํ์ด ์์ต๋๋ค.
๋ชจ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋จ์ ํ ์คํธ๋ก ์ ์ฒด ๋ง์ดํฌ๋ก์๋น์ค ์ฝ๋๋ฅผ ํฌ๊ดํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง๋ง ์ด๋ ๋ฌธ์ ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก๋ง ํด๊ฒฐํ๊ณ ํนํ ๋ฐ์ดํฐ ์์ ์ ํ ์คํธํ ๋ ๋ง์ ์ง๋ฌธ๊ณผ ์ด๋ ค์์ ๋จ๊น๋๋ค. ํญ์ ๊ทธ๋ ๋ฏ์ด ๊ฐ์ฅ ์๊ธํ ์์ ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ํ ์คํธ, ํด๋ผ์ฐ๋ ์๋น์ค ์์ ํ ์คํธ, ๋ชจ์ ๊ฐ์ฒด ์์ฑ ์ ์๋ชป๋ ๊ฐ์ ์ ํ๋ ๊ฒ์ ๋๋ค.
Docker ์ปจํ ์ด๋์์ ์ ์ฒด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํ ์คํธํ๋ฉด ์ด ๋ชจ๋ ๋ฌธ์ ์ ๊ทธ ์ด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ํ ์คํธ์ ์ ํจ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์์ด ์์ฌํ ์ฌ์ง ์๋ ์ด์ ์ ํ๋ก๋์ ์ ์ฌ์ฉ๋๋ ๋์ผํ Docker ์ด๋ฏธ์ง๊ฐ ํ ์คํธ๋๋ค๋ ๊ฒ์ ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์๋ํํ๋ฉด ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉฐ ์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.
- ๋์ผํ ๋์ปค ํธ์คํธ์์ ๋ณ๋ ฌ ์์ ์ ์ถฉ๋;
- ํ ์คํธ ๋ฐ๋ณต ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ณ์ ์ถฉ๋;
- ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์ค๋น๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ๋๋ค.
- ๋ก๊ทธ๋ฅผ ์ธ๋ถ ์์คํ ์ ๋ณํฉํ๊ณ ์ถ๋ ฅํฉ๋๋ค.
- ๋๊ฐ๋ HTTP ์์ฒญ ํ ์คํธ
- ์น ์์ผ ํ ์คํธ(SignalR ์ฌ์ฉ)
- OAuth ์ธ์ฆ ๋ฐ ์น์ธ ํ ์คํธ.
์ด ๊ธฐ์ฌ๋ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ด ๊ธฐ์ฌ์์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ Docker์์ ํ ์คํธ ์ค์ธ ์๋น์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ Amazon AWS ์๋น์ค๋ฅผ ์คํํ ๋ค์ Postman์์ ํ ์คํธํ๊ณ ์๋ฃ๋๋ฉด ์์ฑ๋ ์ปจํ ์ด๋๋ฅผ ์ค์งํ๊ณ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํ ์คํธ๊ฐ ์คํ๋ฉ๋๋ค. ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ฐ๋ฆฌ๋ ๊ฐ ๋ฒ์ ์ด AWS ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์๋น์ค์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
Windows ๋ฐ์คํฌํฑ์ ๊ฐ๋ฐ์์ Linux์ Gitlab CI ์๋ฒ ๋ชจ๋ ๋์ผํ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค.
์ ๋นํํ๋ ค๋ฉด ์๋ก์ด ํ ์คํธ๋ฅผ ๋์ ํ ๋ ๊ฐ๋ฐ์์ ์ปดํจํฐ๋ ์ปค๋ฐ์์ ํ ์คํธ๊ฐ ์คํ๋๋ ์๋ฒ์ ์ถ๊ฐ ๋๊ตฌ๋ฅผ ์ค์นํ ํ์๊ฐ ์์ด์ผ ํฉ๋๋ค. Docker๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
ํ ์คํธ๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋ก์ปฌ ์๋ฒ์์ ์คํ๋์ด์ผ ํฉ๋๋ค.
- ๋คํธ์ํฌ๋ ๊ฒฐ์ฝ ์์ ํ ์ ๋ขฐํ ์ ์์ต๋๋ค. ์์ฒ ๊ฐ์ ์์ฒญ ์ค ํ๋๊ฐ ์คํจํ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ์๋ ํ ์คํธ๊ฐ ์๋ํ์ง ์๊ณ ์์ ์ด ์ค์ง๋๋ฉฐ ๋ก๊ทธ์์ ์ด์ ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. - ์ผ๋ถ ํ์ฌ ์๋น์ค์์๋ ๋๋ฌด ๋น๋ฒํ ์์ฒญ์ ํ์ฉํ์ง ์์ต๋๋ค.
๋ํ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์คํ ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๋์งํ์ง ์์ต๋๋ค.
- ์คํ ๋๋ ์๋ชป๋ ์ฝ๋๊ฐ ์คํ๋ ๋๋ฟ๋ง ์๋๋ผ ์ฌ๋ฐ๋ฅธ ์ฝ๋๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ๋ก ์ธํด ์์๋ ์๋ ์์ต๋๋ค.
- ํ ์คํธ ์ค์ ํ ์คํธ๋ก ์ธํด ๋ฐ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๋ ค๊ณ ์๋ฌด๋ฆฌ ๋ ธ๋ ฅํด๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค(๊ทธ๋ ์ง ์์ผ๋ฉด ํ ์คํธํ ์ด์ ๊ฐ ๋ฌด์์ ๋๊น?).
ํ๋ก์ ํธ ๋ฐ ํ๋ก์ธ์ค ์กฐ์ง ์ ๋ณด
์ฐ๋ฆฌ ํ์ฌ๋ Amazon AWS ํด๋ผ์ฐ๋์ Docker์์ ์คํ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ์ต๋๋ค. ํ๋ก์ ํธ์๋ ๋จ์ ํ ์คํธ๊ฐ ์ด๋ฏธ ์ฌ์ฉ๋์์ง๋ง ๋จ์ ํ ์คํธ์์ ๊ฐ์งํ์ง ๋ชปํ๋ ์ค๋ฅ๊ฐ ์์ฃผ ๋ฐ์ํ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ Amazon ์๋น์ค์ ํจ๊ป ์ ์ฒด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํ ์คํธํด์ผ ํ์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ ๋ชจ๋ ์ปค๋ฐ์์ ๋ง์ดํฌ๋ก์๋น์ค ํ ์คํธ๋ฅผ ํฌํจํ๋ ํ์ค ์ฐ์ ํตํฉ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ ์ ํ ๋นํ ํ ๊ฐ๋ฐ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ณ๊ฒฝํ๊ณ ์๋์ผ๋ก ํ ์คํธํ๋ฉฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์๋ํ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ ํ ์คํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด ์ด ๋ฌธ์ ์ ๋ถ๊ธฐ์ ์ปค๋ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค. ์ปค๋ฐํ ๋๋ง๋ค ํ ์คํธ๊ฐ ์๋ฒ์์ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค. ์ฑ๊ณต์ ์ธ ๊ฒํ ํ์ ๊ณตํต ๋ถ๊ธฐ์ ๋ณํฉํ๊ณ ์๋ ํ ์คํธ๋ฅผ ์์ํฉ๋๋ค. ๊ณต์ ๋ธ๋์น์ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ฉด Amazon Elastic Container Service(๋ฒค์น)์ ํ ์คํธ ํ๊ฒฝ์์ ์๋น์ค๊ฐ ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์คํ ๋๋ ๋ชจ๋ ๊ฐ๋ฐ์์ ํ ์คํฐ์๊ฒ ๊ผญ ํ์ํ ์ ํ์ด๋ฏ๋ก ๋ถ์๋ ๊ฒ์ ๋ฐ๋์งํ์ง ์์ต๋๋ค. ์ด ํ๊ฒฝ์ ํ ์คํฐ๋ ์๋ ํ ์คํธ๋ฅผ ์ํํ์ฌ ์์ ์ฌํญ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ธํฉ๋๋ค.
ํ๋ก์ ํธ ์ํคํ ์ฒ
์ด ์ ํ๋ฆฌ์ผ์ด์ ์ XNUMX๊ฐ ์ด์์ ์๋น์ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ทธ ์ค ์ผ๋ถ๋ .NET Core๋ก ์์ฑ๋๊ณ ์ผ๋ถ๋ NodeJ๋ก ์์ฑ๋์์ต๋๋ค. ๊ฐ ์๋น์ค๋ Amazon Elastic Container Service์ Docker ์ปจํ ์ด๋์์ ์คํ๋ฉ๋๋ค. ๊ฐ๊ฐ์๋ ์์ฒด Postgres ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๊ณ ์ผ๋ถ์๋ Redis๋ ์์ต๋๋ค. ๊ณตํต ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ต๋๋ค. ์ฌ๋ฌ ์๋น์ค์ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด SNS(Simple Notification Service) ๋ฐ SQS(Amazon Simple Queue Service)๋ฅผ ํตํด ๊ฐ ์๋น์ค๋ก ์ ์ก๋๊ณ ์๋น์ค๋ ์ด๋ฅผ ๋ณ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค.
SQS์ SNS
SQS๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ์์ง๋ฅผ ๋๊ธฐ์ด์ ๋ฃ๊ณ HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋๊ธฐ์ด์์ ๋ฉ์์ง๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
์ฌ๋ฌ ์๋น์ค๊ฐ ํ๋์ ๋๊ธฐ์ด์ ์ฝ๋ ๊ฒฝ์ฐ ๊ฐ ๋ฉ์์ง๋ ๊ทธ ์ค ํ๋์๋ง ๋์ฐฉํฉ๋๋ค. ์ด๋ ๋์ผํ ์๋น์ค์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ์คํํ์ฌ ์ธ์คํด์ค ๊ฐ์ ๋ก๋๋ฅผ ๋ถ์ฐ์ํฌ ๋ ์ ์ฉํฉ๋๋ค.
๊ฐ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ์๋น์ค์ ์ ๋ฌํ๋ ค๋ฉด ๊ฐ ์์ ์์๊ฒ ์์ฒด ๋๊ธฐ์ด์ด ์์ด์ผ ํ๋ฉฐ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๋๊ธฐ์ด์ ๋ณต์ ํ๋ ค๋ฉด SNS๊ฐ ํ์ํฉ๋๋ค.
SNS์์๋ ์ฃผ์ (์: SQS ๋๊ธฐ์ด)๋ฅผ ์์ฑํ๊ณ ๊ตฌ๋ ํฉ๋๋ค. ์ฃผ์ ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฉ์์ง๋ ์ด ์ฃผ์ ๋ฅผ ๊ตฌ๋ ํ๋ ๊ฐ ๋๊ธฐ์ด๋ก ์ ์ก๋ฉ๋๋ค. SNS์๋ ๋ฉ์์ง๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋๋ฒ๊น ๋๋ ํ ์คํธ ์ค์ SNS๋ก ์ ์ก๋ ๋ด์ฉ์ ์ฐพ์์ผ ํ๋ ๊ฒฝ์ฐ SQS ๋๊ธฐ์ด์ ์์ฑํ๊ณ ์ํ๋ ์ฃผ์ ๋ฅผ ๊ตฌ๋ ํ ํ ๋๊ธฐ์ด์ ์ฝ์ ์ ์์ต๋๋ค.
API ๊ฒ์ดํธ์จ์ด
๋๋ถ๋ถ์ ์๋น์ค๋ ์ธํฐ๋ท์์ ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ ๊ทผ์ ์ ๊ทผ๊ถํ์ ํ์ธํ๋ API Gateway๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์ด๊ฒ์ ๋ํ ์ฐ๋ฆฌ์ ์๋น์ค์ด๋ฉฐ ์ด์ ๋ํ ํ ์คํธ๋ ์์ต๋๋ค.
์ค์๊ฐ ์๋ฆผ
์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋
์ ์๋ ค์ง ํ ์คํธ ์ ๊ทผ ๋ฐฉ์
๋จ์ ํ ์คํธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๊ฒ์ ๋ชจ์ ๊ฐ์ฒด๋ก ๋์ฒดํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์ธ๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๊ณ ํ๋๋ฐ ํด๋น ํค์์ ์ฐธ์กฐํ๋ ๋ ์ฝ๋๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์์ฒญ์ ์คํํ ์ ์์ต๋๋ค. ๋จ์ ํ ์คํธ์์๋ ์ด๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
ะ
์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Entity Framework์์ ์ง์ํ๋ DBMS ์ค ํ๋์ ๋๋ค. ํ ์คํธ์ฉ์ผ๋ก ํน๋ณํ ์ ์๋์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง๋ง ์ ์ฅ๋ฉ๋๋ค. ํ ์ด๋ธ์ ์์ฑํ ํ์๊ฐ ์์ผ๋ฉฐ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ์ง ์์ต๋๋ค.
๋ชจ์ ๊ฐ์ฒด๋ ํ ์คํธ ๊ฐ๋ฐ์๊ฐ ์๋ ๋ฐฉ์์ ์ดํดํ๋ ์ ๋๊น์ง๋ง ๋์ฒดํ๋ ํด๋์ค๋ฅผ ๋ชจ๋ธ๋งํฉ๋๋ค.
ํ ์คํธ๋ฅผ ์คํํ ๋ Postgres๊ฐ ์๋์ผ๋ก ์์๋๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ Microsoft ๋ฌธ์์ ์ง์ ๋์ด ์์ง ์์ต๋๋ค. ๋ด ์๋ฃจ์ ์ ์ด๋ฅผ ์ํํ๋ฉฐ, ๋ํ ๋ง์ดํฌ๋ก์๋น์ค ์์ฒด์ ๋ํ ํ ์คํธ์ฉ์ผ๋ก ํน๋ณํ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค.
์๋ฃจ์ ์ผ๋ก ๋์ด ๊ฐ์๋ค
๊ฐ๋ฐ ๊ณผ์ ์์ ๋จ์ ํ ์คํธ๋ง์ผ๋ก๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ์ ์์ ์ฐพ์๋ด๊ธฐ์ ์ถฉ๋ถํ์ง ์๋ค๋ ๊ฒ์ด ๋ถ๋ช ํด์ก๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ์ ๋ํด ๋ค๋ฅธ ๊ฐ๋์์ ์ ๊ทผํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ํ ์คํธ ํ๊ฒฝ ์ค์
์ฒซ ๋ฒ์งธ ์์ ์ ํ ์คํธ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋จ๊ณ:
- ๋ก์ปฌ ํ๊ฒฝ์ ๋ํด ํ ์คํธ ์ค์ธ ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ณ , ํ๊ฒฝ ๋ณ์์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ AWS์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ง์ ํฉ๋๋ค.
- Postgres๋ฅผ ์์ํ๊ณ Liquibase๋ฅผ ์คํํ์ฌ ๋ง์ด๊ทธ๋ ์ด์
์ ์ํํฉ๋๋ค.
๊ด๊ณํ DBMS์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ ์ ์ ๋ฐ์ดํฐ ์คํค๋ง, ์ฆ ํ ์ด๋ธ์ ์์ฑํด์ผ ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํ ๋ ํ ์ด๋ธ์ ์ ๋ฒ์ ์์ ์ฌ์ฉ๋๋ ํ์์ผ๋ก ๊ฐ์ ธ์์ผ ํ๋ฉฐ, ๊ฐ๊ธ์ ๋ฐ์ดํฐ ์์ค ์์ด ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ผ๊ณ ํฉ๋๋ค. ์ฒ์์ ๋น์ด ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ง๋๋ ๊ฒ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํน๋ณํ ๊ฒฝ์ฐ์ ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด์ ๋ด์ฅ๋ ์ ์์ต๋๋ค. .NET๊ณผ NodeJS์๋ ๋ชจ๋ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์์ํฌ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๋ณด์์์ ์ด์ ๋ก ๋ง์ดํฌ๋ก์๋น์ค์๋ ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ถํ์ด ๋ฐํ๋์์ผ๋ฉฐ ๋ง์ด๊ทธ๋ ์ด์ ์ Liquibase๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. - Amazon LocalStack์ ์์ํฉ๋๋ค. ์ด๋ ์ง์์ ์คํํ ์ ์๋ AWS ์๋น์ค์ ๊ตฌํ์ ๋๋ค. Docker Hub์๋ LocalStack์ฉ์ผ๋ก ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค.
- ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ LocalStack์ ํ์ํ ์ํฐํฐ๋ฅผ ์์ฑํฉ๋๋ค. ์ ธ ์คํฌ๋ฆฝํธ๋ AWS CLI๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ๋ก์ ํธ ํ
์คํธ์ ์ฌ์ฉ๋จ
์๋ ํ ์คํธ๋ ์ด๋ป๊ฒ ์๋ํ๋์?
ํ ์คํธ ์ค์๋ ํ ์คํธ ์ค์ธ ์๋น์ค, Postgres, ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ, Postman ๋๋ ํด๋น ์ฝ์ ๋ฒ์ ์ธ Newman ๋ฑ ๋ชจ๋ ๊ฒ์ด Docker์์ ์๋ํฉ๋๋ค.
Docker๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ํธ์คํธ ๊ตฌ์ฑ๊ณผ์ ๋ ๋ฆฝ์ฑ
- ์ข ์์ฑ ์ค์น: Docker๋ Docker Hub์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ์์คํ ์ ์๋ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ: ๊ฐ๋จํ ์ปจํ ์ด๋๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ฉ๋๋ค.
Docker ์์ฑ ์ปจํ ์ด๋๋ฅผ ์ธํฐ๋ท์์ ๊ฒฉ๋ฆฌ๋ ๊ฐ์ ๋คํธ์ํฌ๋ก ํตํฉํฉ๋๋ค. ์ฌ๊ธฐ์ ์ปจํ ์ด๋๋ ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก ์๋ก๋ฅผ ์ฐพ์ต๋๋ค.
ํ ์คํธ๋ ์ ์คํฌ๋ฆฝํธ์ ์ํด ์ ์ด๋ฉ๋๋ค. Windows์์ ํ ์คํธ๋ฅผ ์คํํ๋ ค๋ฉด git-bash๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ Windows์ Linux ๋ชจ๋์ ํ๋์ ์คํฌ๋ฆฝํธ๋ก ์ถฉ๋ถํฉ๋๋ค. Git ๋ฐ Docker๋ ํ๋ก์ ํธ์ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ค์นํฉ๋๋ค. Windows์ Git์ ์ค์นํ๋ฉด git-bash๊ฐ ์ค์น๋๋ฏ๋ก ๋ชจ๋๊ฐ ์ด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๋ ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
- ๋์ปค ์ด๋ฏธ์ง ๋น๋
docker-compose build
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ LocalStack ์คํ
docker-compose up -d <ะบะพะฝัะตะนะฝะตั>
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
๋ฐ LocalStack ์ค๋น
docker-compose run <ะบะพะฝัะตะนะฝะตั>
- ํ
์คํธ ์ค์ธ ์๋น์ค ์ถ์
docker-compose up -d <ัะตัะฒะธั>
- ํ ์คํธ ์คํ(Newman)
- ๋ชจ๋ ์ปจํ
์ด๋ ์ค์ง
docker-compose down
- Slack์ ๊ฒฐ๊ณผ ๊ฒ์
๋ น์ ํ์ธ ํ์๋ ๋นจ๊ฐ์ ์ญ์๊ฐ๊ฐ ์๋ ๋ฉ์์ง์ ๋ก๊ทธ ๋งํฌ๊ฐ ์๋ ์ฑํ ์ด ์์ต๋๋ค.
์ด๋ฌํ ๋จ๊ณ์๋ ๋ค์ Docker ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ฉ๋๋ค.
- ํ ์คํธ ์ค์ธ ์๋น์ค๋ ํ๋ก๋์ ๊ณผ ๋์ผํ ์ด๋ฏธ์ง์ ๋๋ค. ํ ์คํธ ๊ตฌ์ฑ์ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
- Postgres, Redis ๋ฐ LocalStack์ ๊ฒฝ์ฐ Docker Hub์์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์ด๋ฏธ์ง๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. Liquibase ๋ฐ Newman์ฉ ๊ธฐ์ฑ ์ด๋ฏธ์ง๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ค์ ๋ผ๋ ์์ ์ฐ๋ฆฌ์ ๊ฒ์ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ํ์ผ์ ์ถ๊ฐํฉ๋๋ค.
- LocalStack์ ์ค๋นํ๋ ค๋ฉด ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง AWS CLI ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
์ฌ์ฉ
๋ฐ์ํ ์ ์๋ ๋ฌธ์
์ค๋น๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค
์๋น์ค๊ฐ ํฌํจ๋ ์ปจํ ์ด๋๊ฐ ์คํ ์ค์ด๋ผ๊ณ ํด์ ์ฐ๊ฒฐ์ ์๋ฝํ ์ค๋น๊ฐ ๋์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์ฐ๊ฒฐ์ด ๊ณ์๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋๋๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐ๋ฉ๋๋ค.
๊ฒฐ์ : SQS์ SNS ๋ชจ๋์์ 200 ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ LocalStack ํ๋ก๋น์ ๋ ์คํฌ๋ฆฝํธ์ ๋๋ค.
๋ณ๋ ฌ ์์ ์ถฉ๋
๋์ผํ Docker ํธ์คํธ์์ ์ฌ๋ฌ ํ ์คํธ๋ฅผ ๋์์ ์คํํ ์ ์์ผ๋ฏ๋ก ์ปจํ ์ด๋ ๋ฐ ๋คํธ์ํฌ ์ด๋ฆ์ ๊ณ ์ ํด์ผ ํฉ๋๋ค. ๋ํ ๋์ผํ ์๋น์ค์ ์ฌ๋ฌ ๋ถ๊ธฐ์ ํ ์คํธ๋ ๋์์ ์คํ๋ ์ ์์ผ๋ฏ๋ก ๊ฐ ์์ฑ ํ์ผ์ ์ด๋ฆ์ ์ฐ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
๊ฒฐ์ : ์คํฌ๋ฆฝํธ๋ COMPOSE_PROJECT_NAME ๋ณ์๋ฅผ ๊ณ ์ ํ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.
์๋์ฐ ๊ธฐ๋ฅ
Windows์์ Docker๋ฅผ ์ฌ์ฉํ ๋ ์ง์ ํ๊ณ ์ถ์ ์ฌํญ์ด ๋ง์ด ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ฅผ ์ดํดํ๋ ๋ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ปจํ
์ด๋์ ์
ธ ์คํฌ๋ฆฝํธ์๋ Linux ์ค ๋์ด ์์ด์ผ ํฉ๋๋ค.
์ CR ๊ธฐํธ๋ ๊ตฌ๋ฌธ ์ค๋ฅ์ ๋๋ค. ์ค๋ฅ ๋ฉ์์ง์์๋ ์ด๊ฒ์ด ์ฌ์ค์ธ์ง ์๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. Windows์์ ์ด๋ฌํ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์งํ๋ ค๋ฉด ์ ์ ํ ํ ์คํธ ํธ์ง๊ธฐ๊ฐ ํ์ํฉ๋๋ค. ๋ํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ๋ ์ ์ ํ๊ฒ ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค.
Git์ด ๊ตฌ์ฑ๋๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
git config core.autocrlf input
- Git-bash๋ ํ์ค Linux ํด๋๋ฅผ ์๋ฎฌ๋ ์ดํธํ๊ณ exe ํ์ผ(docker.exe ํฌํจ)์ ํธ์ถํ ๋ ์ ๋ Linux ๊ฒฝ๋ก๋ฅผ Windows ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๋ก์ปฌ ์์คํ ์ ์๋ ๊ฒฝ๋ก(๋๋ ์ปจํ ์ด๋์ ๊ฒฝ๋ก)์๋ ์ ํฉํ์ง ์์ต๋๋ค. ์ด ๋์์ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
๊ฒฐ์ : ๊ฒฝ๋ก ์์ ๋ถ๋ถ์ ์ถ๊ฐ ์ฌ๋์๋ฅผ ์ถ๊ฐํฉ๋๋ค(/bin ๋์ //bin). Linux๋ ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ์ดํดํ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ ์ฌ๋์๊ฐ ํ๋์ ๋์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ git-bash๋ ๊ทธ๋ฌํ ๊ฒฝ๋ก๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ณ ๋ณํ์ ์๋ํ์ง ์์ต๋๋ค.
๋ก๊ทธ ์ถ๋ ฅ
ํ ์คํธ๋ฅผ ์คํํ ๋ Newman๊ณผ ํ ์คํธ ์ค์ธ ์๋น์ค์ ๋ก๊ทธ๋ฅผ ๋ชจ๋ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ด๋ฌํ ๋ก๊ทธ์ ์ด๋ฒคํธ๋ ์๋ก ์ฐ๊ฒฐ๋์ด ์์ผ๋ฏ๋ก ํ๋์ ์ฝ์์ ๊ฒฐํฉํ๋ ๊ฒ์ด ๋ ๊ฐ์ ๋ณ๋ ํ์ผ๋ณด๋ค ํจ์ฌ ํธ๋ฆฌํฉ๋๋ค. Newman์ ๋ค์์ ํตํด ์ถ์๋ฉ๋๋ค. ๋์ปค ์์ฑ ์คํ, ๊ทธ๋ฆฌ๊ณ ์ถ๋ ฅ์ ์ฝ์์์ ๋๋ฉ๋๋ค. ๋จ์ ๊ฒ์ ์๋น์ค์ ์ถ๋ ฅ๋ ํด๋น ์์น๋ก ์ด๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
์๋ ํด๊ฒฐ์ฑ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋์ปค - ์์ฑ ๊น๋ฐ ์์ -d, ๊ทธ๋ฌ๋ ์ ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ด ํ๋ก์ธ์ค๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ณด๋ ๋๋ค.
docker-compose up <service> &
์ด๋ Docker์์ ํ์ฌ ์๋น์ค๋ก ๋ก๊ทธ๋ฅผ ์ ์กํด์ผ ํ ๋๊น์ง ์๋ํ์ต๋๋ค. ๋์ปค - ์์ฑ ์ฝ์์ ๋ก๊ทธ ์ถ๋ ฅ์ ์ค์งํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ ์ผํ์ต๋๋ค. ๋์ปค ๋ถ์ฐฉ.
๊ฒฐ์ :
docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<ัะตัะฒะธั>_1 &
ํ ์คํธ ๋ฐ๋ณต ์ค ์๋ณ์ ์ถฉ๋
ํ ์คํธ๋ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ์ฌ ์คํ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ง์์ง์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋์๋ ๊ณ ์ ID๊ฐ ์์ต๋๋ค. ์์ฒญ์ ํน์ ID๋ฅผ ๊ธฐ๋กํ๋ฉด ๋ ๋ฒ์งธ ๋ฐ๋ณต์์ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ID๊ฐ ๊ณ ์ ํด์ผ ํ๊ฑฐ๋ ํ ์คํธ์์ ์์ฑ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ ํด์ผ ํฉ๋๋ค. ์๊ตฌ ์ฌํญ์ผ๋ก ์ธํด ์ผ๋ถ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
๊ฒฐ์ : Postman ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ GUID๋ฅผ ์์ฑํฉ๋๋ค.
var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);
๊ทธ๋ฐ ๋ค์ ์ฟผ๋ฆฌ์์ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค. {{myUUID}}, ์ด๋ ๋ณ์์ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
LocalStack์ ํตํ ํ์
ํ ์คํธ ์ค์ธ ์๋น์ค๊ฐ SQS ๋๊ธฐ์ด์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ํ์ธํ๋ ค๋ฉด ํ ์คํธ ์์ฒด๋ ์ด ๋๊ธฐ์ด๊ณผ ํจ๊ป ์๋ํด์ผ ํฉ๋๋ค.
๊ฒฐ์ : Postman์์ LocalStack์ผ๋ก์ ์์ฒญ์ ๋๋ค.
AWS ์๋น์ค API๊ฐ ๋ฌธ์ํ๋์ด SDK ์์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์๋น์ค๊ฐ ๋๊ธฐ์ด์ ์ฐ๋ฉด ์ด๋ฅผ ์ฝ๊ณ ๋ฉ์์ง ๋ด์ฉ์ ํ์ธํฉ๋๋ค.
์๋น์ค๊ฐ SNS์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ ์ค๋น ๋จ๊ณ์์ LocalStack๋ ๋๊ธฐ์ด์ ์์ฑํ๊ณ ์ด SNS ์ฃผ์ ๋ฅผ ๊ตฌ๋ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฒ์ด ์์์ ์ค๋ช ํ ๋ด์ฉ์ผ๋ก ๊ท๊ฒฐ๋ฉ๋๋ค.
์๋น์ค๊ฐ ๋๊ธฐ์ด์์ ๋ฉ์์ง๋ฅผ ์ฝ์ด์ผ ํ๋ ๊ฒฝ์ฐ ์ด์ ํ ์คํธ ๋จ๊ณ์์ ์ด ๋ฉ์์ง๋ฅผ ๋๊ธฐ์ด์ ๊ธฐ๋กํ์ต๋๋ค.
ํ ์คํธ ์ค์ธ ๋ง์ดํฌ๋ก์๋น์ค์์ ๋ฐ์ํ๋ HTTP ์์ฒญ ํ ์คํธ
์ผ๋ถ ์๋น์ค๋ AWS๊ฐ ์๋ ๋ค๋ฅธ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ HTTP๋ฅผ ํตํด ์๋ํ๋ฉฐ ์ผ๋ถ AWS ๊ธฐ๋ฅ์ LocalStack์์ ๊ตฌํ๋์ง ์์ต๋๋ค.
๊ฒฐ์ : ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋์์ด ๋ ์ ์์ต๋๋ค
OAuth ์ธ์ฆ ๋ฐ ์น์ธ ํ ์คํธ
์ฐ๋ฆฌ๋ OAuth๋ฅผ ์ฌ์ฉํ๊ณ
์๋น์ค์ OAuth ๊ณต๊ธ์ ๊ฐ์ ๋ชจ๋ ์ํธ ์์ฉ์ ๋ ๊ฐ์ง ์์ฒญ์ผ๋ก ๊ท๊ฒฐ๋ฉ๋๋ค. ๋จผ์ ๊ตฌ์ฑ์ด ์์ฒญ๋ฉ๋๋ค. /.์ ์๋ ค์ง/openid-๊ตฌ์ฑ, ๊ตฌ์ฑ์ ์ฃผ์์์ ๊ณต๊ฐ ํค(JWKS)๊ฐ ์์ฒญ๋ฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ์ ์ ์ฝํ ์ธ ์ ๋๋ค.
๊ฒฐ์ : ์ฐ๋ฆฌ์ ํ ์คํธ OAuth ๊ณต๊ธ์๋ ์ ์ ์ฝํ ์ธ ์๋ฒ์ ์ฌ๊ธฐ์ ๋ ๊ฐ์ ํ์ผ์ด ์์ต๋๋ค. ํ ํฐ์ ํ ๋ฒ ์์ฑ๋์ด Git์ ์ปค๋ฐ๋ฉ๋๋ค.
SignalR ํ ์คํธ์ ํน์ง
Postman์ ์น์์ผ์์ ์๋ํ์ง ์์ต๋๋ค. SignalR์ ํ ์คํธํ๊ธฐ ์ํด ํน๋ณํ ๋๊ตฌ๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค.
SignalR ํด๋ผ์ด์ธํธ๋ ๋จ์ํ ๋ธ๋ผ์ฐ์ ์ด์์ ์ญํ ์ ํ ์ ์์ต๋๋ค. .NET Core์๋ ์ด์ ๋ํ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. .NET Core๋ก ์์ฑ๋ ํด๋ผ์ด์ธํธ๋ ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ์ธ์ฆ์ ๋ฐ์ ํ ํน์ ๋ฉ์์ง ์ํ์ค๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์๊ธฐ์น ์์ ๋ฉ์์ง๊ฐ ์์ ๋๊ฑฐ๋ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด ํด๋ผ์ด์ธํธ๋ ์ฝ๋ 1๋ก ์ข ๋ฃ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์์๋ ๋ฉ์์ง๊ฐ ์์ ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ์ฝ๋ 0์ผ๋ก ์ข ๋ฃ๋ฉ๋๋ค.
Newman์ ํด๋ผ์ด์ธํธ์ ๋์์ ์์ ํฉ๋๋ค. ๋ฉ์์ง๊ฐ ํ์ํ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ฉ์์ง๊ฐ ์ ๋ฌ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ์์๋ฉ๋๋ค.
์ฌ๋ฌ ํด๋ผ์ด์ธํธ๋ฅผ ์คํํ๋ ค๋ฉด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค. --๊ท๋ชจ docker-compose ๋ช ๋ น์ค์์.
์คํํ๊ธฐ ์ ์ Postman ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ์ค์ ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆฌ๋ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ํ์ง๋ง ์๋ฒ๊ฐ ์์๊ณ ์ฌ๊ธฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ต๋๋ค. ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค.
๊ฒฐ์ : ์ปจํ
์ด๋์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค.
HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi
ํ ๋์ปค ๊ฒ์ฌ ์ปจํ ์ด๋์ ์ ์ ์ํ, ์ํ ๋ฐ ์ข ๋ฃ ์ฝ๋๋ฅผ ํ์ํฉ๋๋ค.
Newman์ด ์๋ฃ๋๋ฉด ์คํฌ๋ฆฝํธ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ ๋ชจ๋ ์ปจํ ์ด๋๊ฐ ์ฝ๋ 0์ผ๋ก ์ข ๋ฃ๋์๋์ง ํ์ธํฉ๋๋ค.
ํดํผ๋ค์ค๊ฐ ์กด์ฌํ๋ค
์์์ ์ค๋ช ํ ์ด๋ ค์์ ๊ทน๋ณตํ ํ ์ผ๋ จ์ ์์ ์ ์ธ ์คํ ํ ์คํธ๋ฅผ ๊ฑฐ์ณค์ต๋๋ค. ํ ์คํธ์์ ๊ฐ ์๋น์ค๋ ๋จ์ผ ๋จ์๋ก ์๋ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ Amazon LocalStack๊ณผ ์ํธ ์์ฉํฉ๋๋ค.
์ด๋ฌํ ํ ์คํธ๋ ์์ฃผ ๋ฐฐํฌ๋๋ 30๊ฐ ์ด์์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ณต์กํ ์ํธ ์์ฉ์ ํตํด 10๋ช ์ด์์ ๊ฐ๋ฐ์๋ก ๊ตฌ์ฑ๋ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ฅ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค.
์ถ์ฒ : habr.com