๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[AWS] ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ๋ฐฑ์—”๋“œ ์ฑŒ๋ฆฐ์ง€ 3์›” 1ํšŒ์ฐจ - AWS ๊ตฌ์กฐ ๋ณธ๋ฌธ

๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/๐€๐–๐’

[AWS] ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ๋ฐฑ์—”๋“œ ์ฑŒ๋ฆฐ์ง€ 3์›” 1ํšŒ์ฐจ - AWS ๊ตฌ์กฐ

๐ŸคRyusun๐Ÿค 2024. 3. 6. 15:59

์›ํ‹ฐ๋“œ์—์„œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ๋ฐฑ์—”๋“œ ์ฑŒ๋ฆฐ์ง€ 3์›” ํ”„๋กœ๊ทธ๋žจ์„ ์ฐธ์—ฌ์‹ ์ฒญ์„ ํ–ˆ๋‹ค.

AWS๋ฅผ ํ™œ์šฉํ•œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•ด์ค€๋‹คํ•ด์„œ AWS ๋น ์ˆœ์ด์ธ ๋‚˜๋กœ์จ ๋‹น์žฅ ์‹ ์ฒญํ–ˆ๋‹ค.

 

1ํšŒ์ฐจ ์ˆ˜์—…์—์„œ๋Š” ์ „๋ฐ˜์ ์ธ AWS ๊ตฌ์กฐ์™€ ํšจ์œจ์ ์ธ ์šด์˜ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์…จ๋‹ค.

Agenda

  1. ์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋ž€?
  2. Monolithic server
  3. RDS scaling
  4. EC2 scaling
  5. Cache
  6. CDN
  7. Serverless

 

 ๋‚ด์šฉ ์š”์•ฝ

 

  •  ์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋ž€? ์„œ๋น„์Šค ์šด์˜ ๋ฐฉ์‹์— ์ ํ•ฉํ•œ ์•„ํ‚คํ…์ฒ˜
    1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ์ด๊ฑฐ ๋ฌด์กฐ๊ฑด ํ•ด์•ผ๋ผ์š”"
    2. ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ bottleneck์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์•„ํ‚คํ…์ฒ˜
  • ์„œ๋น„์Šค ์ดˆ๊ธฐ๋‹จ๊ณ„์—์„œ ๊ตณ์ด auto scaling ์•ˆํ•ด๋„ ๋œ๋‹ค. ๋ฌด์กฐ๊ฑด ๊ธฐ๋ณธ๋งŒ ๋งŒ๋“ค๊ณ  ํŠธ๋ž˜ํ”ฝ์ด ๋Š˜์–ด๋‚œ๋‹ค๋ฉด ๊ทธ๋•Œ ํ™•์žฅํ•˜์ž!

 

โœ”๏ธscaling์„ ๊ณ ๋ คํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒํ•˜๊ธฐ

 

  • ๊ทœ๋ชจ๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ์šฉ์ด๋ฉด ๋ฌด๋ฃŒ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. RDS๋Š” ๋น„์‹ธ๋ฏ€๋กœ Docker๋กœ Mysql ๋ฅผ ๋„์šฐ๊ฑฐ๋‚˜ EC2์— Mysql ๋ฅผ ์„ค์น˜ํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ์„œ๋น„์Šค ๊ทœ๋ชจ๊ฐ€ ์ปค์ง„๋‹ค๋ฉด?
    1. Join์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ด€๊ณ„ํ˜•๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋Š๋ ค์ง„๋‹ค.
    2. ๋ฐ์ดํ„ฐ์–‘์ด ๋งŽ์•„์ง€๋ฉด ๋” ๋Š๋ ค์ง„๋‹ค.
    3. ์ด๋Ÿฐ ๊ฒฝ์šฐ NoSQL ๋„์ž…์„ ๊ณ ๋ คํ•˜์ž
      1. AWS๋Š” ๋Œ€๋ถ€๋ถ„ DynamoDB
      2. ๋ฌผ๋ก  ์„œ๋น„์Šค ํŠน์„ฑ์— ๋”ฐ๋ผ NoSQL๋กœ ์‹œ์ž‘ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    4. RDS ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Scale Out ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด
      • ์ฝ๊ธฐ์ „์šฉ ๋ณต์ œ๋ณธ(READ Replica) ๋ฅผ ์‚ฌ์šฉํ•ด์„œ Scale Out
        •  ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„์งˆ๋•Œ ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— READ query๋ฅผ ๋‚ ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
        • ์š”์ฒญ์ด ๋ชฐ๋ ค์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋Š๋ ค์ง€๊ฑฐ๋‚˜ ํ„ฐ์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ ๊ฐ€๋Šฅ
      • Connection Pooling ์„ค์ •์„ ํ†ตํ•œ Scalue Out
        •  connection(์—ฐ๊ฒฐ)์„ ๋ฏธ๋ฆฌ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•ด๋‘๊ณ  ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹
        • AWS RDS Proxy๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, Idle timeout, Max Connections, Subnet ์„ ๊ณ ๋ คํ•ด์„œ ์„ค์ •ํ•˜์ž
        •  connection pool์€ ๋น„์šฉ๋ฌธ์ œ์™€ ์ฝ”๋“œ ๊ด€๋ฆฌ ํŽธ์˜์„ฑ์œผ๋กœ AWS RDS๋ณด๋‹ค ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.
    5.  DynamoDB Scale out
      •  Partition key๋ฅผ ํ™œ์šฉํ•œ ์ž๋™ partitioning
      • ์„œ๋ฒ„๋ฆฌ์Šค๋กœ ํŽธ๋ฆฌํ•˜๋‹ค
      • ๋น„์šฉ์ด ๋น„๊ต์  ์ €๋ ด
        • ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์šฉ์œผ๋กœ๋Š” dynamoDB ์‚ฌ์šฉ ์ถ”์ฒœ

 

โœ”๏ธscaling์„ ๊ณ ๋ คํ•œ ์„œ๋ฒ„ ์„ ํƒ

 

  1. EC2๋„ RDS์™€ ์œ ์‚ฌํ•˜๊ฒŒ scale up / out ๊ฐ€๋Šฅ
    • Scale up ์€ RDS์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋” ํฐ ์‚ฌ์ด์ฆˆ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒ
    • Scale out์€ Load Balancer๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  2.  Load Balancer
    • ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” ์„œ๋น„์Šค
    • ํด๋ผ์ด์–ธํŠธ๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ์š”์ฒญ์„ ์„œ๋ฒ„๋กœ ๋ถ„์‚ฐํ•œ๋‹ค.
    • ์—ญํ• 
      •  Load ๋ถ„์‚ฐ
      • EC2 instance health check
      • SSL ์ธ์ฆ์„œ ์ ์šฉ
      • ๊ณ ๊ฐ€์šฉ์„ฑ

 

โœ”๏ธCache

 

 

1. Database Cache

  1. Read๊ฐ€ ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ cache์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊นŒ์ง€ ๊ฐ€์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

i. ์†๋„์—์„œ ์ด์ ์ด ์žˆ๋‹ค

  1. ํ•˜์ง€๋งŒ cache๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๋น„์šฉ
    1. Cache instance ๋น„์šฉ
    2. ๊ฐœ๋ฐœ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ
    3. latency๋ฅผ ์ค„์ด๋Š”๊ฒƒ์ด ์„œ๋น„์Šค ์šด์˜์— ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.
  2. ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ๋„ ๊ณ ๋ คํ•ด์•ผํ•จ
    1. DB๋Š” ์—…๋ฐ์ดํŠธ ๋๋Š”๋ฐ, Cache๋Š” ์˜ˆ์ „ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด?
    2. Expiration ์ •์ฑ…์„ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜, sync๋ฅผ ์ž์ฃผ ํ•ด์ค˜์•ผํ•œ๋‹ค.
    3. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์„œ๋น„์Šค ์šด์˜๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
 
 

โœ”๏ธAWS Cache

 

  1. ElasticCache
  2. AWS DynamoDB Accelerator
    • DynamoDB์— ๋ถ™์–ด์„œ READ 10๋ฐฐ ๋น ๋ฆ„ 
  3. CloudFront - CDN
    •  CDN (Content Delivery Network)
      • staticํ•œ ๊ฒƒ๋“ค ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก
      • ์ฃผ๋กœ ์ด๋ฏธ์ง€๋‚˜ ์˜์ƒ

 

โœ”๏ธAWS CloudFront

 

  1. ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ region์ด Global a. Route53๋„ Global
  2. Edge Locationํ™œ์šฉ
    • AWS ์ž์ฒด์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋ ค ๊ฑฐ์ ์—๋‹ค๊ฐ€ ์ €์žฅ
    • ์—ฌ๋Ÿฌ data center์— cachingํ•ด์„œ latency๋ฅผ ์ค„์ธ๋‹ค.
  3. S3 ์—ฐ๋™ ์‹œ bucket policy ๋ณ€๊ฒฝ
    • CloudFront์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์ฃผ์–ด์•ผ CDNํ™œ์šฉ ๊ฐ€๋Šฅ
    • CloudFront ์ƒ์„ฑ ์‹œ S3 ์—ฐ๊ฒฐํ•˜๋ฉด, ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” policy ์ œ๊ณต

 

โœ”๏ธ ๋ฉ˜ํ† ๋‹˜์˜ ์ถ”์ฒœ ๋ฐฉ์‹

 

  • Serverless ๋ฐฉ์‹
    • ์„œ๋ฒ„๊ฐ€ ์—†์Œ - AWS๊ฐ€ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—
  • Lambda ์‚ฌ์šฉ
    • Application ์„œ๋ฒ„ ์ „์ฒด๋ฅผ ๋žŒ๋‹ค์™€ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ 
    • ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ ํ•œ ๋‘๊ฐœ ์ •๋„๋งŒ ์—ฐ๊ฒฐ๊ฐ€๋Šฅ
  • AWS๊ฐ€ ์ž๋™์œผ๋กœ scalingํ•ด์ค€๋‹ค.
  • ์‚ฌ์šฉํ•œ๋งŒํผ๋งŒ ๋น„์šฉ ์ง€๋ถˆ - ์ €๋ ดํ•˜๋‹ค.
 

 

โœ”๏ธ ๊ทธ ์™ธ ์ •๋ณด

  • ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰์ค‘์ด๋ผ๋ฉด ์šด์˜ํ•˜๊ธฐ ์‰ฝ๊ฒŒ Kubernates ๊ณ ๋ คํ•ด๋ณด์ž. ๊ทผ๋ฐ ๋น„์‹ธ๋‹ค
  • Scale Out๋ฐฉ์‹์€ ์ธ์  ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์†Œ์š”๋ผ์„œ ํฐ ๊ธฐ์—…๋“ค์€ Scale up ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.