์ ๋๋ก ์ดํดํ๋ AWS ์๋ฒ ๋ฐฐํฌ!
์ฝ๊ฒ, ๋ ๊ฒฌ๊ณ ํ๊ฒ ์๋ ค๋๋ฆด๊ฒ์.
๋จ์ AWS ECS & Docker ํํฐ๋ฆฌ์ผ์ด ์๋๋๋ค!
์ ํต์ ์ธ VM์ ๋ฐฐํฌํ๋ฉด์ ๋ถํธํจ์ ์ง์ ๊ฒฝํํ๊ฒ ๋ฉ๋๋ค. ์ฆ, Why๋ฅผ ๋ช
ํํ ์ดํดํ๊ณ ECS & Docker๋ฅผ ์ ๋๋ก ํ์ตํ ์ ์์ต๋๋ค ๐
AWS ๋์
, ์ ์์ํ ๊น์? ๐ฅ
์ฌ๋ฌ๋ถ, ํน์ AWS ํด๋ผ์ฐ๋๋ฅผ ์ฌ์ฉํด๋ณด๋ ค๋ค๊ฐ ๋ง๋งํ ๊ธฐ๋ถ์ด ๋ค์ด๋ณธ ์ ์์ผ์ ๊ฐ์? AWS ์์๋ ์๋ฒ ๋ฐฐํฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋๋ฌด ๋ค์ํ์ฃ . ๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค ๊ฐ๊ฐ ์ค์ ๋ ๋ค์ํฉ๋๋ค. ๊ทธ๋ฅ ๊ฐ๋ฐํ ์ฝ๋๋ฅผ ๊ฒฌ๊ณ ํ๊ฒ, ์ ๋ ดํ๊ฒ, ์์ ํ๊ฒ ๊ทธ๋ฆฌ๊ณ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ๊ณ ์ถ์ ๋ฟ์ธ๋ฐ์. ์์ํ ์ค์ ๋ค์ด ๋๋ฌด ๋ง์ฃ .
- VPC?! Subnet์ ๋ ๋ญ์ง?
- Availabiliy Zone?
- Security group์ ๋ ๋ญ๊น... ์ธ๋ฐ์ด๋? ์ด๊ฑด ๊ทธ๋ฅ ๋ชจ๋ IP ํ์ฉํ๋ฉด ๋๋ ๊ฑฐ๊ฒ ์ง?
- ํ๊ฒฝ๋ณ์๋ ์ฌ๊ธฐ์ ๋๋ฉด ์์ ํ๊ฒ ์ง?
- IAM์ ๋ ๋ญ์ผ! ๊ทธ๋ฅ AdminAccess ์ฃผ๋ฉด ๋๋ ๊ฑฐ ์๋๊ฐ?
- Load balancer๋ ๋ ๋ญ์ง? Listener rules, Target groups ์ค์ ํด์ฃผ๊ธฐ...
๊ฒจ์ฐ๊ฒจ์ฐ ๋ฐฐํฌํ๋๋ฐ ํ๋ค ๋ณด๋ ์ด๋ฐ ์ง๋ฌธ์ ํ๊ฒ ๋ ์ ๋ ์์ง ์์ผ์ ๊ฐ์?
- ๋ฐฐํฌ ์๋ํ๋ ์ด๋ป๊ฒ ํ์ง? CI/CD? CI๋ ๋ญ๊ณ CD๋ ๋ ๋ญ์ผ?
- ํด๋ผ์ฐ๋ ์ฐ๋ฉด Auto Scaleํ ์ ์๋ค๋๋ฐ ์ด๋ป๊ฒ ํ๋ ๊ฑฐ์ง?
- ๊ฐ์์๋ฒ(Virtual Machine)์ Container ์ฐจ์ด๊ฐ ์ ํํ ๋ญ์ง?
- ์ ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฑฐ์ง? Container Orchestration์ ๋ ๋ญ๊น?
- Kubernetes vs Elastic Container Service (AWS ECS), ๋ญ๊ฐ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ์ด.
- ๋์ปค๋ ์๊ฒ ๋๋ฐ Docker-compose๋ ๋ ๋ญ์ง? ์ด๊ฒ๋ ์์์ผ ํ ๊น?
- ๊ทธ๋ฅ Fly.io, Vercel, Heroku ๊ฐ์ด "์ฌ์ด" ํด๋ผ์ฐ๋ ์จ๋ฒ๋ฆฌ๋ฉด ์ ๋ ๊น? ๋ฌผ๋ก ์ข๋ ๋น์ธ๊ฒ ์ง๋ง, ๋ด ์๊ฐ์ ๋ง์ด ์ ์ฝํด์ฃผ์ง ์์๊น?
์๋น์ค ๊ฐ๋ฐ์ ์ง์คํ๊ณ ์ถ์ ๋ง์์ด ์์๋ค๋ณด๋ AWS ๋์
์ ํฌ๊ธฐํ๊ฑฐ๋, ์ด๋ป๊ฒ๋ ์ ๋นํ ์๋ํ๋๋ก ์ค์ ๋ค์ ๋์ถฉ ๋๊ธฐ๋ ๊ฒฝํ์ ๋๋ถ๋ถ ํด๋ณด์
จ์ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ฌธ์ ๋ ์๋ชปํ๋ฉด ๋น์ฉ ํญํ ๊ทธ๋ฆฌ๊ณ ์น๋ช
์ ์ธ ๋ณด์ ๋ฌธ์ ์ ๋
ธ์ถ๋ ์ ์์ด์. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฉ์ฑ์ด ๋์ ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์์๋ ๋ถ๊ตฌํ๊ณ ์ด๋ฐ ํด๋ผ์ฐ๋ ์ด์ ๋ค์ ์ฌ์ฉํ์ง ๋ชปํ๊ณ ์์ ์๋ ์์ด์.
๊ฐ์ฉ์ฑ์ด ๋์ ์๋ฒ๋ ๋งค์ฐ ์ค์ํด์. ํนํ ์๋น์ค๊ฐ ์ปค์ง๋ฉด ์ปค์ง์๋ก์. ์์ฐ์ฌํด๊ฐ ๋ฐ์ํด์ ๋ฐ์ดํฐ ์ผํฐ๊ฐ ์์ ๋ค์ด์ด ๋๋๋ผ๋ ์๋น์ค๋ฅผ ์ ์งํ ์ ์๊ฑฐ๋ ์!
์ด ๊ฐ์๋ก ๋ง์ ๋ถ๋ค์ด AWS๋ฅผ ์ ๋๋ก ์ดํดํ๊ณ ์ฝ๊ฒ ์ฌ์ฉํ์ผ๋ฉด ํฉ๋๋ค.
์๋๋ Docker & AWS ECS๋ง ๋ค๋ฃจ๋ ๊ฐ์๋ฅผ ์ ์ํ๋ ค๊ณ ํ์ด์. ํ์ง๋ง ๊ทธ๋ฌ๋ฉด ๋๋ฌด ๋ฒ๊ฒ๊ฒ ๋๊ปด์ง์ค ์๋ ์๊ณ ์ ์ด๋ฐ ๊ธฐ์ ์ด ํ์ํ๋์ง ์ดํด๊ฐ ์ด๋ ต๊ฒ ๋ค๋ผ๋ ์๊ฐ์ด ๋ค์์ด์. ๊ทธ๋์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๊ฐ์๋ฅผ ํฌ๊ฒ ๋ ํํธ๋ก ๋๋ด์ต๋๋ค.
์ฒซ ํํธ๋ "์ ํต์ ์ธ ๊ฐ์์๋ฒ๋ฅผ ์ด์ฉํ ๊ฒฌ๊ณ ํ ๋ฐฐํฌ ๋ฐฉ๋ฒ"์ ๋ค๋ฃจ์์ด์.
EC2 ๋์ Lightsail์ ์ด์ฉํด์ ์ต๋ํ ์ฝ๊ฒ ์ค๋ช
ํ๋ ค๊ณ ๋
ธ๋ ฅํ์ด์. ์ด ๊ณผ์ ์์ ์๋ฒ ๋ฐฐํฌ์ ์์ด ์ค์ํ ๊ฐ๋
๋ค์ ๋ค๋ฃน๋๋ค.
- ์ํ ํ์ฅ vs ์์ง ํ์ฅ
- Stateless vs Statefull
- High Availability (๊ณ ๊ฐ์ฉ์ฑ) & Availability Zones
- Private Network & Firewall
- Load balancer & HTTPS
- SSH ํฐ๋๋ง
- ๋ฐฐํฌ ์๋ํ : ํ์ ์ํ Pull Request ๊ธฐ๋ฐ CI/CD & ์๋ก ๊ฐ๋ฐ์๋ฅผ ์ํ CI/CD
- CI๋ฅผ ์ํ ํ
์คํธ & ๋น๋ ๊ณผ์ ๋ค๋ฃจ๊ธฐ
- ํ๊ฒฝ๋ณ์ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ
์ดํ ๊ฐ์ ์๋ฒ์ ์์ฌ์ด ์ ๋ค์ด ๋ฌด์์ธ์ง ๋์ง์ด๋ด
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ปจํ
์ด๋ ๊ธฐ์ ์ด ์ด๋ป๊ฒ ์ด ๋ฌธ์ ๋ฅผ ๊ฐ์ ํด์ฃผ๋์ง ์์๋ด
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ํํธ์์๋ Docker Container์ ๊ธฐ๋ณธ๊ธฐ๋ถํฐ ๋ํ์ ์ธ Container Orchestration ๊ธฐ์ ์ธ AWS Elastic Container Service (ECS)๋ฅผ ์ง์ค์ ์ผ๋ก ๋ค๋ฃจ๊ฒ ๋ผ์.
์๋๋ ๊ฐ์์์ ์ฐ์ด๋ ์ผ๋ถ ์๋ฃ๋ค์
๋๋ค :)
Q&A ๐๐ปโโ๏ธ
Q. Kubernetes๋ฅผ ๋๋๊ณ ECS๋ฅผ ๋ฐฐ์์ผ ํ ๊น์?
์ ๋ ๋๋ต 5๋
์ ๋ถํฐ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์จ๋ดค์ต๋๋ค. MSA๋ฅผ ๋์
ํ๋ฉด์ ์ง์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ์ฌ์ ๋์
ํ์ด์. ๊ทธ ๋๋ K8S, ECS ์ฌ์ด์ ๊ณ ๋ฏผํ์๋๋ฐ์. ์คํ์์ค๋ผ๋ ์ ์ด ๋งค๋ ฅ์ ์ด์ด์ ๋น์์๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์ดํ ์ฐฝ์
ํ ํ์ฌ์์๋ ๊ณ ๋ฏผ ๋์ ECS๋ฅผ ์ฌ์ฉํ์ด์. ECS๊ฐ ์คํ์์ค๊ฐ ์๋ ๋์ ์ข ๋ ์ฌ์ฉํ๊ธฐ ํธํ๋ค๋ ๋๋์ ๋ฐ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ๋ vendor-lock ๋ฌธ์ ๊ฐ ์๊ฐ๋ณด๋ค ๋งค์ฐ ์๋ค๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋์ต๋๋ค. ์ด์ฐจํผ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ ECS๋ฅผ ์ฌ์ฉํ๋ ๋ ๋ค ๊ฐ์ docker container๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์. ๋ชจ๋ ์ฝ๋๋ ๋์ผํ ๋์ปค ํ๊ฒฝ์์ ์์ฑ๋๋ ๊ฑฐ์ฃ . AWS์์๋ ECS๊ฐ ์กฐ๊ธ ๋ ์ ๋ ดํ๊ธฐ๋ ํ๊ณ DX๊ฐ ์กฐ๊ธ์ด๋ผ๋ ๋ ํธํ ECS๊ฐ ๋งค๋ ฅ์ ์ด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ K8S, ECS ๋๋ค Container Orchestration ๊ธฐ์ ์
๋๋ค. ์ฆ, ํ๋๋ง ์ ํ์๋ฉด ๋ค๋ฅธ ๊ธฐ์ ๋ก ์ ํํ๋๊ฑด ์๊ฐ๋ณด๋ค ๋งค์ฐ ์ฝ์ต๋๋ค.
Q. AWS Lambda ๊ฐ์ Serverless๋ ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
๋ถ๋ช
์ข์ ๊ธฐ์ ์ด๊ณ ์ ๊ฐ ๋ง๋ ์ด๋ฏธ์ง ์
๋ก๋ ๊ฐ์์์๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ํน์ ์ํฉ์ด ์๋๋ผ๋ฉด ์ผ๋ฐ์ ์ธ ์๋ฒ์ฉ์ผ๋ก๋ ์ ํฉํ์ง ์๋ค๊ณ ์๊ฐํด์. ๋งค์ฐ ์ ๋ ดํด ๋ณด์ด์ง๋ง ํธ๋ํฝ์ด ์ฆ๊ฐํ๋ฉด ์ด๋ ์๊ฐ๋ถํฐ ํจ์ฌ ๋น์ธ์ง๋๋ค. vendor-lock์ ์ทจ์ฝํด์ง ๊ฐ๋ฅ์ฑ๋ ๋์์ ๋์ค์ ์ผ๋ฐ์ ์ธ ์๋ฒ๋ก ์ด์ ํ๋๊ฒ ๋น๊ต์ ์ด๋ ค์ธ ์ ์์ด์.
๋ฌด์๋ณด๋ค ๋๋ค๋ ์งง์ ์๊ฐ ๋์ ์ด์ ์๋ ์๋ฒ์ด๊ธฐ ๋๋ฌธ์ ์น์์ผ ์๋ฒ๋ฅผ ๋ง๋ค๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ AWS Lambda๋ฅผ ์ฌ์ฉํ๊ณ ์๋ Vercel๋ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ์น์์ผ์ ์ง์ ๋ชปํ๋ ์ธ๋ถ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ํฉ๋๋ค. ๊ทธ ์ธ ๋๋น ์ปค๋ฅ์
ํ ๊ด๋ฆฌ๋ผ๋ ์ง ์ ๊ฒฝ์จ์ผํ ์ถ๊ฐ์ ์ธ ์ฌํญ๋ค์ด ๋ฐ์ํ ์ ์์ด์.
Q. Node.js ์์์ผ ํ๋์?
์๋๋๋ค! ์ด ๊ฐ์์์ ์ฒ์์ Node.js๋ก ๊ฐ๋จํ ๋ฐฑ์๋ (express app)์ ๋ง๋ค๊ธด ํฉ๋๋ค. ํ์ง๋ง ์ด๊ฑด ์์ํ ๋ฐฐํฌํ ์ฝ๋๊ฐ ํ์ํด์์
๋๋ค. ๊ทธ๋ฆฌ๊ณ CI ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ์ํ ๋๋ฏธ ํ
์คํธ ์ฝ๋์ ๋น๋ ๊ณผ์ ์ ์ถ๊ฐํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ์ฌ๊ธฐ์ ์์ฑํ Node.js ์ฝ๋๋ ๋ชจ๋ ์ ๊ณต๋๋ฉฐ ํด๋น ์น์
์ ์๋ตํ์
๋ ๋ฌด๋ฐฉํฉ๋๋ค.
Q. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Kafka ๊ฐ์ ๋ฉ์์ง ํ ๊ฐ์ statefulํ ์๋น์ค ๋ฐฐํฌ ๋ฐ ์๋ฒ ๊ด๋ฆฌ๋ ๋ฐฐ์ฐ๋์?
DB์ ๋ฉ์์ง ํ ๊ฐ์ ์ํ๊ฐ ์๋ ์๋น์ค๋ค์ ์๊ฐ๋ณด๋ค ๋ณต์กํ๊ณ ๋ง์ ๊ด๋ฆฌ๊ฐ ํ์ํ ์๋น์ค๋ค์
๋๋ค. ์ด ๊ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋ณต์กํ ์ธ๋ถ ์๋น์ค๋ณด๋ค๋ ์ฌ๋ฌ๋ถ๋ค์ด ๊ฐ๋ฐํ ์๋น์ค (๋ฐฑ์๋, ETL pipeline, SSR ์๋ฒ) ๋ฐฐํฌ์ ์ด์ ์ด ์กํ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ค๋ฃจ๋ ๋ด์ฉ์ด ๋ฌผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋ณต์กํ ์๋น์ค ๋ฐฐํฌ์๋ ํ์ํ ๋ด์ฉ์ด์ง๋ง DB๋ฅผ ์ง์ ๋ฐฐํฌํ๊ณ ์ถ์ผ์๋ฉด ๋ ๋ง์ ๊ณต๋ถ๋ฅผ ํ์
์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ (์นดํ์นด) ๊ฐ์ด ์ํ๊ฐ ์๋ (stateful) ์๋น์ค๋ค์ ๋งค๋์ง๋ ์๋น์ค๋ฅผ ๊ถ์ฅํฉ๋๋ค! ๋๋ถ๋ถ AWS ์์ฒด์์ ์ง์ํ๋ ๋ฉ๋์ง๋ ์๋น์ค๋ ์๊ณ ๊ฐ ์๋น์ค ํ์ฌ์์ ์ ๊ณตํ๋ ๋ฉ๋์ง๋ ํด๋ผ์ฐ๋๋ ์กด์ฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด Kafka ๊ฐ์ ๊ฒฝ์ฐ Confluent ํน์ AWS MSK, MongoDB ๊ฐ์ ๊ฒฝ์ฐ Atlas ํน์ AWS DocumentDB ์กด์ฌํฉ๋๋ค. ์๋น์ค๋ณ๋ก ์ด๋ฐ ๋ฉ๋์ง๋ ์๋น์ค๊ฐ ์ ์ด์ ์กด์ฌํ๋ ์ด์ ๋ ์ด๋ฐ ์๋น์ค๋ค์ ์๊ฐ ์ด์์ผ๋ก ์๋ฒ ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ด์์! ๊ทธ๋์ ์ด ๊ฐ์๋ฅผ ์๊ฐํ์๋๋ผ๋ ๊ฐ๊ธ์ ์ด๋ฉด ์ด๋ฐ stateful ์๋น์ค๋ค์ ๋ฉ๋์ง๋ ์๋น์ค๋ค์ ๊ถ์ฅํฉ๋๋ค!