cloud template - 100-hours-a-week/2-hertz-wiki GitHub Wiki

ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ - ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ๋ฐ IaC ์œ„ํ‚ค

๋ชฉ์ฐจ

์ธํ”„๋ผ ๊ฐœ์š”

ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž ๋ฐ ์ง€์—ญ

์ œ๊ณต์ž ์ฃผ์š” ๋ฆฌ์ „ ๋ณด์กฐ ๋ฆฌ์ „ ์šฉ๋„
AWS ap-northeast-2 us-west-2 ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ
AWS ap-northeast-1 - ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ
GCP asia-northeast3 - ๋ฐฑ์—… ์ €์žฅ์†Œ
# ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ - ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ๋ฐ IaC ์œ„ํ‚ค

[์šด์˜ ํ™˜๊ฒฝ ๋Œ€์‹œ๋ณด๋“œ](์—ฌ๊ธฐ์—_๋Œ€์‹œ๋ณด๋“œ_URL_์‚ฝ์ž…)

[์ธํ”„๋ผ ๋ ˆํฌ์ง€ํ† ๋ฆฌ](์—ฌ๊ธฐ์—_IaC_๋ ˆํฌ_URL_์‚ฝ์ž…)

์ธํ”„๋ผ ๊ฐœ์š”

ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž ๋ฐ ์ง€์—ญ

์ œ๊ณต์ž ์ฃผ์š” ๋ฆฌ์ „ ๋ณด์กฐ ๋ฆฌ์ „ ์šฉ๋„
AWS ap-northeast-2 us-west-2 ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ
AWS ap-northeast-1 - ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ
GCP asia-northeast3 - ๋ฐฑ์—… ์ €์žฅ์†Œ

์ฃผ์š” ์„œ๋น„์Šค ๊ตฌ์„ฑ

์„œ๋น„์Šค ๋ฒ„์ „/ํƒ€์ž… ๋ชฉ์  ๋น„์šฉ ์˜ˆ์ƒ
EKS 1.28 ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ $XXX/์›”
RDS MySQL 8.0 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค $XXX/์›”
S3 - ์ •์  ์ž์‚ฐ ์ €์žฅ $XXX/์›”
CloudFront - CDN $XXX/์›”
VPC - ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ $XXX/์›”

์ธํ”„๋ผ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ •์ฑ…

  • IaC ์ฝ”๋“œ๋Š” ๋ฒ„์ „๋ณ„๋กœ ํƒœ๊ทธ๋ฅผ ๋ถ€์—ฌํ•˜๋ฉฐ, ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์„ ๊ฒฝ์šฐ v1.x.x ํ˜•์‹์œผ๋กœ ๋ฒ„์ „์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  • ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์€ ํ•ญ์ƒ ํ…Œ์ŠคํŠธ๋œ ์•ˆ์ •์ ์ธ ๋ฒ„์ „๋งŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ PR ๋ฐ ์Šน์ธ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

์ „์ฒด ์•„ํ‚คํ…์ฒ˜

์ „์ฒด ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ

๋„คํŠธ์›Œํฌ ๋‹ค์ด์–ด๊ทธ๋žจ

VPC ๊ตฌ์„ฑ

๊ตฌ์„ฑ ์š”์†Œ ํ”„๋กœ๋•์…˜ ์Šคํ…Œ์ด์ง• ๊ฐœ๋ฐœ
VPC ์ด๋ฆ„ prod-main-vpc staging-main-vpc dev-main-vpc
VPC CIDR 10.0.0.0/16 10.1.0.0/16 10.2.0.0/16
๊ฐ€์šฉ ์˜์—ญ 3๊ฐœ (a, b, c) 2๊ฐœ (a, b) 1๊ฐœ (a)
ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท prod-public-subnet-1a (10.0.0.0/20)
prod-public-subnet-1b (10.0.16.0/20)
prod-public-subnet-1c (10.0.32.0/20)
staging-public-subnet-1a (10.1.0.0/20)
staging-public-subnet-1b (10.1.16.0/20)
dev-public-subnet-1a (10.2.0.0/20)
ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท (์•ฑ) prod-app-subnet-1a (10.0.64.0/20)
prod-app-subnet-1b (10.0.80.0/20)
prod-app-subnet-1c (10.0.96.0/20)
staging-app-subnet-1a (10.1.64.0/20)
staging-app-subnet-1b (10.1.80.0/20)
dev-app-subnet-1a (10.2.64.0/20)
ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท (๋ฐ์ดํ„ฐ) prod-data-subnet-1a (10.0.128.0/20)
prod-data-subnet-1b (10.0.144.0/20)
prod-data-subnet-1c (10.0.160.0/20)
staging-data-subnet-1a (10.1.128.0/20)
staging-data-subnet-1b (10.1.144.0/20)
dev-data-subnet-1a (10.2.128.0/20)
NAT ๊ฒŒ์ดํŠธ์›จ์ด prod-nat-1a, prod-nat-1b, prod-nat-1c staging-nat-1a, staging-nat-1b dev-nat-1a
์ธํ„ฐ๋„ท ๊ฒŒ์ดํŠธ์›จ์ด prod-igw staging-igw dev-igw
Transit Gateway prod-tgw (tgw-prod-01) staging-tgw (tgw-stage-01) ๋ฏธ์—ฐ๊ฒฐ
VPC ์—”๋“œํฌ์ธํŠธ prod-s3-endpoint, prod-dynamodb-endpoint,
prod-ecr-endpoint, prod-logs-endpoint
staging-s3-endpoint, staging-dynamodb-endpoint,
staging-ecr-endpoint
dev-s3-endpoint

VPC ๋„คํŠธ์›Œํฌ ํ๋ฆ„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   ์ธํ„ฐ๋„ท ๊ฒŒ์ดํŠธ์›จ์ด   โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚    ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚                                โ”‚
           โ”‚                                โ–ผ
           โ”‚                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
           โ”‚                      โ”‚   NAT ๊ฒŒ์ดํŠธ์›จ์ด    โ”‚
           โ”‚                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚                                โ”‚
           โ–ผ                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Transit Gateway   โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚  ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท(์•ฑ)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                           โ”‚
                                           โ–ผ
                                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                 โ”‚ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท(๋ฐ์ดํ„ฐ)โ”‚
                                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๋ณด์•ˆ ์•„ํ‚คํ…์ฒ˜

๋ณด์•ˆ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ๋„

๋ฆฌ์†Œ์Šค ํ”„๋กœ๋•์…˜ ์Šคํ…Œ์ด์ง• ๊ฐœ๋ฐœ
์ปดํ“จํŒ…
EKS ํด๋Ÿฌ์Šคํ„ฐ prod-eks-cluster (v1.28) staging-eks-cluster (v1.28) dev-eks-cluster (v1.28)
EKS ๋…ธ๋“œ ๊ทธ๋ฃน prod-eks-workers (m5.xlarge, 8-16๋Œ€) staging-eks-workers (m5.large, 4-8๋Œ€) dev-eks-workers (t3.medium, 2๋Œ€)
EC2 (๋ฐฐ์Šค์ฒœ ํ˜ธ์ŠคํŠธ) prod-bastion-host (c5.xlarge) staging-bastion-host (c5.large) dev-bastion-host (t3.small)
EC2 (๊ด€๋ฆฌ ์„œ๋ฒ„) prod-admin-server (c5.xlarge, 3๋Œ€) staging-admin-server (c5.large, 1๋Œ€) dev-admin-server (t3.small, 1๋Œ€)
Lambda ํ•จ์ˆ˜ prod-data-processor
prod-notifications
prod-auth-service
(๊ทธ ์™ธ 17๊ฐœ)
staging-data-processor
staging-notifications
staging-auth-service
(๊ทธ ์™ธ 12๊ฐœ)
dev-data-processor
dev-notifications
dev-auth-service
(๊ทธ ์™ธ 12๊ฐœ)
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
RDS ๊ธฐ๋ณธ ํด๋Ÿฌ์Šคํ„ฐ prod-main-db (db.r5.2xlarge, ๋‹ค์ค‘ AZ) staging-main-db (db.r5.large, ๋‹ค์ค‘ AZ) dev-main-db (db.t3.medium, ๋‹จ์ผ AZ)
RDS ๋ถ„์„์šฉ ํด๋Ÿฌ์Šคํ„ฐ prod-analytics-db (db.r5.2xlarge) - -
ElastiCache prod-redis-cluster (cache.r5.large, 3๋…ธ๋“œ) staging-redis (cache.r5.large, 2๋…ธ๋“œ) dev-redis (cache.t3.medium, 1๋…ธ๋“œ)
DynamoDB ํ…Œ์ด๋ธ” prod-sessions
prod-config
prod-cache
staging-sessions
staging-config
staging-cache
dev-sessions
dev-config
dev-cache
์Šคํ† ๋ฆฌ์ง€
S3 ๋ฒ„ํ‚ท prod-static-assets
prod-user-uploads
prod-logs
prod-backups
prod-artifacts
staging-static-assets
staging-user-uploads
staging-logs
dev-static-assets
dev-user-uploads
dev-logs
EBS ๋ณผ๋ฅจ prod-app-vol (gp3, 500GB)
prod-data-vol (io2, 1TB)
staging-app-vol (gp3, 200GB)
staging-data-vol (gp3, 500GB)
dev-app-vol (gp2, 100GB)
๋„คํŠธ์›Œํ‚น
ALB prod-external-alb
prod-internal-alb
staging-alb dev-alb
CloudFront prod-cf-main
prod-cf-assets
staging-cf -
Route53 prod.example.com
api.prod.example.com
staging.example.com
api.staging.example.com
dev.example.local
๋ณด์•ˆ
WAF prod-waf (ํ™œ์„ฑํ™”) staging-waf (ํ™œ์„ฑํ™”) -
Shield prod-shield (ํ‘œ์ค€) staging-shield (ํ‘œ์ค€) -
GuardDuty prod-guard-duty (ํ™œ์„ฑํ™”) staging-guard-duty (ํ™œ์„ฑํ™”) -
KMS ํ‚ค prod-ebs-key
prod-rds-key
prod-s3-key
staging-ebs-key
staging-rds-key
dev-key

๋ฆฌ์†Œ์Šค ํ™•์žฅ ๊ณ„ํš

  • ํ”„๋กœ๋•์…˜: ํ”ผํฌ ์‹œ๊ฐ„ ๋™์•ˆ EKS ๋…ธ๋“œ 16๋Œ€๊นŒ์ง€ ์ž๋™ ํ™•์žฅ (prod-eks-workers-scaling-policy)
  • ์Šคํ…Œ์ด์ง•: ํ•„์š” ์‹œ EKS ๋…ธ๋“œ 8๋Œ€๊นŒ์ง€ ์ˆ˜๋™ ํ™•์žฅ (staging-eks-scaling-request ํ‹ฐ์ผ“ ํ•„์š”)
  • ๊ฐœ๋ฐœ: ๊ณ ์ • ๋ฆฌ์†Œ์Šค (ํ•„์š” ์‹œ dev-resource-request ํ‹ฐ์ผ“์œผ๋กœ ์ˆ˜๋™ ์ฆ์„ค)

IaC ๊ตฌ์„ฑ

์‚ฌ์šฉ ๊ธฐ์ˆ  ์Šคํƒ

๋„๊ตฌ ๋ฒ„์ „ ์šฉ๋„
Terraform 1.5.x ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ํ”„๋กœ๋น„์ €๋‹
AWS CDK 2.x AWS ํŠนํ™” ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ
Ansible 2.15.x ์„œ๋ฒ„ ๊ตฌ์„ฑ ๊ด€๋ฆฌ
Packer 1.9.x ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์ž๋™ํ™”
Helm 3.12.x Kubernetes ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

/
โ”œโ”€โ”€ terraform/
โ”‚   โ”œโ”€โ”€ modules/
โ”‚   โ”‚   โ”œโ”€โ”€ networking/
โ”‚   โ”‚   โ”œโ”€โ”€ compute/
โ”‚   โ”‚   โ”œโ”€โ”€ database/
โ”‚   โ”‚   โ””โ”€โ”€ security/
โ”‚   โ”œโ”€โ”€ environments/
โ”‚   โ”‚   โ”œโ”€โ”€ prod/
โ”‚   โ”‚   โ”œโ”€โ”€ staging/
โ”‚   โ”‚   โ””โ”€โ”€ dev/
โ”‚   โ””โ”€โ”€ README.md
โ”œโ”€โ”€ ansible/
โ”‚   โ”œโ”€โ”€ roles/
โ”‚   โ”œโ”€โ”€ inventories/
โ”‚   โ””โ”€โ”€ playbooks/
โ”œโ”€โ”€ packer/
โ”‚   โ”œโ”€โ”€ base-images/
โ”‚   โ””โ”€โ”€ application-images/
โ”œโ”€โ”€ helm/
โ”‚   โ”œโ”€โ”€ charts/
โ”‚   โ””โ”€โ”€ values/
โ””โ”€โ”€ scripts/
    โ”œโ”€โ”€ bootstrap/
    โ””โ”€โ”€ utilities/

๋ชจ๋“ˆ ์„ค๋ช…

๋ชจ๋“ˆ ์„ค๋ช… ์˜์กด์„ฑ
networking VPC, ์„œ๋ธŒ๋„ท, ๊ฒŒ์ดํŠธ์›จ์ด ๊ตฌ์„ฑ ์—†์Œ
compute EKS, EC2, Auto Scaling ๊ตฌ์„ฑ networking
database RDS, DynamoDB ๋“ฑ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ networking, security
security IAM, ๋ณด์•ˆ ๊ทธ๋ฃน, KMS ๋“ฑ ๋ณด์•ˆ ์„ค์ • networking

ํ™˜๊ฒฝ ์„ค์ •

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ

  • AWS CLI v2.x
  • Terraform v1.5.x ์ด์ƒ
  • kubectl v1.26.x ์ด์ƒ
  • Docker v24.x ์ด์ƒ
  • AWS IAM ๊ถŒํ•œ: ์ตœ์†Œ ์š”๊ตฌ ๊ถŒํ•œ ๋ชฉ๋ก [๋งํฌ]

๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

# ํ•„์ˆ˜ ๋„๊ตฌ ์„ค์น˜ (macOS ์˜ˆ์‹œ)
brew install terraform aws-cli kubectl helm

# AWS ํ”„๋กœํ•„ ์„ค์ •
aws configure --profile project-name-dev

# ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋ก 
git clone https://github.com/your-org/infrastructure-repo.git
cd infrastructure-repo

# ์ดˆ๊ธฐํ™”
make init ENV=dev

ํ™˜๊ฒฝ๋ณ„ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ

  • .tfvars ํŒŒ์ผ์„ ํ™˜๊ฒฝ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ
  • ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” AWS Secrets Manager ๋˜๋Š” HashiCorp Vault์— ์ €์žฅ
  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ์ž…

๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ

CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ

CI/CD ๋‹ค์ด์–ด๊ทธ๋žจ

๋ฐฐํฌ ๋‹จ๊ณ„

  1. ์ฝ”๋“œ ํ‘ธ์‹œ: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜๊ณ  PR ์ƒ์„ฑ
  2. Terraform ์œ ํšจ์„ฑ ๊ฒ€์ฆ: terraform validate, terraform plan
  3. ๋ณด์•ˆ ๊ฒ€์‚ฌ: tfsec, checkov๋ฅผ ํ†ตํ•œ ์ฝ”๋“œ ์Šค์บ”
  4. ์Šน์ธ ๋‹จ๊ณ„: ์ธํ”„๋ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ˆ˜๋™ ์Šน์ธ
  5. ์ ์šฉ: terraform apply ์‹คํ–‰
  6. ๊ฒ€์ฆ: ์ธํ”„๋ผ Health Check, ์—ฐ๊ฒฐ์„ฑ ํ…Œ์ŠคํŠธ
  7. ์•Œ๋ฆผ: ๋ฐฐํฌ ์™„๋ฃŒ ๋˜๋Š” ์‹คํŒจ ์•Œ๋ฆผ

๋กค๋ฐฑ ์ „๋žต

  • ์ž๋™ ๋กค๋ฐฑ: ๋ฐฐํฌ ์‹คํŒจ ์‹œ ์ด์ „ ์ƒํƒœ๋กœ ์ž๋™ ๋กค๋ฐฑ
  • ์ˆ˜๋™ ๋กค๋ฐฑ: terraform state ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•œ ์ˆ˜๋™ ๋กค๋ฐฑ ์ ˆ์ฐจ
  • ์Šค๋ƒ…์ƒท ๊ธฐ๋ฐ˜ ๋ณต๊ตฌ: ์ค‘์š” ์ธํ”„๋ผ์˜ ์ •๊ธฐ์  ์Šค๋ƒ…์ƒท ์ƒ์„ฑ

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋ฆผ

๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ

๋„๊ตฌ ์šฉ๋„ ๋Œ€์‹œ๋ณด๋“œ URL
CloudWatch AWS ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง [๋งํฌ]
Prometheus Kubernetes ๋ชจ๋‹ˆํ„ฐ๋ง [๋งํฌ]
Grafana ์‹œ๊ฐํ™” ๋Œ€์‹œ๋ณด๋“œ [๋งํฌ]
ElasticSearch ๋กœ๊ทธ ๋ถ„์„ [๋งํฌ]

์ฃผ์š” ์•Œ๋ฆผ ์„ค์ •

์•Œ๋ฆผ ์œ ํ˜• ์ž„๊ณ„๊ฐ’ ๋Œ€์‘ ๋‹ด๋‹น์ž ๋Œ€์‘ ์ ˆ์ฐจ
CPU ์‚ฌ์šฉ๋Ÿ‰ 80% ์ด์ƒ Platform ํŒ€ [๋งํฌ]
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ 90% ์ด์ƒ Platform ํŒ€ [๋งํฌ]
๋””์Šคํฌ ๊ณต๊ฐ„ 85% ์ด์ƒ Platform ํŒ€ [๋งํฌ]
์˜ค๋ฅ˜์œจ 5% ์ด์ƒ ๊ฐœ๋ฐœํŒ€ [๋งํฌ]
๋ณด์•ˆ ์ด๋ฒคํŠธ ์‹ฌ๊ฐ๋„ HIGH ๋ณด์•ˆํŒ€ [๋งํฌ]

๋กœ๊น… ์ „๋žต

  • ์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๊น…: ELK ์Šคํƒ ๋˜๋Š” CloudWatch Logs
  • ๋กœ๊ทธ ๋ณด์กด ์ •์ฑ…: ์šด์˜ ๋กœ๊ทธ 30์ผ, ๋ณด์•ˆ ๋กœ๊ทธ 1๋…„
  • ๋กœ๊ทธ ์ต๋ช…ํ™”: PII ๋ฐ์ดํ„ฐ ์ž๋™ ๋งˆ์Šคํ‚น

DR(์žฌํ•ด ๋ณต๊ตฌ) ๊ณ„ํš

RPO ๋ฐ RTO ๋ชฉํ‘œ

ํ™˜๊ฒฝ RPO RTO ์ „๋žต
ํ”„๋กœ๋•์…˜ 1์‹œ๊ฐ„ 4์‹œ๊ฐ„ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „
์Šคํ…Œ์ด์ง• 24์‹œ๊ฐ„ 24์‹œ๊ฐ„ ์Šค๋ƒ…์ƒท ๋ณต๊ตฌ
๊ฐœ๋ฐœ N/A N/A ์žฌ๊ตฌ์ถ•

์žฌํ•ด ๋ณต๊ตฌ ์ ˆ์ฐจ

  1. ์ƒํ™ฉ ํ‰๊ฐ€: ์žฅ์•  ๋ฒ”์œ„ ๋ฐ ์˜ํ–ฅ ํ‰๊ฐ€
  2. DR ์„ ์–ธ: DR ๊ณ„ํš ๊ฐœ์‹œ ๊ฒฐ์ •
  3. ์ธํ”„๋ผ ๋ณต๊ตฌ: ๋ณด์กฐ ๋ฆฌ์ „์— ์ธํ”„๋ผ ํ”„๋กœ๋น„์ €๋‹ (Terraform)
  4. ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ: ์ตœ์‹  ๋ฐฑ์—…์—์„œ ๋ฐ์ดํ„ฐ ๋ณต์›
  5. ์„œ๋น„์Šค ๊ฒ€์ฆ: ๊ธฐ๋Šฅ ๋ฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ
  6. ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜: DNS ๋˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•œ ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜
  7. ์•Œ๋ฆผ: ์ดํ•ด๊ด€๊ณ„์ž์—๊ฒŒ ์ƒํ™ฉ ๊ณต์œ 

DR ํ…Œ์ŠคํŠธ ์ผ์ •

  • ๋ถ„๊ธฐ๋ณ„ ํ…Œ์ด๋ธ”ํƒ‘ ์—ฐ์Šต
  • ๋ฐ˜๊ธฐ๋ณ„ ์ „์ฒด DR ์‹œ๋ฎฌ๋ ˆ์ด์…˜
  • ์—ฐ๊ฐ„ ๋น„์ฆˆ๋‹ˆ์Šค ์—ฐ์†์„ฑ ๊ณ„ํš ๋ฆฌ๋ทฐ

๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ

๋ฆฌ์†Œ์Šค ํ• ๋‹น ์ •์ฑ…

ํ™˜๊ฒฝ CPU ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ
ํ”„๋กœ๋•์…˜ Auto-scaling Auto-scaling GP3 ์ „์šฉ VPC
์Šคํ…Œ์ด์ง• ์ œํ•œ์  Auto-scaling ์ œํ•œ์  Auto-scaling GP2 ๊ณต์œ  VPC
๊ฐœ๋ฐœ ๊ณ ์ • ํ• ๋‹น ๊ณ ์ • ํ• ๋‹น GP2 ๊ณต์œ  VPC

๋ฆฌ์†Œ์Šค ํƒœ๊น… ์ „๋žต

ํƒœ๊ทธ ํ‚ค ์šฉ๋„ ์˜ˆ์‹œ
Project ํ”„๋กœ์ ํŠธ ์‹๋ณ„ project:servicename
Environment ํ™˜๊ฒฝ ๊ตฌ๋ถ„ env:production
Owner ๋‹ด๋‹น ํŒ€/๊ฐœ์ธ owner:platform-team
Cost-Center ๋น„์šฉ ์„ผํ„ฐ cost-center:12345
Terraform Terraform ๊ด€๋ฆฌ ์—ฌ๋ถ€ terraform:true

๋ฆฌ์†Œ์Šค ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ

  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ: ๋น„์‚ฌ์šฉ ์‹œ๊ฐ„์— ์ž๋™ ์ข…๋ฃŒ (๋น„์šฉ ์ ˆ๊ฐ)
  • ์ž„์‹œ ํ™˜๊ฒฝ: ์ตœ๋Œ€ 7์ผ ํ›„ ์ž๋™ ์‚ญ์ œ
  • ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ: 90์ผ ํ›„ ์ž๋™ ์ •๋ฆฌ

๋ณด์•ˆ ๊ทœ์ • ์ค€์ˆ˜

๊ทœ์ • ์ค€์ˆ˜ ํ‘œ์ค€

ํ‘œ์ค€ ๋ฒ”์œ„ ๊ฒ€์ฆ ์ฃผ๊ธฐ ๋‹ด๋‹น์ž
ISO 27001 ์ „์ฒด ์ธํ”„๋ผ ์—ฐ๊ฐ„ ๋ณด์•ˆํŒ€
GDPR ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๋ฐ˜๊ธฐ ๋ฒ•๋ฌดํŒ€, ๋ณด์•ˆํŒ€
PCI DSS ๊ฒฐ์ œ ๊ด€๋ จ ์‹œ์Šคํ…œ ๋ถ„๊ธฐ ๊ฒฐ์ œํŒ€, ๋ณด์•ˆํŒ€

๋ณด์•ˆ ์Šค์บ” ๋ฐ ๊ฐ์‚ฌ

  • ์ธํ”„๋ผ ์ฝ”๋“œ ๋ณด์•ˆ ์Šค์บ”: ๋งค PR ์‹œ tfsec, checkov ์‹คํ–‰
  • ์ทจ์•ฝ์  ์Šค์บ”: ์ฃผ๊ฐ„ ์ž๋™ ์Šค์บ”
  • ์นจํˆฌ ํ…Œ์ŠคํŠธ: ๋ถ„๊ธฐ๋ณ„ ์ˆ˜ํ–‰
  • ๊ถŒํ•œ ๊ฐ์‚ฌ: ์›”๊ฐ„ IAM ๊ถŒํ•œ ๊ฒ€ํ† 

๋น„๋ฐ€ ๊ด€๋ฆฌ

  • HashiCorp Vault ๋˜๋Š” AWS Secrets Manager ์‚ฌ์šฉ
  • ์ž๋™ ๋กœํ…Œ์ด์…˜: 90์ผ๋งˆ๋‹ค ์ž๋™ ๊ฐฑ์‹ 
  • ๊ธด๊ธ‰ ์ž๊ฒฉ ์ฆ๋ช… ๋กœํ…Œ์ด์…˜ ์ ˆ์ฐจ [๋งํฌ]

๋น„์šฉ ์ตœ์ ํ™”

๋น„์šฉ ๋ชจ๋‹ˆํ„ฐ๋ง

๋„๊ตฌ ์šฉ๋„ ๋Œ€์‹œ๋ณด๋“œ
AWS Cost Explorer ์›”๊ฐ„ ๋น„์šฉ ์ถ”์  [๋งํฌ]
CloudHealth ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™” ์ œ์•ˆ [๋งํฌ]
์ž์ฒด ๋น„์šฉ ๋Œ€์‹œ๋ณด๋“œ ํŒ€๋ณ„/์„œ๋น„์Šค๋ณ„ ๋น„์šฉ ํ• ๋‹น [๋งํฌ]

๋น„์šฉ ์ตœ์ ํ™” ์ „๋žต

  • ์˜ˆ์•ฝ ์ธ์Šคํ„ด์Šค/Savings Plans ํ™œ์šฉ
  • Auto-scaling ๊ธฐ๋ฐ˜ ์ˆ˜์š” ๋Œ€์‘
  • ๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์˜ ์•ผ๊ฐ„/์ฃผ๋ง ์ž๋™ ์ข…๋ฃŒ
  • S3 Intelligent-Tiering ๋ฐ ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ •์ฑ…
  • EBS ๋ณผ๋ฅจ ํฌ๊ธฐ ์ตœ์ ํ™” ๋ฐ gp3 ํ™œ์šฉ

๋น„์šฉ ๋ณด๊ณ  ๋ฐ ํ• ๋‹น

  • ์ฃผ๊ฐ„ ๋น„์šฉ ๋ฆฌํฌํŠธ ์ž๋™ ์ƒ์„ฑ
  • ์›”๊ฐ„ ๋น„์šฉ ๊ฒ€ํ†  ํšŒ์˜
  • ํŒ€/์„œ๋น„์Šค๋ณ„ ๋น„์šฉ ํ• ๋‹น์„ ์œ„ํ•œ ํƒœ๊ทธ ์ „๋žต

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ

์ฃผ์š” ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์‚ฌ๋ก€

  1. [ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ์žฅ์•  ์‚ฌ๋ก€ #1: DB ์—ฐ๊ฒฐ ์‹คํŒจ](๋งํฌ)
  2. [๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ์žฅ์• : Terraform ์ƒํƒœ ํŒŒ์ผ ์†์ƒ](๋งํฌ)
  3. [๋ณด์•ˆ ์ธ์‹œ๋˜ํŠธ ๋Œ€์‘: ๋น„์ธ๊ฐ€ ์•ก์„ธ์Šค ์‹œ๋„](๋งํฌ)

๊ธด๊ธ‰ ์—ฐ๋ฝ์ฒ˜

| ํŒ€ | ๋‹ด๋‹น์ž | ์—ฐ๋ฝ์ฒ˜ | ๋น„์ƒ ์—ฐ๋ฝ ์ฑ„๋„ | |โ€”โ€”|โ€”โ€”โ€”โ€”|โ€”โ€”โ€”โ€”|โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”| | ์ธํ”„๋ผ ํŒ€ | ์ด๋ฆ„ | ์ด๋ฉ”์ผ/์ „ํ™” | Slack #์ธํ”„๋ผ-๊ธด๊ธ‰ | | ๋ณด์•ˆ ํŒ€ | ์ด๋ฆ„ | ์ด๋ฉ”์ผ/์ „ํ™” | Slack #๋ณด์•ˆ-์ธ์‹œ๋˜ํŠธ | | ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž | AWS ๊ธฐ์ˆ ์ง€์› | ๊ณ„์ • ๋ฒˆํ˜ธ | AWS Support ํฌํ„ธ |

โš ๏ธ **GitHub.com Fallback** โš ๏ธ