๐ŸŸฆ Stateless Web App โ€“ WhatIsTheTime.com

์„œ๋น„์Šค ์š”๊ตฌ์‚ฌํ•ญ

  • ํ˜„์žฌ ์‹œ๊ฐ„์„ ์•Œ๋ ค์ฃผ๋Š” ๋‹จ์ˆœ ์›น ์„œ๋น„์Šค
  • โŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถˆํ•„์š”
  • ์ดˆ๊ธฐ์—๋Š” Downtime ํ—ˆ์šฉ
  • ์ตœ์ข… ๋ชฉํ‘œ
    • Vertical + Horizontal Scaling
    • Downtime ์—†๋Š” ํ™•์žฅ

๐Ÿงฉ 1๋‹จ๊ณ„ โ€“ Starting Simple (๋‹จ์ผ EC2)

User
 โ†“
Public EC2
 + Elastic IP
  • Public EC2
  • Elastic IP ์‚ฌ์šฉ
  • ๊ตฌ์กฐ๋Š” ๋‹จ์ˆœํ•˜์ง€๋งŒ:
    • ๋‹จ์ผ ์žฅ์•  ์ง€์  (SPOF)

๐Ÿงฉ 2๋‹จ๊ณ„ โ€“ Vertical Scaling

User
 โ†“
PublicEC2(ScaleUp)
  • ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์—…๊ทธ๋ ˆ์ด๋“œ
    • ์˜ˆ: t2 โ†’ m5
  • ๋ฌธ์ œ์ 
    • ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘ Downtime ๋ฐœ์ƒ
    • ํ™•์žฅ ํ•œ๊ณ„ ์กด์žฌ

๐Ÿงฉ 3๋‹จ๊ณ„ โ€“ Horizontal Scaling (๋ฌธ์ œ ๋ฐœ์ƒ)

User
 โ†“
Route53 (ARecord, TTL1h)
 โ†“
Public EC2 instances (์—ฌ๋Ÿฌ ๊ฐœ)
  • EC2 ์—ฌ๋Ÿฌ ๋Œ€๋กœ ํ™•์žฅ
  • Elastic IP ์ œ๊ฑฐ
  • Route 53 A Record ์‚ฌ์šฉ
  • ๋ฌธ์ œ
    • ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ฌ๋ผ์ ธ๋„
    • TTL ๋™์•ˆ ์ฃฝ์€ IP๋กœ ์š”์ฒญ ๊ฐ€๋Šฅ

๐Ÿงฉ 4๋‹จ๊ณ„ โ€“ Load Balancer ๋„์ž…

User
 โ†“
Route53 (Alias)
 โ†“
ELB + HealthCheck
 โ†“
Private EC2
  • Load Balancer ๋„์ž…
  • EC2๋Š” Private Subnet
  • Health Check๋กœ ๋น„์ •์ƒ ์ธ์Šคํ„ด์Šค ์ œ์™ธ
  • ๋ณด์•ˆ ๊ทธ๋ฃน ์ œํ•œ

๐Ÿงฉ 5๋‹จ๊ณ„ โ€“ Auto Scaling Group

User
 โ†“
Route53 (Alias)
 โ†“
ELB
 โ†“
Auto ScalingGroup
  • ์ธ์Šคํ„ด์Šค ์ž๋™ ์ฆ๊ฐ
  • ์žฅ์•  ์‹œ ์ž๋™ ๋ณต๊ตฌ
  • ์šด์˜ ๋ถ€๋‹ด ๊ฐ์†Œ

๐Ÿงฉ 6๋‹จ๊ณ„ โ€“ Multi-AZ ๊ตฌ์„ฑ

User
 โ†“
Route53
 โ†“
ELB (Multi-AZ)
 โ†“
ASG (AZ1,2,3)
  • ์ตœ์†Œ 2๊ฐœ AZ ์ด์ƒ
  • AZ ์žฅ์• ์—๋„ ์„œ๋น„์Šค ์œ ์ง€
  • ๊ณ ๊ฐ€์šฉ์„ฑ ํ™•๋ณด

๐Ÿงฉ 7๋‹จ๊ณ„ โ€“ Reserved Instances

  • ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋งŒํผ
    • Reserved Instances ๊ตฌ๋งค
  • ๋ชฉ์ 
    • ๋น„์šฉ ์ ˆ๊ฐ
    • ๊ธฐ๋ณธ ์šฉ๋Ÿ‰ ํ™•๋ณด

๐Ÿ”Ž WhatIsTheTime.com ์ •๋ฆฌ

์ด ์•„ํ‚คํ…์ฒ˜์—์„œ ๋‹ค๋ฃฌ ํ•ต์‹ฌ ๊ฐœ๋…

  • Public vs Private IP
  • Elastic IP vs Route 53 vs Load Balancer
  • Route 53 TTL / A Record / Alias
  • ์ˆ˜๋™ ๊ด€๋ฆฌ vs Auto Scaling Group
  • Multi-AZ
  • ELB Health Check
  • Security Group ์„ค๊ณ„
  • Reserved Instance๋กœ ๋น„์šฉ ์ตœ์ ํ™”

๐ŸŸง Stateful Web App โ€“ MyClothes.com

์„œ๋น„์Šค ์š”๊ตฌ์‚ฌํ•ญ

  • ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ
  • ์‡ผํ•‘ ์นดํŠธ ์กด์žฌ
  • ๋™์‹œ ์‚ฌ์šฉ์ž ์ˆ˜๋ฐฑ ๋ช…
  • ์ˆ˜ํ‰ ํ™•์žฅ ํ•„์ˆ˜
  • ์›น ๊ณ„์ธต์€ ์ตœ๋Œ€ํ•œ Stateless ์œ ์ง€
  • ์‡ผํ•‘ ์นดํŠธ ์œ ์‹ค โŒ
  • ์‚ฌ์šฉ์ž ์ •๋ณด DB ํ•„์š”

๐Ÿงฉ ๊ธฐ๋ณธ ๊ตฌ์กฐ โ€“ Multi-AZ + ASG

User
 โ†“
ELB
 โ†“
ASG (AZ1,2,3)

๐Ÿงฉ ๋ฌธ์ œ 1 โ€“ Session ์œ ์ง€

โŒ ๋ฌธ์ œ

  • ๋‹ค๋ฅธ EC2๋กœ ์š”์ฒญ ์ „๋‹ฌ ์‹œ
    • ์‡ผํ•‘ ์นดํŠธ ์œ ์‹ค

๐Ÿงฉ ํ•ด๊ฒฐ 1 โ€“ ELB Stickiness

  • ๋™์ผ ์‚ฌ์šฉ์ž๋ฅผ ๋™์ผ ์ธ์Šคํ„ด์Šค๋กœ ์ „๋‹ฌ
  • ๋‹จ์ 
    • ์ธ์Šคํ„ด์Šค ์žฅ์•  ์‹œ ์„ธ์…˜ ์œ ์‹ค
    • ํ™•์žฅ์„ฑ ์ œํ•œ

๐Ÿงฉ ํ•ด๊ฒฐ 2 โ€“ Cookies ํ™œ์šฉ

  • ์‡ผํ•‘ ์นดํŠธ ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅ
  • ๋ฌธ์ œ์ 
    • HTTP ์š”์ฒญ ๋ฌด๊ฑฐ์›€
    • ๋ณด์•ˆ ์œ„ํ—˜ (๋ณ€์กฐ ๊ฐ€๋Šฅ)
    • ์ฟ ํ‚ค ํฌ๊ธฐ ์ œํ•œ (4KB)
    • ์„œ๋ฒ„์—์„œ ๊ฒ€์ฆ ํ•„์š”

๐Ÿงฉ ํ•ด๊ฒฐ 3 โ€“ Server Session Store

Web EC2
 โ†” ElastiCache
  • ์ฟ ํ‚ค์—๋Š” session_id๋งŒ ์ €์žฅ
  • ์‹ค์ œ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋Š”
    • ElastiCache
    • (๋Œ€์•ˆ: DynamoDB)

๐Ÿงฉ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ €์žฅ

EC2
 โ†“
Amazon RDS
  • ์ฃผ์†Œ, ์ด๋ฆ„ ๋“ฑ ์˜์† ๋ฐ์ดํ„ฐ
  • ๊ด€๊ณ„ํ˜• DB ์‚ฌ์šฉ

๐Ÿงฉ Read Scaling

๋ฐฉ๋ฒ• 1 โ€“ RDS Read Replica

  • Read ์ „์šฉ ํ™•์žฅ
  • Master๋Š” Write ์ „๋‹ด

๋ฐฉ๋ฒ• 2 โ€“ Cache (Lazy Loading)

  • ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ ์บ์‹œ
  • Cache Miss ์‹œ DB ์ ‘๊ทผ

๐Ÿงฉ Disaster Recovery โ€“ Multi-AZ

  • EC2: Multi-AZ
  • ElastiCache: Multi-AZ
  • RDS: Multi-AZ

๐Ÿงฉ Security Group ์„ค๊ณ„

  • ELB โ†’ EC2๋งŒ ํ—ˆ์šฉ
  • EC2 โ†’ RDS / ElastiCache๋งŒ ํ—ˆ์šฉ
  • ์™ธ๋ถ€:
    • HTTP / HTTPS๋งŒ ํ—ˆ์šฉ (0.0.0.0/0)

๐Ÿ”Ž MyClothes.com ์ •๋ฆฌ

  • 3-Tier Web Architecture
  • ELB Sticky Sessions
  • Stateless Web ์„ค๊ณ„
  • ElastiCache
    • Session Store
    • Cache
  • Multi-AZ
  • RDS + Read Replica
  • ๋ณด์•ˆ ๊ทธ๋ฃน ์ƒํ˜ธ ์ฐธ์กฐ

๐ŸŸฉ Stateful Web App โ€“ MyWordPress.com

์š”๊ตฌ์‚ฌํ•ญ

  • ์™„์ „ ํ™•์žฅํ˜• WordPress
  • ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ •์ƒ ๋™์ž‘
  • ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ & ์ฝ˜ํ…์ธ  DB ์ €์žฅ

๐Ÿงฉ DB ๊ณ„์ธต โ€“ RDS Multi-AZ

EC2
 โ†“
RDS (Multi-AZ)

๐Ÿงฉ Aurora ์‚ฌ์šฉ (๊ถŒ์žฅ)

  • Multi-AZ ๊ธฐ๋ณธ ๋‚ด์žฅ
  • Read Replica ์ž๋™ ์ง€์›
  • ๋†’์€ ์„ฑ๋Šฅ

๐Ÿงฉ ์ด๋ฏธ์ง€ ์ €์žฅ โ€“ EBS (๋ฌธ์ œ)

  • ๋‹จ์ผ EC2์—๋งŒ ์ ํ•ฉ
  • Multi-AZ์—์„œ ์ด๋ฏธ์ง€ ๋ถˆ์ผ์น˜ ๋ฐœ์ƒ

๐Ÿงฉ ์ด๋ฏธ์ง€ ์ €์žฅ โ€“ EFS (ํ•ด๊ฒฐ)

EC2 (AZ1) โ”€โ”
EC2 (AZ2) โ”€โ”ผโ”€ EFS
EC2 (AZ3) โ”€โ”˜
  • ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผ ํŒŒ์ผ ์‹œ์Šคํ…œ ์‚ฌ์šฉ
  • ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ

๐Ÿ”Ž MyWordPress.com ์ •๋ฆฌ

  • Aurora๋กœ Multi-AZ + Read Replica
  • EBS vs EFS ์ฐจ์ด
  • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” EFS ํ•„์ˆ˜

โšก Instantiating Applications Quickly

๋ฌธ์ œ

  • ํ’€ ์Šคํƒ ๋ฐฐํฌ ์‹œ
    • ์„ค์น˜
    • ์„ค์ •
    • ๋ฐ์ดํ„ฐ ๋ณต์› ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ

ํ•ด๊ฒฐ ์ „๋žต

EC2

  • Golden AMI
    • ๋ฏธ๋ฆฌ ์•ฑ/์˜์กด์„ฑ ์„ค์น˜
  • User Data
    • ๋™์  ์„ค์ •
  • Hybrid
    • AMI + User Data (Elastic Beanstalk)

RDS / EBS

  • Snapshot ๋ณต์›
  • ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ํฌํ•จ

๐Ÿงฑ ๋Œ€ํ‘œ์ ์ธ 3-Tier ์•„ํ‚คํ…์ฒ˜

Route53
 โ†“
ELB
 โ†“
ASG (Web Tier)
 โ†“
ElastiCache
 โ†“
RDS (Data Tier)
  • Public / Private / Data Subnet ๋ถ„๋ฆฌ
  • Multi-AZ

๐Ÿง‘โ€๐Ÿ’ป Developer์˜ ๋ฌธ์ œ์ 

  • ์ธํ”„๋ผ ๊ด€๋ฆฌ ๋ถ€๋‹ด
  • ๋ฐฐํฌ ๋ณต์žก์„ฑ
  • ํ™•์žฅ ๊ฑฑ์ •
  • ๋Œ€๋ถ€๋ถ„์˜ ์›น์•ฑ ๊ตฌ์กฐ๋Š” ์œ ์‚ฌ
  • ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ ์‹คํ–‰๋งŒ ์›ํ•จ

๐ŸŒฑ Elastic Beanstalk

๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ PaaS ์„œ๋น„์Šค

ํŠน์ง•

  • EC2, ASG, ELB, RDS ์ž๋™ ๊ตฌ์„ฑ
  • ์šฉ๋Ÿ‰, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง ์ž๋™
  • ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๋งŒ ๊ด€๋ฆฌ
  • ๊ตฌ์„ฑ ์ œ์–ด ๊ฐ€๋Šฅ
  • ์„œ๋น„์Šค ์ž์ฒด ๋น„์šฉ โŒ
    • underlying ๋ฆฌ์†Œ์Šค๋งŒ ๊ณผ๊ธˆ

๐Ÿงฉ Elastic Beanstalk ๊ตฌ์„ฑ ์š”์†Œ

  • Application
  • Application Version
  • Environment
  • Environment Tier
    • Web Server
    • Worker

๐Ÿงฉ ์ง€์› ํ”Œ๋žซํผ

  • Go, Java, Tomcat
  • .NET (Linux / Windows)
  • Node.js, PHP, Python, Ruby
  • Docker (Single / Multi / Preconfigured)

๐Ÿงฉ Web Tier vs Worker Tier

Web Tier

  • HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ
  • ALB ์•ž๋‹จ

Worker Tier

  • SQS ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
  • ๋ฉ”์‹œ์ง€ ์ˆ˜ ๊ธฐ์ค€ ์Šค์ผ€์ผ

๐Ÿš€ Elastic Beanstalk ๋ฐฐํฌ ๋ชจ๋“œ

Single Instance

  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
  • ๋‹จ์ˆœ ๊ตฌ์กฐ

High Availability

  • ASG + ALB
  • ํ”„๋กœ๋•์…˜ ๊ถŒ์žฅ
  • Multi-AZ
  • RDS Master / Standby