sixth - HJ-Rich/2022-MyRSS GitHub Wiki


6์ฐจ ๋ฐ๋ชจ ์š”๊ตฌ์‚ฌํ•ญ

hikariCP ์ปค๋„ฅ์…˜ํ’€ ์„ค์ •

  • ์ˆ˜์น˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ •ํ•œ ์ด์œ ๋ฅผ ๋ฐœํ‘œํ•œ๋‹ค
  • hikariCP configuration ๋ณด๊ณ  ํ•„์š”ํ•œ ๊ฐ’ ์„ค์ •ํ•œ๋‹ค
  1. ํ’€ ์‚ฌ์ด์ฆˆ์— ๋Œ€ํ•ด : ๊ธฐ๋ณธ๊ฐ’ 10 ๊ทธ๋Œ€๋กœ ์œ ์ง€
image
  • ๊ณต์‹ ๋ฌธ์„œ ์™€ ๋ฌธ์„œ ๋‚ด ์˜์ƒ์„ ์ฐธ๊ณ 
  • ์‚ฌ์šฉ์ค‘์ธ ์ธ์Šคํ„ด์Šค ์ฝ”์–ด๊ฐ€ 1๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์„ค์ •์ธ 1์—์„œ ํ’€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ˆ˜์ •ํ•  ํ•„์š”๋ฅผ ๋А๋ผ์ง€ ๋ชปํ–ˆ์Œ.
  • ์‹ค์ œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ, ์ตœ๋Œ€ ํ’€ ์‚ฌ์ด์ฆˆ๋ฅผ 100์œผ๋กœ ๋Š˜๋ฆฌ๋”๋ผ๋„, ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์—†์—ˆ๊ณ , ์ปค๋„ฅ์…˜์„ ์ตœ๋Œ€ 40๊ฐœ๊นŒ์ง€๋งŒ ์ƒ์„ฑํ•จ

  1. ๊ทธ์™ธ ์„ค์ •์— ๋Œ€ํ•ด : ๊ถŒ์žฅ๊ฐ’ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
  • Statement์˜ ์บ์‹ฑ์— ๋Œ€ํ•œ ์„ค์ •์ด ๋Œ€๋ถ€๋ถ„.
  • Hikari๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์—์„œ ์„ค์ • ๋ณ€๊ฒฝ์„ ๊ถŒ์žฅํ•˜๋Š” ์ด์œ ๋ฅผ ์ถ”์ธกํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    • ์ดˆ๊ธฐ์— ์„ค์ •๋๋˜ ๊ธฐ๋ณธ๊ฐ’ ๋ณด๋‹ค๋Š” ๋” ๋„‰๋„‰ํ•˜๊ฒŒ ์„ค์ •์„ ์ค„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ฐœ์ „ํ•จ
    • MySQL ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ๋˜๋ฉฐ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์บ์‹ฑ์ด ๊ฐ€๋Šฅํ•ด์ง
  • Statement ์บ์‹ฑ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ฆฌ๊ณ , ์บ์‹ฑ์„ ํ™œ์„ฑํ™”ํ•ด์ฃผ๋Š” ์˜ต์…˜๋“ค. ๊ถŒ์žฅ ๊ฐ’ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•จ.
dataSource.cachePrepStmts=true
dataSource.prepStmtCacheSize=250
dataSource.prepStmtCacheSqlLimit=2048
dataSource.useServerPrepStmts=true
dataSource.useLocalSessionState=true
dataSource.rewriteBatchedStatements=true
dataSource.cacheResultSetMetadata=true
dataSource.cacheServerConfiguration=true
dataSource.elideSetAutoCommits=true
dataSource.maintainTimeStats=false



๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฐฐํฌ ๊ณผ์ •์„ ๋ฐœํ‘œํ•œ๋‹ค

  • ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์ค‘๊ฐ„์—๋„ ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค๋ฅผ ๊ณ„์†ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค

๊ตฌํ˜„ ๊ณผ์ •

  • ์•„์ด๋””์–ด ์ •๋ฆฌ

    • ์ด์ค‘ํ™”๋ฅผ ํ•˜์ง€ ์•Š์•˜๊ธฐ์— ๋ธ”๋ฃจ ๊ทธ๋ฆฐ ๋ฐฐํฌ๋กœ ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ์„ ํƒ
    • A, B ํฌํŠธ ๋‘๊ฐœ๋ฅผ ์˜ค๊ฐ€๋ฉฐ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •
    • ํ˜„์žฌ ๋ฐฐํฌ๋œ ํฌํŠธ๊ฐ€ A์ธ์ง€ B์ธ์ง€ ์‹๋ณ„ ํ›„ ํ˜„์žฌ ๋ฐฐํฌ๋˜์–ด ์žˆ์ง€ ์•Š์€ ํฌํŠธ๋ฅผ ์‹ ๊ทœ ๋ฐฐํฌ ๋Œ€์ƒ ํฌํŠธ๋กœ ์„ค์ •
    • ์‹ ๊ทœ ๋ฐฐํฌ ๋Œ€์ƒ ํฌํŠธ์— ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ kill ์ˆ˜ํ–‰
    • Jenkins๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ jar ํŒŒ์ผ์„ ์‹ ๊ทœ ๋ฐฐํฌ ๋Œ€์ƒ ํฌํŠธ์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰
    • 20์ดˆ ๋Œ€๊ธฐ ํ›„ actuator health check ์—”๋“œํฌ์ธํŠธ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ status:UP ์ƒํƒœ ํ™•์ธ ๋ฐ ์‹คํŒจ ์‹œ ํ”„๋กœ์„ธ์Šค ์ค‘๋‹จ
    • Nginx ์„ค์ • ์ˆ˜์ • ๋ฐ reload
    • ๊ธฐ์กด ๋ฐฐํฌ ๋Œ€์ƒ ํฌํŠธ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ
  • ์‹ค์ œ ๊ตฌํ˜„

    • ์‰˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์กฐ๊ฑด๋ฌธ, ๋ณ€์ˆ˜ ์ƒ์„ฑ ๋ฐ ๊ฐ’ ํ• ๋‹น, ๋ณ€์ˆ˜ ์žฌ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ํ•™์Šต
      • A, B ํฌํŠธ ์‹๋ณ„ ๋ฐ ๋ณ€์ˆ˜ ์ƒ์„ฑ ๋ฐ ํ• ๋‹น, ๋ฐฐํฌ ๋Œ€์ƒ ํฌํŠธ์— ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์ค‘์ผ ๊ฒฝ์šฐ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ
    • ๊ธฐ์กด ๋ฐฐํฌ์—์„œ ์‚ฌ์šฉํ•˜๋˜ nohup ๋ฌธ๋ฒ•์œผ๋กœ ์‹คํ–‰. sleep ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ๋ฐฐํฌ ๋Œ€๊ธฐ
    • curl -s ๋ช…๋ น์„ ํ†ตํ•ด ํ—ฌ์Šค์ฒดํฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹น ๋ฐ status:UP๊ณผ ์‘๋‹ต ๋ฌธ์ž์—ด์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ
      • ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•ด์•ผ ํ–ˆ๋Š”๋ฐ, exit ๋ฌธ์žฅ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์ด์Šˆ ๋ฐœ์ƒ
      • early return ์„ ์œ„ํ•ด ํ•จ์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐœ์„ 
    • Nginx์˜ reload ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด restart ์—†์ด proxy_pass ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ์„ ์ด์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •
      • ๋™์  ๋ณ€๊ฒฝ์„ ์œ„ํ•ด proxy_pass ๋ฅผ ๋ณ€์ˆ˜์ฒ˜๋ฆฌ ํ›„, ๋ณ€์ˆ˜์™€ ๊ฐ’์„ ๋‹ด์€ ํŒŒ์ผ์„ ์™ธ๋ถ€์—์„œ include ํ•˜๋„๋ก nginx ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •
      • WAS ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ์„ค์ •์„ ๋‹ด์€ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„, scp๋ฅผ ํ†ตํ•ด Nginx ์„œ๋ฒ„๋กœ ์ „์†กํ•˜์—ฌ include ๋  ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ ์ฒ˜๋ฆฌ
      • ssh ๋ช…๋ น์„ ํ†ตํ•ด reload ํ˜ธ์ถœ
    • ์—ฌ๊ธฐ๊นŒ์ง€ ์„ฑ๊ณต๋˜์—ˆ์„ ๊ฒฝ์šฐ, ๊ธฐ์กด ๋ฐฐํฌ ํฌํŠธ ์ข…๋ฃŒ
  • ๋ฌด์ค‘๋‹จ ๊ฒ€์ฆ ๋ฐ ๊ฐ€์šฉ์„ฑ ์ธก์ •

image image
  • ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚จ ํ›„, Jmeter๋ฅผ ์ด์šฉํ•ด ์ดˆ๋‹น 10๋ฒˆ์˜ ์š”์ฒญ์„ ์ „์†ก ํ…Œ์ŠคํŠธ
  • ์•ฝ 1400๊ฑด์˜ ์š”์ฒญ ์ค‘, 2๊ฑด์ด ์ •์ƒ ์‘๋‹ต์— ์‹คํŒจํ•จ
  • ์ดˆ๋‹น 10๋ฒˆ์—์„œ 2๊ฑด์ด๋‹ˆ, ํฌ๊ฒŒ ์žก์•„๋„ 0.5์ดˆ ์ •๋„ ๋‹ค์šดํƒ€์ž„์œผ๋กœ ๊ฐ€์ •
  • 1์ฃผ์ผ์— ํ•œ ๋ฒˆ ๋ฐฐํฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, 1๋…„์— ๋‹ค์šดํƒ€์ž„์ด 30์ดˆ ๋ฏธ๋งŒ์ด๋ฏ€๋กœ six nine, 99.9999% ๊ฐ€์šฉ์„ฑ์œผ๋กœ ํŒ์ •



1,000๋งŒ๋ช…์ด ์‚ฌ์šฉํ•ด๋„ ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒ€์˜ ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„  ๋ฐฉํ–ฅ์„ ๊ณ ๋ฏผํ•œ๋‹ค (๊ตฌํ˜„ X)

์ „์ œ


1๋ฐฑ ๋ช… ์ดํ•˜ ์‚ฌ์šฉ์ž : WAS & DB ๋ถ„๋ฆฌ, ์„œ๋ธŒ๋„ท ๋ถ„๋ฆฌ


image

  • ์ดˆ๊ธฐ ๊ฐœ๋ฐœ์„ ๋งˆ์น˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์‹œ์ 
  • ๋ชฉํ‘œ
    • ๋†’์€ ์„ฑ๋Šฅ ๋ณด๋‹ค๋Š” ๋น„์šฉ ํšจ์œจ์ ์ผ ๊ฒƒ
    • WAS, DB ์„œ๋ฒ„์˜ ๋ถ„๋ฆฌ
    • ๊ธฐ๋ณธ์ ์ธ ๋ณด์•ˆ
    • ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง
  • EC2 ์ธ์Šคํ„ด์Šค ์„ ํƒ
    • ๊ณผ๋„ํ•˜๊ฒŒ ๋†’์€ ์„ฑ๋Šฅ์„ ์„ ํƒํ•˜๋ฉด ์ดˆ๊ธฐ ๋น„์šฉ ๋ถ€๋‹ด์ด ์ปค์ง
    • ์ง€๋‚˜์น˜๊ฒŒ ๋‚ฎ์€ ์„ฑ๋Šฅ์„ ์„ ํƒํ•˜๋ฉด ๋น„์šฉ์€ ์•„๋ผ์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
    • ์ ์ ˆํ•œ ์„ฑ๋Šฅ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜๋˜, ์ถ”ํ›„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์  ์ฐธ๊ณ .
  • Route 53
    • AWS์˜ DNS ์„œ๋น„์Šค
    • Public IP๋ฅผ AWS VPC ๋‚ด ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค
  • ์„œ๋ธŒ๋„ท Public/Private ๋ถ„๋ฆฌ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š” ์„œ๋ธŒ๋„ท๊ณผ ์•„๋‹Œ ์„œ๋ธŒ๋„ท์„ ๋ถ„๋ฆฌํ•จ
    • WAS๋Š” ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท, DB๋Š” ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท
  • AWS Shield ๋ฅผ ํ†ตํ•ด DDos ๋ฐฉ์–ด
  • CloudWatch ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ AWS SNS๋ฅผ ์ด์šฉํ•œ ์•Œ๋žŒ ๊ตฌ์„ฑ



1์ฒœ ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž : ELB + WAS ์ด์ค‘ํ™” + Managed DB ์ด์ค‘ํ™”


image

  • ์•„์ง ์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค์ด์ง€๋งŒ, ์ด์ œ๋ถ€ํ„ฐ๋Š” ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€๋ฅผ ๋Œ€๋น„ํ•ด์•ผ ํ•œ๋‹ค
  • ๋ชฉํ‘œ
    • AWS ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ + WAS ์ด์ค‘ํ™”
    • DB ์ด์ค‘ํ™”
    • Managed DB ์‚ฌ์šฉ (์ธ์Šคํ„ด์Šค์— ์ง์ ‘ ์„ค์น˜ํ•œ MySQL์ด ์•„๋‹Œ, AWS Managed DB)
  • ๋‹ค์ค‘ ๊ฐ€์šฉ ์˜์—ญ ํ™œ์šฉ
    • AWS ํ•˜๋‚˜์˜ ๋ฆฌ์ „์—๋Š” ์ตœ์†Œ 2๊ฐœ ์ด์ƒ์˜ ๊ฐ€์šฉ ์˜์—ญ์ด ์กด์žฌํ•œ๋‹ค.
    • ๊ฐ€๋ น ์„œ์šธ ๋ฆฌ์ „์—๋Š” 4๊ฐœ์˜ ๊ฐ€์šฉ ์˜์—ญ์ด ์กด์žฌํ•œ๋‹ค.
    • AWS ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•ด ์ด์ค‘ํ™”๋ฅผ ํ•  ๋•Œ, ์•„์˜ˆ ๋‹ค๋ฅธ ๊ฐ€์šฉ ์˜์—ญ์— WAS๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค
  • ELB๋ฅผ ์ด์šฉํ•œ ์ˆ˜ํ‰์  ํ™•์žฅ
    • ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด WAS๋ฅผ ์ด์ค‘ํ™”ํ•˜๋ ค๋ฉด, ์ด๋ฅผ ์•ž์—์„œ ๋ถ„๋ฐฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ๋ˆ„๊ตฐ๊ฐ€ ํ•ด์ค˜์•ผํ•จ
    • AWS์˜ ELB๊ฐ€ ์ด๋ฅผ ํ•ด์คŒ. Elastic Load Balancer
    • ์„œ์šธ ๋ฆฌ์ „ ๋‚ด A ๊ฐ€์šฉ์˜์—ญ์— WASํ•˜๋‚˜, B ๊ฐ€์šฉ์˜์—ญ์— WASํ•˜๋‚˜๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , ELB๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ€์šฉ์˜์—ญ์— ์žˆ๋Š” WAS ๋‘˜์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•ด์คŒ
  • Managed DB๋กœ ์ „ํ™˜
    • EC2์— ์„ค์น˜๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹Œ AWS๊ฐ€ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” DB์„œ๋น„์Šค ์ด์šฉ
    • ๊ด€๋ฆฌ ํฌ์ธํŠธ โคต๏ธ
    • ํ™•์žฅ์„ฑ, ๊ฐ€์šฉ์„ฑ, ๋‚ด๊ตฌ์„ฑ, ์„ฑ๋Šฅ โคด๏ธ
    • ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋ถ„๋ฆฌ
    • RDS ์œ ํ˜• ์ค‘ Amazon Aurora ์†Œ๊ฐœ
      • MySQL, PostgreSQL๊ณผ ํ˜ธํ™˜
      • ๋‚ด๋ถ€ ํŠœ๋‹์„ ํ†ตํ•ด ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค๊ณ  ํ•จ
      • 3๊ฐœ ๊ฐ€์šฉ์˜์—ญ, 6๋ฒŒ ๋ณต์ œ, ์ตœ๋Œ€ 15๊ฐœ ๋ณต์ œ๋ณธ, ์ตœ๋Œ€ 64TB ์ž๋™ํ™•์žฅ



ALB์™€ NLB


image

  • ํฐ ๋ฒ”์ฃผ์—์„œ ๋‘˜ ๋‹ค AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ELB ์„œ๋น„์Šค์˜ ์ผ์ข…์ด๋‹ค.
  • ALB๋Š” Application Load Balancer
    • L7 ๊ธฐ๋ฐ˜, HTTP2, HTTPS ์ง€์›
    • ์†Œ์Šค IP๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š์Œ. ํ•„์š”์‹œ X-Forwarded-For ๊ฐ™์€ ํ—ค๋” ์ด์šฉํ•ด์•ผํ•จ
  • NLB๋Š” Network Load Balancer
    • L4 ๊ธฐ๋ฐ˜, TCP, UDP, TLS ์ง€์›
    • ALB์™€ ๋‹ฌ๋ฆฌ ๊ณ ์ •IP ์‚ฌ์šฉ ๊ฐ€๋Šฅ



1๋งŒ ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž


image

  • ๋” ์ด์ƒ ์†Œ๊ทœ๋ชจ๊ฐ€ ์•„๋‹˜. ์ค‘๊ทœ๋ชจ ์ •๋„๋Š” ๋จ
  • ๋ชฉํ‘œ
    • ์„ฑ๋Šฅ์— ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹ ๊ฒฝ์จ์•ผํ•  ์‹œ๊ธฐ
    • ์ธ์Šคํ„ด์Šค ์ฆ๊ฐ€๋กœ ์ธํ•œ ๊ด€๋ฆฌ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•  ์‹œ๊ธฐ. ์ž๋™ํ™” ์‹œ์ž‘ํ•ด์•ผ.
    • ์ธ์Šคํ„ด์Šค ์ฆ๊ฐ€๋กœ ์ธํ•œ ๋น„์šฉ์„ ์ค„์ผ ๋ฐฉ๋ฒ•๋„ ํ•„์š”
    • ๋ณด์•ˆ๋„ ๊ฐ•ํ™”ํ•ด์•ผํ•จ
  • Auto Scaling Group์„ ์ด์šฉํ•ด ์„ฑ๋Šฅ, ๊ฐ€์šฉ์„ฑ, ๋น„์šฉ ํšจ์œจ์„ ๋ชจ๋‘ ์ฑ™๊น€
  • CloudFront, S3๋ฅผ ์ด์šฉํ•ด ์ •์ , ๋™์  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์บ์‹ฑ ์ ์šฉ
  • AWS Systems Manager๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ ํŽธ์˜์„ฑ ์ฆ๋Œ€
  • AWS WAF, Shield, GuardDuty ๋ฅผ ์ด์šฉํ•ด ๋ณด์•ˆ ๊ณ ๋„ํ™”



AWS Auto Scaling Group


image

  • ์˜จ ํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์ด๋ผ๋ฉด ํ”ผํฌ ํŠธ๋ž˜ํ”ฝ์— ๋งž์ถฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„  ์˜คํ†  ์Šค์ผ€์ผ๋ง์„ ํ†ตํ•ด ์ตœ์ ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž๋™์œผ๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅ.
  • AWS ์˜คํ†  ์Šค์ผ€์ผ๋ง
    • ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน์— ์“ฐ๋ ˆ๋“œํ’€, ์ปค๋„ฅ์…˜ํ’€ ๋งŒ๋“ค๋“ฏ์ด ์ตœ์†Œ ์ตœ๋Œ€๊ฐ’์„ ์„ค์ •
    • ์„œ๋ฒ„ ์žฅ์• ์‹œ ์ตœ์†Œ ์ˆ˜๋Ÿ‰๋งŒํผ ์ž๋™ ๋ณต๊ตฌ
    • CloudWatch ์ง€ํ‘œ ๊ธฐ๋ฐ˜ ์Šค์ผ€์ผ๋ง
    • ๋‹ค๋ฅธ RDS์™€ AuroraDB๋Š” DB ์ธ์Šคํ„ด์Šค ์ž์ฒด๋ฅผ ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ฐ€๋Šฅ
      • ๋‹ค๋ฅธ RDS๋“ค์€ ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰๋งŒ ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ฐ€๋Šฅ
    • AuroraDB ์ธ์Šคํ„ด์Šค CPU ๋ฉ”ํŠธ๋ฆญ์„ ๊ธฐ์ค€์œผ๋กœ ์˜คํ†  ์Šค์ผ€์ผ๋ง ์„ค์ • ๊ฐ€๋Šฅ



10๋งŒ ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž


image

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋กœ ์ „ํ™˜์„ ์‹œ์ž‘ํ•ด์•ผํ•  ์‹œ๊ธฐ

    • ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์žˆ์–ด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋„์ž…ํ•˜์ง„ ์•Š์Œ
    • ์ปจํ…Œ์ด๋„ˆ๋Š” ํ‘œ์ค€ํ™”, ๊ฒฝ๋Ÿ‰ํ™”, ์ด์‹์„ฑ, ์‰ฌ์šด ๋ฐฐํฌ๋กœ ์ธํ•ด MSA ํ•„์ˆ˜
    • MySQL : AuroraDB = Kubernetes : EKS(Elastic Kubernetes Service)
  • DB ์ฝ๊ธฐ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ์บ์‹ฑ ์ ์šฉ ํ•„์š”

  • EKS๋ฅผ ์ด์šฉํ•ด EC2์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€์ฒด

  • DB ์ฝ๊ธฐ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ElasticCache ์‚ฌ์šฉ.

    • Cache Miss ์ผ ๋•Œ์—๋งŒ DB๋กœ ์š”์ฒญ ์ „์†ก



100๋งŒ ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž


image image

  • ๋ชฉํ‘œ
    • ์šฉ๋„์— ๋งž๋Š” DB ์ ์šฉ
    • ์ƒค๋”ฉ์„ ํ†ตํ•œ DB ๋ถ„์‚ฐ
    • ์žฌํ•ด๋ณต๊ตฌ (DR) ๋ฐ ๋ฉ€ํ‹ฐ๋ฆฌ์ „ ์„œ๋น„์Šค
  • NoSQL ์‚ฌ์šฉํ•˜๊ธฐ - Amazon DynamoDB
    • ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์œ„์‹œ๋ฆฌ์ŠคํŠธ ์ฒ˜๋Ÿผ ์“ฐ๊ธฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ ์ ˆ
    • ๋Œ€๊ทœ๋ชจ ์š”์ฒญ์—๋„ ํ•œ ์ž๋ฆฟ์ˆ˜ ms ์‘๋‹ต์‹œ๊ฐ„
  • ์ฝ๊ธฐ ์ž‘์—…์€ ElasticCache โ†’ Cash miss ์‹œ DB ๋˜๋Š” DynamoDB
  • ์“ฐ๊ธฐ ์ž‘์—…์€ ์ผ๋ถ€ ์„ ํƒํ•œ ์ž‘์—…์€ DynamoDB์— ๋” ๋น ๋ฅด๊ฒŒ
  • CDK - Infra as a code
    • ์žฌํ•ด ๋ณต๊ตฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ
    • ํŒŒ์ด์ฌ, ๋…ธ๋“œJS, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ, ์ž๋ฐ” ๋“ฑ ์–ธ์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ์ธํ”„๋ผ, ์„œ๋น„์Šค ๊ตฌ์„ฑ ์ž๋™ํ™” ๊ฐ€๋Šฅ
    • ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ ๊ฐ€๋Šฅ
    • DR ์ƒํ™ฉ์—์„œ ๋ณต๊ตฌํ•˜๋„๋ก ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ๋ฐฑ์—…
    • S3์™€ DB์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋ฆฌ์ „์— ๋ณต์ œ์‹œ์ผœ๋‘˜ ์ˆ˜ ์žˆ์Œ
    • ๋ฐ์ดํ„ฐ๋Š” ๋ฏธ๋ฆฌ ๋ณต์ œ ๋˜๋Š” ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉ
    • DR ์ƒํ™ฉ์—์„œ ๊ตฌ์„ฑํ•ด๋‘์—ˆ๋˜ CDK๋ฅผ ์ด์šฉํ•ด ๋น ๋ฅด๊ฒŒ ๋ณต๊ตฌ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ



1000๋งŒ ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž


image image

  • ๋ชฉํ‘œ
    • ๋‹ค์ค‘ ๋ฆฌ์ „๋ณ„ ์„œ๋น„์Šค๋ฅผ ํ™œ์„ฑํ™”
  • Aurora ๊ธ€๋กœ๋ฒŒ DB
    • ์—ฌ๋Ÿฌ ๋ฆฌ์ „์— ์ฝ๊ธฐ ์ „์šฉ์„ ๊ตฌ์„ฑ (ex. ์„œ์šธ, ๋Ÿฐ๋˜, ์‹œ๋“œ๋‹ˆ)
    • ๋‹จ, ์“ฐ๊ธฐ๋Š” ํ•œ ๊ณณ์—์„œ๋งŒ ๊ฐ€๋Šฅ
  • DynamoDB ๊ธ€๋กœ๋ฒŒ ํ…Œ์ด๋ธ”
    • ์—ฌ๋Ÿฌ ๋ฆฌ์ „์—์„œ ์ฝ๊ธฐ ์“ฐ๊ธฐ ๊ฐ€๋Šฅ
    • ๋ณ€๊ฒฝ์ด ์ž๋™์œผ๋กœ ๊ธ€๋กœ๋ฒŒ ๋ฆฌ์ „์— ์ „ํŒŒ๋จ
  • ElasticCache ๊ธ€๋กœ๋ฒŒ ๋ฐ์ดํ„ฐ์Šคํ† ์–ด
    • ์ฝ๊ธฐ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋˜ ElasticCache๋„ ๊ธ€๋กœ๋ฒŒํ™”



๊ฒฐ๋ก 

  • SPOF ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ์ด์ค‘ํ™”, Failover, ๋‹ค์ค‘ ๊ฐ€์šฉ์˜์—ญ, ๋‹ค์ค‘ ๋ฆฌ์ „
  • ์˜คํ†  ์Šค์ผ€์ผ๋ง
  • ์„ฑ๋Šฅ, ๋ถ€ํ•˜๋ถ„์‚ฐ์„ ์œ„ํ•ด ์บ์‹œ ์‚ฌ์šฉ
  • ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋ณด์•ˆ

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ ์ „์ฒด ๋ณด๊ธฐ



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