Stateful Web App - MyClothes.com

์ด์ „ ํฌ์ŠคํŒ…์—์„œ๋Š” Stateless(๋ฌด์ƒํƒœ) ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ WhatIsTheTime.com ์„ ๋‹ค๋ฃจ์—ˆ๋‹ค.

๋‹จ์ˆœํžˆ ์‹œ๊ฐ„์„ ์•Œ๋ ค์ฃผ๊ณ , ์ด๋ฅผ ์œ„ํ•œ ์–ด๋– ํ•œ DB๋‚˜ ์ •๋ณด ๋˜๋Š” ์™ธ๋ถ€ ์ •๋ณด๊ฐ€ ํ•„์š”์—†์—ˆ๋‹ค.

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

image-20220714023058953

  • ์ด์ „ ํฌ์ŠคํŒ…๊ณผ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ๋‹ค.
  • User, Route53, Multi AZ, ELB, ASG, ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • App์ด ELB์— ์ ‘๊ทผํ•˜๊ณ , ELB๋Š” ์–ด๋–ค ์ธ์Šคํ„ด์Šค์— ํŠธ๋ž˜ํ”ฝ์„ ์ฃผ๊ณ ๋ฐ›์„ ์ง€ ์ •ํ•ด์ค€๋‹ค.
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์š”์ฒญ์€ ๊ฐ™์€ EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ EC2 ์ธ์Šคํ„ด์Šค๋กœ ๊ฐ„๋‹ค.
    • ๊ทธ๋Ÿฌ๋ฉด ์žฅ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.
    • ์‚ฌ์šฉ์ž๋Š” ๋ฒ„๊ทธ๋กœ ์ฐฉ๊ฐํ•˜๊ณ , ๋‹ค์‹œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๋‹ด๊ณ , ์ด๋ฒˆ์—๋Š” 3๋ฒˆ์งธ EC2 ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋œ๋‹ค.
    • ๋˜ ๋‹ค์‹œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.
    • ์‚ฌ์šฉ์ž ๋ถˆํŽธ์„ ์•ผ๊ธฐํ•œ๋‹ค. ์žฅ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์ž๊พธ ์‚ฌ๋ผ์ง€๊ฒŒ ๋Š๊ปด์ง€๊ฒŒ ๋œ๋‹ค.
    • ๊ณ ๊ฐ ์ดํƒˆ๋กœ ์ด์–ด์ง„๋‹ค.
  • ํ•ด๊ฒฐ๋ฒ•
    • ๊ณ ์ฐฉ๋„, ์ฆ‰ ์„ธ์…˜ ๋ฐ€์ ‘์„ฑ์„ ๋„์ž… (Session Sticky)
    • ์‚ฌ์šฉ์ž ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • NoSQL ์‚ฌ์šฉ (redis, dynamoDB)
    • DB ์‚ฌ์šฉ

์•„๋ž˜์— ํ•˜๋‚˜ํ•˜๋‚˜ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•œ๋‹ค.

Stickiness (Session Affinity)

์„ธ์…˜ ๋ฐ€์ ‘์„ฑ์„ ๋„์ž…ํ•˜์—ฌ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ๋ฌผ๊ฑด๋“ค์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ฒŒ ํ•ด๋ณด์ž

image-20220720005003197

  • ELB ์˜ ๊ธฐ๋Šฅ์ค‘ ํ•˜๋‚˜์ธ Session Stickiness ๋ฅผ ํ™œ์„ฑํ™” ํ•œ๋‹ค.
  • ์ฒซ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•˜์—ฌ ๋ญ”๊ฐ€๋ฅผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๋Š”๋‹ค.
  • ๋‘๋ฒˆ์งธ ์š”์ฒญ๋„ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋กœ ๊ฐ€๊ฒŒ๋˜๊ณ , ์„ธ๋ฒˆ ์งธ ์š”์ฒญ ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋กœ ๊ฐ€๊ฒŒ๋œ๋‹ค.

๋ชจ๋“  ์š”์ฒญ์ด ๊ณ ์ฐฉ๋„ ๋•๋ถ„์— ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋กœ ๊ฐ€๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.
๋‹ค๋งŒ, EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ๋“  ์ข…๋ฃŒ๊ฐ€๋˜๋ฉด ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค.

๋‹ค๋งŒ ๊ณ ์ฐฉ๋„์™€ ์„ธ์…˜ ๋ฐ€์ ‘์„ฑ ๋•๋ถ„์— ์กฐ๊ธˆ์€ ๊ฐœ์„ ๋˜์—ˆ๋‹ค.
๋˜ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ธ ์‚ฌ์šฉ์ž ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ํ•ด๊ฒฐํ•ด๋ณด์ž.

User Cookies

image-20220720005318513

EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๋Š” ๋Œ€์‹ , ์‚ฌ์šฉ์ž์ชฝ์—์„œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ์ ‘์†ํ•  ๋•Œ๋งˆ๋‹ค โ€œ๋‚ด ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—๋Š” ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.โ€ ๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์›น ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ์ฒซ๋ฒˆ์งธ EC2 or ๋‘๋ฒˆ์งธ, ์„ธ๋ฒˆ์งธ EC2 ์— ์ ‘์†ํ•˜๋”๋ผ๋„, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ EC2 ์ธ์Šคํ„ด์Šค๋กœ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์šฉ์„ ๋ณด๋‚ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ์„œ๋ฒ„๊ฐ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์˜ ๋‚ด์šฉ์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐ๊ฐ์˜ EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด์ „์— ์žˆ์—ˆ๋˜ ์ผ์„ ์•Œ ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฌด์ƒํƒœ ๊ฐ€ ๋˜์—ˆ๋‹ค.
  • ์ด์ „์— ์žˆ์—ˆ๋˜ ์ผ์€ ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)์ชฝ์—์„œ ๋งํ•ด์ฃผ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

  • ๋‹จ์ 
    • HTTP ์š”์ฒญ์ด ์ ์  ๋” ๋ฌด๊ฑฐ์›Œ์ง€๊ฒŒ ๋œ๋‹ค.
    • ์›น ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์šฉ์„ ๋ณด๋‚ผ ๋•Œ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋ญ”๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ• ์ˆ˜๋ก ์ ์  ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ
    • ์ฟ ํ‚ค๊ฐ€ ๊ณต๊ฒฉ์ž์— ์˜ํ•ด ๋ณ€๊ฒฝ๋จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž ์žฅ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋‹ค. (๋ณด์•ˆ ์œ„ํ—˜ ์กด์žฌ)
  • ํ•ด๊ฒฐ๋ฒ•
    • EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ฌ์šฉ์ž ์ฟ ํ‚ค์˜ ๋‚ด์šฉ์„ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค.
    • ์ „์ฒด ์ฟ ํ‚ค์˜ ํฌ๊ธฐ๋Š” 4KB ์ดํ•˜๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ•ด ์ฟ ํ‚ค ๋‚ด์—๋Š” ์ž‘์€ ์ •๋ณด๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ
    • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์…‹์€ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.

์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋Š” ์‹ค์ œ๋กœ ๋งŽ์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ด๋‹ค.
๊ทธ๋Ÿฌ๋‚˜, ์„œ๋ฒ„ Session ๊ฐœ๋…์„ ๋„์ž…ํ•˜์—ฌ ๋‹ค์‹œํ•œ๋ฒˆ ํ•ด๊ฒฐํ•ด๋ณด์ž!

Server Session

image-20220720005903188

  • ์ „์ฒด ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์›น ์ฟ ํ‚ค๋กœ ๋ณด๋‚ด๋Š” ๋Œ€์‹ ์— ๋‹จ์ˆœํžˆ ์„ธ์…˜ID ๋งŒ ๋ณด๋‚ธ๋‹ค.
  • ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ Session ID ์ด๋‹ค.
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—๋Š” ElastiCache ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • session_id ๋ฅผ ๋ณด๋‚ผ ๋•Œ EC2 ์ธ์Šคํ„ด์Šค์—๊ฒŒ โ€œ์ด ๋ฌผ๊ฑด์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ํ•œ๋‹ค.โ€ ๋ผ๊ณ  ๋งํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด EC2 ์ธ์Šคํ„ด์Šค๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์šฉ์„ ElastiCache์— ์ถ”๊ฐ€ํ•˜๊ณ , ์ด ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์šฉ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š”
    ID ๊ฐ€ ๋ฐ”๋กœ session_id ๊ฐ€ ๋œ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ session_id ์™€ ํ•จ๊ป˜ ๋‘๋ฒˆ์งธ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ด๋Š” ๋‹ค๋ฅธ EC2 ์ธ์Šคํ„ด์Šค๋กœ ๊ฐ€๊ฒŒ๋˜๊ณ , ๊ทธ EC2 ์ธ์Šคํ„ด์Šค๋Š”
    session_id ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ElastiCache ๋กœ๋ถ€ํ„ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์šฉ์„ ์ฐพ์•„์„œ Session Data๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ํŒจํ„ด์ด๋‹ค.

ElastiCache ์˜ ๋˜๋‹ค๋ฅธ ์žฅ์ ์€ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์„ธ์…˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ๋Š” DynamoDB (NoSQL) ๊ฐ€ ์žˆ๊ณ , ์ € DB ์— ์ €์žฅ์‹œ์ผœ๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

ElastiCache ๊ฐ€ ์ •๋ณด์˜ ์ถœ์ฒ˜์ด๊ณ  ๊ณต๊ฒฉ์ž๋“ค์€ ElastiCache์˜ ๋‚ด๋ถ€๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ์•ˆ์ „ํ•ด์กŒ๋‹ค.
์‹ค์ œ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•ˆ์ „ํ•œ ํŒจํ„ด์ด๋‹ค.

์ด์ œ ๋งˆ์ง€๋ง‰ DB ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž

User Data in Database

image-20220720010654545

  • ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ฃผ์†Œ, ๋“ฑ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ ์ž ํ•œ๋‹ค.
  • ๋‹ค์‹œํ•œ๋ฒˆ EC2 ์ธ์Šคํ„ด์Šค์™€ ํ†ต์‹ ํ• ํ…๋ฐ, ์ด๋ฒˆ์—๋Š” RDS ์ธ์Šคํ„ด์Šค์™€ ํ†ต์‹ ํ•œ๋‹ค.
  • RDS ๋Š” ์žฅ๊ธฐ์ ์ธ ์ €์žฅ์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ ์ข‹๋‹ค.
  • ๊ฐ๊ฐ์˜ EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ RDS ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

Scaling Read

image-20220720011315347

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ , ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋‘˜๋Ÿฌ๋ณด๋ฉฐ ๋ณด๋‚ธ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„ Read ์˜ ํ–‰์œ„๋ฅผ ๋งŽ์ด ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ๋ฅผ ํ™•์žฅํ•ด์•ผ ํ•œ๋‹ค.
    • Write ๋ฅผ ํ•˜๋Š” RDS ๋งˆ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,
    • Replica๊ฐ€ ์ผ์–ด๋‚˜๋Š” RDS Read Replica๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰, ๋ญ”๊ฐ€๋ฅผ Readํ• ๋•Œ๋Š” Read Replica RDS ์ธ์Šคํ„ด์Šค๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค.
  • RDS ์—์„œ๋Š” 5๊ฐœ ์˜ Read Replica ๋ณต์ œ๋ณธ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋Š” RDS DB์˜ Read๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

Scaling Read (Alternative) - Write Through

Cache ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์“ฐ๊ธฐ๋ชจ๋“œ๋„ ์žˆ๋‹ค.

image-20220720011503408

  • ๋ฐ์ดํ„ฐ๋ฅผ Readํ• ๋•Œ, Cache๋ฅผ ๋จผ์ € ์ฝ์–ด์„œ ์ •๋ณด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ, ์žˆ์œผ๋ฉด Cache Hit ํ•˜๊ณ ,
    ์—†์œผ๋ฉด Cache miss ํ•œ๋‹ค.
  • ์ด๋•Œ Cache Miss๊ฐ€ ์ผ์–ด๋‚ ๋•Œ, RDS ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด ๋“ค์—ฌ์„œ Cache์— ์ €์žฅ์‹œํ‚จ๋‹ค.
  • ์ด๋ฒˆ์—๋Š” ElastiCache์™€ ํ†ต์‹ ํ•  ๋•Œ ์ •๋ณด๋ฅผ ์–ป๊ฒŒ ๋˜๊ณ  Cache Hit ๊ฐ€ ๋œ๋‹ค.
    • ์ฆ‰์‹œ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
    • RDS ์ƒ์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    • RDS ์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ , ๋™์‹œ์— ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • Cache ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ•„์š”ํ•ด์ง„๋‹ค.
    • ๊ฝค ์–ด๋ ค์šด ์ž‘์—…์ด๋ฉฐ, App๋‚ด์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค.

์ด์ œ ์šฐ๋ฆฌ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ๊ฝค ๋งŽ์€ ์ฝ๊ธฐ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Survive Disasters

์žฌํ•ด์— ๋Œ€๋น„ํ•ด์•ผ ํ•œ๋‹ค.

image-20220720011837055

์žฌํ•ด๋กœ ์ธํ•œ ํ”ผํ•ด๋ฅผ ๋ฐ›์ง€ ์•Š์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

์‚ฌ์šฉ์ž๊ฐ€ Route53๊ณผ ํ†ต์‹ ์„ ํ•˜๋Š”๋ฐ, ์ด์ œ ์šฐ๋ฆฌ๋Š” Multi AZ ELB๊ฐ€ ์žˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ Route53 ์€ ์ด๋ฏธ ๊ฐ€์šฉ์„ฑ์ด ๋†’๋‹ค. ๋ฌด์–ธ๊ฐ€๋ฅผ ๋” ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค

  • ELB ๋ฅผ Multi AZ๋กœ ๋งŒ๋“ ๋‹ค.
  • ASG ๋„ Multi AZ
  • RDS ์—ญ์‹œ Multi AZ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.
  • ์žฌํ•ด๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ธ๊ณ„๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋Œ€๊ธฐ ๋ณต์ œ๋ณธ์ด ์žˆ๋‹ค.
  • Redis ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ElastiCache๋„ Multi AZ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

Security Group

๋ณด์•ˆ๊ทธ๋ฃน์— ๋Œ€ํ•ด์„œ๋„ ์•ˆ์ „ํ•ด์•ผ ํ•œ๋‹ค.

image-20220720012147818

  • ELB ์ชฝ ์–ด๋””์—์„œ๋‚˜ HTTP/HTTPS ํŠธ๋ž˜ํ”ฝ์„ ์—ด ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • EC2 ์ธ์Šคํ„ด์Šค ์ธก๋ฉด์—์„œ๋Š” ELB ๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ๋งŒ ๋ฐ›๋„๋ก ์ œํ•œํ•œ๋‹ค.
  • ElastiCache ์ธก๋ฉด์—์„œ๋Š” EC2 ๋ณด์•ˆ๊ทธ๋ฃน์œผ๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ๋งŒ ๋ฐ›๋„๋ก ์ œ์•ˆํ•ด์•ผ ํ•œ๋‹ค.
  • RDS ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ EC2 ๋ณด์•ˆ๊ทธ๋ฃน์œผ๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ๋งŒ ๋ฐ›๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

Summary

์ •๋ฆฌ

  • ELB Sticky Session ๊ธฐ๋Šฅ ์‚ฌ์šฉ
  • Cookies ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ stateless ๋ฌด์ƒํƒœ๋กœ ๋งŒ๋“ค๊ธฐ
  • ElastiCache
    • ์„ธ์…˜์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด (๋‹ค์ด๋‚˜๋ชจDB ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ)
    • RDS ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ Caching
    • Multi AZ
  • RDS
    • ์œ ์ € ๋ฐ์ดํ„ฐ ์ €์žฅ
    • ์ฝ๊ธฐ ํ™•์žฅ์„ ์œ„ํ•œ Read Replica ์‚ฌ์šฉ
    • ์žฌํ•ด์— ๋Œ€๋น„ํ•˜์—ฌ Multi AZ ์‚ฌ์šฉ
  • ์„œ๋กœ ์ฐธ์กฐํ•˜๋Š” ๋ณด์•ˆ๊ทธ๋ฃน์„ ์œ„ํ•ด ์ฒ ์ €ํ•œ ๋ณด์•ˆ์„ ์ถ”๊ฐ€

ํด๋ผ์ด์–ธํŠธ / ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ / ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ 3๊ฐœ์˜ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
์ด๊ฒƒ์€ ๋งค์šฐ ๋ณดํŽธ์ ์ธ ์•„ํ‚คํ…์ฒ˜์ด๋‹ค. ๋น„์šฉ์ด ๋‹ค์†Œ ์ฆ๊ฐ€ํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ํ˜„๋Œ€ ์›น ์•„ํ‚คํ…์ฒ˜ ํ•„์ˆ˜์ด๋ฏ€๋กœ ๊ดœ์ฐฎ๋‹ค.

  • Multi AZ ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ๋น„์šฉ์ด ๋” ์ถ”๊ฐ€๋˜์ง€๋งŒ ์žฌํ•ด์— ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฝ๊ธฐ๋ฅผ ํ™•์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋น„์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  Read Replica ์…‹์„ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•œ๋‹ค.

ํƒœ๊ทธ: , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ