๐Ÿค”

Infra ๊ตฌ์„ฑ

โœ๏ธ
๊ทน๋ฝ์ด๋“ค์˜ CleanCode ๊ฐ€์ด๋“œ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. โ‡’ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ๋ฉด ๋ฐ์ด๋น„( )์—๊ฒŒ ์งˆ๋ฌธํ•ด์ฃผ์„ธ์š”!
Infra ๊ตฌ์„ฑ์„ ์œ„ํ•ด ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Back-End Infra Architecture

notion image

๊ตฌ์„ฑ

  • Github actions (java with gradle)
  • AWS S3
  • AWS RDS
  • AWS EC2 (Ubuntu 20.04 LTS)
  • AWS Code Deploy
  • Docker
  • NGINX
  • AWS Certificate Manager
  • AWS Route 53
  • AWS Elastic Load Balancer (Application Load Balancer L7)

๋ฐฐํฌ ์ˆœ์„œ

main branch๋กœ push ํ–ˆ์„ ๋•Œ์˜ ๋ฐฐํฌ ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
  1. Github Repository์˜ main branch๋กœ push๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
  1. github action์— ์ ์šฉ๋œ Java with Gradle workflow๊ฐ€ ์‹คํ–‰๋˜๊ณ  build๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  1. build๋œ ๊ฒฐ๊ณผ๋ฌผ jar ํŒŒ์ผ์„ AWS S3์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  1. Code Deploy๋ฅผ ํ†ตํ•ด ec2 instance์— ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” docker conatiner๋กœ Spring Boot๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ ‘๊ทผ

  1. ๋ฐฐํฌ ์„œ๋ฒ„
    1. Client ๋Š” https://api.jungdam.tk ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
    2. Route 53์— ์ ์šฉ๋œ HTTPS ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜์—ฌ HTTPS ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
    3. Application Load Balancer๋ฅผ ํ†ตํ•ด ec2 instance๋กœ ๋ผ์šฐํŒ… ๋˜๊ณ  ์›ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์‘๋‹ต ๋ฐ›์Šต๋‹ˆ๋‹ค.
  1. ํ…Œ์ŠคํŠธ ์„œ๋ฒ„
    1. Client๋Š” https://test-api.jungdam.tk ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
    2. Route 53์— ์ ์šฉ๋œ HTTPS ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜์—ฌ HTTPS ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
    3. Application Load Balancer๋ฅผ ํ†ตํ•ด ec2 instance๋กœ ๋ผ์šฐํŒ… ๋˜๊ณ  ์›ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์‘๋‹ต๋ฐ›์Šต๋‹ˆ๋‹ค.
 

๐Ÿ“ TODO

CI/CD

Spring Boot (Gradle) Repository ๋งŒ๋“ค๊ธฐ
Github Actions ๋งŒ๋“ค๊ธฐ โ† ํ”„๋กœ์ ํŠธ Repo ์—๋„ ์ ์šฉํ•ด์•ผํ•จ
AWS IAM์„ ์ƒ์„ฑํ•˜์—ฌ ์™ธ๋ถ€ ์ ‘๊ทผ ํ—ˆ์šฉ
AWS S3 ์„ค์ • ํ›„, Github Secret ์„ค์ • โ† ํ”„๋กœ์ ํŠธ Repo ์—๋„ ์ ์šฉํ•ด์•ผํ•จ
Github Workflow์— s3๋กœ ๋ณด๋‚ด๋Š” job ์ ์šฉ
S3๋กœ ํŒŒ์ผ๋ณด๋‚ด๊ธฐ
AWS IAM ์—ญํ• ์„ ๋งŒ๋“ค์–ด S3 โ†” EC2 ์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ
์—ญํ•  ๋งŒ๋“ค๊ธฐ
EC2 ์ƒ์„ฑ
EC2 IAM ์—ญํ•  ์ˆ˜์ •
EC2 ์žฌ๋ถ€ํŒ…
EC2 instance์— codedeploy ์„ค์น˜ (aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2)
CodeDeploy๋ฅผ ์œ„ํ•œ IAM ์—ญํ•  ์ƒ์„ฑ
CodeDeploy Application ์ƒ์„ฑํ•˜๊ธฐ
๋ฐฐํฌ ๊ทธ๋ฃน ์ƒ์„ฑ
SpringBoot ํ”„๋กœ์ ํŠธ ํด๋”์— appspec.yml ์„ค์ •
ec2 ํ™˜๊ฒฝ์— ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ /home/ubuntu/app/deploy
github workflow deploy job ์ถ”๊ฐ€
Code Deploy ์„ค์ •ํ•˜์—ฌ ec2๋กœ ํŒŒ์ผ ์ „์†ก๊นŒ์ง€ ํ•ด๋ณด๊ธฐ

Docker Env

EC2 Docker ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์…‹ํŒ…
Code Deploy๋กœ ๋ถ€ํ„ฐ Docker Container ๋งŒ๋“ค์–ด ์‹คํ–‰์‹œ์ผœ๋ณด๊ธฐ

Request & Response

Route 53์— DNS๋“ฑ๋กํ•˜๊ธฐ
HTTPS ์ธ์ฆ์„œ ์ ์šฉ
NGINX Reverse Proxy Setting

More

RDS ์„ค์ •
S3 image ํŒŒ์ผ ์„ค์ •
Front End ์ •์ ํŒŒ์ผ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ Github workflow ์ ์šฉ