์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

AWS ๋ฐฐํฌ ์™„๋ฒฝ๊ฐ€์ด๋“œ (feat. Lightsail, Docker, ECS)

์ด ๊ฐ•์˜์—์„œ๋Š” Container Orchestration ๋Œ€ํ‘œ๊ธฐ์ˆ ์ค‘ ํ•˜๋‚˜์ธ AWS ECS๋ฅผ ๋ฐฐ์šฐ๊ฒŒ๋ฉ๋‹ˆ๋‹ค! Github Action์œผ๋กœ CICD๋„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฒ˜์Œ๋ถ€ํ„ฐ ECS๋ฅผ ๋ฐฐ์šฐ์ง€ ์•Š์•„์š”. ECS๋Š” DevOps ๋ํŒ์™•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”. ๊ทธ๋ž˜์„œ ๊ฐ•์˜ ์ดˆ๋ฐ˜์—๋Š” ์ „ํ†ต์ ์ธ ๊ฐ€์ƒ์„œ๋ฒ„ ์ค‘์—์„œ๋„ ๋น„๊ต์  learning curve๊ฐ€ ๋‚ฎ์€ AWS Lightsail๋กœ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋จผ์ € ๋‹ค์ง‘๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฐฉ์‹์˜ ํ•œ๊ณ„์ ๊ณผ ๋ถˆํŽธํ•œ์ ๋“ค๋„ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๋ ‡๊ฒŒ ๊ธฐ๋ณธ๊ธฐ์™€ โ€œWhyโ€๋กœ ๋นŒ๋“œ์—…์„ ํ•ด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ Docker Container์™€ ECS๋ฅผ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐ๋ธŒ์˜ต์Šค ยท ์ธํ”„๋ผ, ๋ฐฑ์—”๋“œ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ์ „ํ†ต์ ์ธ ๊ฐ€์ƒ์„œ๋ฒ„ ๋ฐฐํฌ - AWS Lightsail

  • ๊ณ ๊ฐ€์šฉ์„ฑ - High Availability

  • Github Action์„ ํ™œ์šฉํ•œ CI/CD

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ  - Docker

  • Container Orchestration - AWS Elastic Container Service (ECS)

  • Cloud Security

  • Docker Compose - ๊น”๋”ํ•œ dev & test ํ™˜๊ฒฝ ๊ตฌ์ถ•

 ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋Š” 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 ์„œ๋น„์Šค๋“ค์€ ๋ฉ”๋‹ˆ์ง€๋“œ ์„œ๋น„์Šค๋“ค์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค!

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

  • DevOps ์—”์ง€๋‹ˆ์–ด

  • ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ๊ธฐ๋ณธ์ ์ธ ์›น ๊ฐœ๋ฐœ ๋ฐ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ดํ•ด

์•ˆ๋…•ํ•˜์„ธ์š”
๊น€์‹œํ›ˆ (๋„๋„์†Œํ”„ํŠธ)์ž…๋‹ˆ๋‹ค.

2,633

๋ช…

์ˆ˜๊ฐ•์ƒ

175

๊ฐœ

์ˆ˜๊ฐ•ํ‰

261

๊ฐœ

๋‹ต๋ณ€

4.7

์ 

๊ฐ•์˜ ํ‰์ 

3

๊ฐœ

๊ฐ•์˜

ํ˜„์žฌ ๊ณต๋™์ฐฝ์—…ํ•œ ์ž‘์€ ์Šคํƒ€ํŠธ์—… Ninjalerts์—์„œ CTO์—ญํ• ๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Ninjalerts๋Š” ์ด๋”๋ฆฌ์›€ ๋ธ”๋ก์ฒด์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ NFT ๊ฑฐ๋ž˜ ์ •๋ณด๋“ค์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ์„œ๋น„์Šค์—์š”!

์ „์— ๋งŒ๋‚˜์”จ์ด์—์ด์—์„œ ๊ฐœ๋ฐœ ํŒ€์žฅ์œผ๋กœ ์žˆ์—ˆ์–ด์š”. ์‹œ์ž‘์€ ๊ธฐํš์ž์˜€๋Š”๋ฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ถ€์กฑํ•œ ํƒ“์— ์™ธ์ฃผ๋ฅผ ๋งก๊ธฐ๋ ค๋‹ค๊ฐ€ ์ง์ ‘ ๊ฐœ๋ฐœํ•  ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ์šด ์ข‹๊ฒŒ ๊ฐœ๋ฐœ์ž๋กœ ์ „ํ–ฅํ–ˆ์–ด์š”. ์ดํ›„ ์ž์‚ฌ๋ชฐ์„ ์ž์ฒด ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ด์ปค๋จธ์Šค ๊ฐœ๋ฐœํŒ€์žฅ์„ ๋งก์•˜์–ด์š”.

์˜จ๋ผ์ธ์— ๋‚˜์˜จ ๋‹ค์–‘ํ•œ ์ข‹์€ ์ž๋ฃŒ๋“ค ๋•๋ถ„์— ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”. ์ œ ๋…ธํ•˜์šฐ๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„๋“ค์—๊ฒŒ๋„ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค :) Linkedin ํ”„๋กœํ•„

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

117๊ฐœ โˆ™ (14์‹œ๊ฐ„ 29๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

40๊ฐœ

4.8

40๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • frenchkebab๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    frenchkebab

    ์ˆ˜๊ฐ•ํ‰ 5

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๊ทธ๋ƒฅ ๋„ˆ๋ฌด ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.... ๋„์ปค ๋ฐ CI/CD์— ๋Œ€ํ•ด ๋ง‰์—ฐํ•œ ๊ณตํฌ๊ฐ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ ... ์™„์ „ํžˆ ์ž์‹ ๊ฐ์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์ตœ๊ณ ์˜ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

    • jay๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      jay

      ์ˆ˜๊ฐ•ํ‰ 1

      โˆ™

      ํ‰๊ท  ํ‰์  4.0

      4

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      ์ข‹์€ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ์ธํ”„๋ผ์— ๊ด€ํ•ด ๋“ค์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ฐ•์˜๊ฐ€ ๋๋‚˜๊ณ  ์‹œ๊ฐ„์ด ์ง€๋‚˜์„œ ๋ฆฌ๋ทฐํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ ๋‹ค์‹œ ๋“ค์–ด์•ผ ํ•˜๋Š” ์•„์‰ฌ์›€์ด ์žˆ๋„ค์š”. ๊ธฐ์–ต์„ ๋˜๋Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ๋ผ๋„ ๊ฐ•์˜์ž๋ฃŒ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

      • ์ข‹์€ ์˜๊ฒฌ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~ ๋‹ค์Œ ๊ฐ•์˜ ์ œ์ž‘ํ•  ๋•Œ ์ฐธ๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

    • ncc0816๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      ncc0816

      ์ˆ˜๊ฐ•ํ‰ 1

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      • ํ•˜์ด๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        ํ•˜์ด

        ์ˆ˜๊ฐ•ํ‰ 23

        โˆ™

        ํ‰๊ท  ํ‰์  4.5

        3

        100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        ์ปค๋ฆฌํ˜๋Ÿผ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ์„œ๋ฒ„์™€ ๋„์ปค๊นŒ์ง€ ํ•œ ๋ฒˆ์— ํ›‘์„ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•„์š”. ์ „๋ฐ˜์ ์œผ๋กœ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ ๊ฐœ๊ด„์ ์œผ๋กœ ํ›‘๊ณ  ์‹ถ์€ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœํ•ด์š”. ์–ด๋–ค ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๋„ํ‘œ๊ฐ™์€ ๊ฒƒ๋„ ๊ณต์œ ๋˜๋ฉด ๋” ์ข‹์•˜์„๊ฑด๋ฐ ์ด ๋ถ€๋ถ„์€ ์กฐ๊ธˆ ์•„์‰ฌ์šด ๋ถ€๋ถ„์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ ๋ญ ์ดํ•ด๋˜๋Š” ๋ถ€๋ถ„์ด๋ผ ๊ทธ๋ƒฅ ์•„์‰ฌ์šด ์ •๋„. ์ „๋ฐ˜์ ์œผ๋กœ ์ฆ‰์„์—์„œ ์„ค๋ช…ํ•˜๋ฉด์„œ ๊ฐ•์˜๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋А๋‚Œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ข€ ์„ค๋ช…์ด ์ •๋ฆฌ๊ฐ€ ์•ˆ ๋œ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐ๋  ๋•Œ๊ฐ€ ๋งŽ์•„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ๋งŽ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ž์„ธํžˆ ์•Œ๋ ค์ค€๋‹ค๊ณ  ํ•˜๊ณ ์„œ ์•ˆ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ๋“ค๋„ ์ข€ ์žˆ์–ด์š”. ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„ ๋•Œ๋ฌธ์— ๋Œ€๋ณธ์ด ์—†๊ณ  ์ฆ‰์„์—์„œ ์„ค๋ช…ํ•˜๋‚˜ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜์–ด๋ฅผ ์ข€ ๋งŽ์ด ์จ์„œ ๋ฌด์Šจ ๋ง์ด์ง€ ์‹ถ์„ ๋•Œ๊ฐ€ ์ข…์ข… ์žˆ์–ด์š”. ๋ง˜์— ๋“œ๋Š” ๋ถ€๋ถ„๋„ ํฌ๊ณ  ์•„์‰ฌ์›€๋„ ํฐ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

        • wonu U๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
          wonu U

          ์ˆ˜๊ฐ•ํ‰ 4

          โˆ™

          ํ‰๊ท  ํ‰์  5.0

          5

          64% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

          spring ๋ฐฑ์—”๋“œ ์ทจ์ค€์ƒ์ž…๋‹ˆ๋‹ค. node๋กœ ์ง„ํ–‰๋์Œ์—๋„ ์ „์ฒด์ ์ธ ๋งฅ๋ฝ์„ ์„ค๋ช…ํ•ด์ฃผ์…”์„œ spring์—๋„ ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™์•„์š”. ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ, ec2๋‚˜ beanstalk๋งŒ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ, ์•ž์œผ๋กœ๋Š” ์ €์—๊ฒŒ ๋งž๋Š” ๊ตฌ์„ฑ์„ ์ง์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ํž˜์ด ๊ธธ๋Ÿฌ์ง€๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค ๋‚จ์€ ๋ถ€๋ถ„๋„ ๋งˆ์ € ์ž˜ ๋“ฃ๊ฒ ์Šต๋‹ˆ๋‹ค ์ข‹์€ ๊ฐ•์˜ ์—ด์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํ–‰๋ณตํ•œ ์—ฐ๋ง๋˜์„ธ์š”~

          ๊น€์‹œํ›ˆ (๋„๋„์†Œํ”„ํŠธ)๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

          ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

          ๋น„์Šทํ•œ ๊ฐ•์˜

          ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

          ์—ฐ๊ด€ ๋กœ๋“œ๋งต

          ๊ฐ•์˜๊ฐ€ ํฌํ•จ๋œ ๋กœ๋“œ๋งต์œผ๋กœ ํ•™์Šตํ•ด ๋ณด์„ธ์š”!

          ์›” โ‚ฉ15,400

          5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

          โ‚ฉ77,000