Skip to content

xgro/cloud_migration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d10bc21 ยท Aug 23, 2022

History

46 Commits
Aug 23, 2022
Aug 11, 2022
Aug 9, 2022
Aug 23, 2022

Repository files navigation

๐Ÿ“Œ Cloud Migration ๐Ÿ‘‹

License: ISC

๋Œ€๊ธฐ์—… A๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ ์„ค์น˜ ๋ฐ ์šด์˜๋˜๊ณ  ์žˆ๋Š” ์‚ฌ๋‚ด ์ •๋ณด ์‹œ์Šคํ…œ์„ ํด๋ผ์šฐ๋“œ๋กœ ์ด๊ด€ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋‚ด ์ •๋ณด ์‹œ์Šคํ…œ์˜ ๊ฐ€์žฅ ํฐ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ”๋กœ "JWT๋ฅผ ์ด์šฉํ•œ ํ†ตํ•ฉ ์ธ์ฆ ์ œ๊ณต"์ž…๋‹ˆ๋‹ค.

ํ•œํŽธ ๋Œ€๊ธฐ์—…์˜ ํŠน์„ฑ ์ƒ, ๊ฐ ๋ถ€์„œ๋งˆ๋‹ค ๋ณ„๋„๋กœ ์šด์˜๋˜๋Š” ์‹œ์Šคํ…œ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์žฌ๊ณ ๊ด€๋ฆฌ ํŒ€์€ ์ œํ’ˆ์˜ ์žฌ๊ณ ๋ฅผ ์กฐํšŒ/์ˆ˜์ •ํ•˜๋Š” API ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์‚ฌ๋‚ด ์ •๋ณด ์‹œ์Šคํ…œ ์•ˆ์— ์žฌ๊ณ  ๊ด€๋ฆฌํŒ€์˜ ๊ธฐ๋Šฅ์ด ๋ชจ๋†€๋ฆฌํ‹ฑ์œผ๋กœ ํ•จ๊ป˜ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์กฐ์ง์˜ ํ™•์žฅ์œผ๋กœ ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊ฐˆ์ˆ˜๋ก ํž˜๋“ค์–ด์ง์— ๋”ฐ๋ผ ๋„๋ฉ”์ธ ๋ณ„๋กœ ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

๋‹ค๋งŒ, ์ธ์ฆ์€ ์‚ฌ๋‚ด ์ •๋ณด ์‹œ์Šคํ…œ์˜ ํ†ตํ•ฉ ์ธ์ฆ ๊ณผ์ •์„ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์ณ์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.



๐Ÿ“Œ API DOCS

SwaggerHub

Redocs

๐Ÿ“Œ Architecture

architec

๐Ÿ‘‰ Monolitic ์„œ๋ฒ„__ /Monolithic

  • ๋ณ„๋„์˜ VPC ๋ฐ Private Subnet ๋ฐฐ์น˜

  • Private EC2์—์„œ ์™ธ๋ถ€ ์ธํ„ฐ๋„ท๊ณผ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ, NAT Gateway ์‚ฌ์šฉํ•จ.

  • ํ—ˆ๊ฐ€๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ด Private EC2๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.

โœ… CI/CD

aws_CodeDeploy๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•

ใ…‡

โ‰๏ธ How it works

  1. Github main branch์— ์‚ฌ๋‚ด ์ •๋ณด ์‹œ์Šคํ…œ Push ๋˜๋Š” pull request
  2. AWS CodePipeline ํŠธ๋ฆฌ๊ฑฐ ๋˜๋ฉฐ ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰
  3. stop.sh ์Šคํฌ๋ฆฝํŠธ์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋จ
  4. aws_CodeDeploy ์„ค์ •์— ๋”ฐ๋ผ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋ฐฐํฌ ๋˜๊ณ  initialize.sh ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•จ.
  5. ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด start.sh์— ๋”ฐ๋ผ pm2 ๋งค๋‹ˆ์ €๊ฐ€ ์‹คํ–‰๋˜์–ด ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•จ.




๐Ÿ‘‰ ์ œํ’ˆ ๊ด€๋ฆฌ API__ /product

  • ์ œํ’ˆ ๊ด€๋ฆฌ API ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์ถ•

  • ์ดˆ๊ธฐ ๊ตฌ์ถ•์€ ECS Fargate๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ, ์ถ”ํ›„ EKS ๊ณ ๋ ค

  • ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋“ค์€ ๋ชจ๋‘ Private Subnet ๋ฐฐ์น˜

  • Private ํ™˜๊ฒฝ์—์„œ AWS ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด VPC ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ด์šฉํ•จ

โœ… CI/CD

Github Action์„ ์ด์šฉํ•˜์—ฌ CI/CD ๊ตฌ์ถ•

ใ…‡ใ…‡ใ…‡

โ‰๏ธ How it works

  1. Github Release
  2. Github Action์ด ํŠธ๋ฆฌ๊ฑฐ ๋˜๋ฉฐ AWS ECS์— ๋ฐฐํฌ ์‹œ์ž‘
  3. Dockerfile์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  AWS ECR์— ์ด๋ฏธ์ง€๋ฅผ push
  4. TaskDefinition์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๊ฐ€ ์ ์šฉ๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ ์šฉ๋œ ECS ์„œ๋น„์Šค ์—…๋ฐ์ดํŠธ
  5. ๋ฐฐํฌ ์ „๋žต์— ๋”ฐ๋ผ์„œ ๋ฐฐํฌ๊ฐ€ ์‹œ์ž‘๋จ
  6. ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•จ.




๐Ÿ‘‰ Terraform__ /infra

  • ํ…Œ๋ผํผ์„ ์ด์šฉํ•˜์—ฌ IaC๋กœ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌ

  • EC2๋Š” ๊ธฐ์กด EC2 ํ™˜๊ฒฝ์—์„œ ์ œ์ž‘๋œ AMI๋ฅผ ์ด์šฉํ•ด์„œ ๋ณต์›ํ•จ

  • RDS๋Š” ์Šค๋ƒ…์ƒท์„ ์ด์šฉํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ๋ณต์›ํ•จ

โœ… CI/CD

Github Action์„ ์ด์šฉํ•˜์—ฌ ์ธํ”„๋ผ ๊ด€๋ฆฌ

ํ…Œ๋ผํผ ๋ฐฑ์—”๋“œ๋ฅผ S3 ๋ฐ DynamoDB๋ฅผ ์‚ฌ์šฉํ•จ.

tf

โ‰๏ธ How it works

  1. Github release
  2. Github Action์ด ํŠธ๋ฆฌ๊ฑฐ ๋˜๋ฉฐ ์ธํ”„๋ผ ๊ด€๋ฆฌ ์‹œ์ž‘
  3. AWS credentials๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐœํ–‰๋œ ์•ก์„ธ์Šค ํ‚ค์— ๋Œ€ํ•ด์„œ ์ ‘์†ํ•˜์—ฌ ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•จ.
  4. S3, DynamoDB๋กœ ๋ถ€ํ„ฐ tfstate ๋ฐ lock ํŒŒ์ผ์„ ์ฐธ์กฐํ•จ
  5. terraform init์ด ์‹คํ–‰๋˜๋ฉฐ ์ธํ”„๋ผ ์ƒ์„ฑ์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ด
  6. terraform plan์ด ์‹คํ–‰๋˜๋ฉฐ ํ‘ธ์‰ฌ๋œ ํ…Œ๋ผํผ ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ์ธํ”„๋ผ๊ฐ€ ๊ตฌ์ถ•๋  ๊ฒƒ์ธ์ง€ ํ™•์ธํ•จ.
  7. ์ด์ƒ์ด ์—†๋‹ค๋ฉด, terraform apply -auto-approve -input=false๊ฐ€ ์‹คํ–‰๋˜์–ด ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•จ.




๐Ÿ“Œ Feature

๐Ÿ‘‰ ์œ ์ € ๊ด€๋ฆฌ

์œ ์ € ๊ด€๋ฆฌ ๋ฐ ํ† ํฐ ๋ฐœํ–‰์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋กœ๊ทธ์ธ

DB๋กœ ๋ถ€ํ„ฐ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์œ ์ € ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํ† ํฐ์„ ๋ฐœํ–‰ํ•œ๋‹ค.

jwt token ๊ฒ€์ฆ

login api ์š”์ฒญ์œผ๋กœ ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜๋œ token ์ •๋ณด์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ณ , ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ํšŒ์›๊ฐ€์ž…

์š”์ฒญ๋œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ DB์— ํšŒ์› ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.


๐Ÿ‘‰ ์ œํ’ˆ ๊ด€๋ฆฌ

ํ•ด๋‹น API๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ ์ €๊ด€๋ฆฌ API๋กœ ๋ถ€ํ„ฐ ๋ฐœํ–‰๋œ JWT ํ† ํฐ์ด ํ•„์š”ํ•˜๋‹ค.

์ œํ’ˆ ์ „์ฒด ๋ชฉ๋ก ์กฐํšŒ

DynamoDB๋กœ ๋ถ€ํ„ฐ ์ œํ’ˆ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ œํ’ˆ ์ผ๋ถ€ ๋ชฉ๋ก ์กฐํšŒ

DynamoDB๋กœ ๋ถ€ํ„ฐ ์ œํ’ˆ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ œํ’ˆ ๋“ฑ๋ก

DynamoDB์— ์š”์ฒญ๋œ ์ œํ’ˆ์„ ๋“ฑ๋กํ•œ๋‹ค.

์ œํ’ˆ ์ˆ˜์ •

DynamoDB์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ œํ’ˆ์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.

์ œํ’ˆ ์‚ญ์ œ

DynamoDB์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ œํ’ˆ์˜ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

About

migration on-premise server to aws cloud

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published