์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ์— ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜. ์–ด๋А ๊ณ„์ธต์—์„œ ๋ถ„์‚ฐํ•˜๋А๋ƒ(DNS / L4 / L7), VIP๋ฅผ ์–ด๋–ป๊ฒŒ ๋„์šฐ๋А๋ƒ(๊ณ ์ • IP / VRRP / BGP), ํ—ฌ์Šค์ฒดํฌยทfailover๋ฅผ ์–ด๋””์„œ ์ฒ˜๋ฆฌํ•˜๋А๋ƒ๊ฐ€ ์„ค๊ณ„ ์ถ•์ด๋‹ค.

๋ถ„๋ฅ˜

DNS ๋ ˆ๋ฒจ

๋„๋ฉ”์ธ์˜ A ๋ ˆ์ฝ”๋“œ์— ์—ฌ๋Ÿฌ IP๋ฅผ ๋งคํ•‘ํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ›์•„๊ฐ€๋Š” IP๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ๋ฐฉ์‹. **DNS Round Robin (DNS RR)**์ด ๋Œ€ํ‘œ์ .

  • ๊ฐ€์žฅ ์›์‹œ์ ์ด๊ณ  ์™ธ๋ถ€ ์˜์กด์„ฑ ์—†์Œ.
  • ํ•œ๊ณ„:
    • ํ—ฌ์Šค์ฒดํฌ ๋ถ€์žฌ: ๋…ธ๋“œ 1๋Œ€๊ฐ€ ๋‹ค์šด๋ผ๋„ DNS๋Š” ๊ทธ IP๋ฅผ ๊ณ„์† ๋ฐ˜ํ™˜. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃฝ์€ IP๋ฅผ ๋ฐ›์œผ๋ฉด ๊ทธ๋ƒฅ ์‹คํŒจ.
    • DNS ์บ์‹ฑ์œผ๋กœ ๋ถ„์‚ฐ ๋น„๊ท ๋“ฑ: TTL ๋™์•ˆ ๋™์ผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ IP์— ๋ฌถ์ž„.
    • ๋™์  failover ๋ถˆ๊ฐ€: DNS ๊ฐฑ์‹ ์ด TTL์— ๋ฌถ์—ฌ ์ฆ‰์‹œ์„ฑ์ด ์—†์Œ.
  • ๋ฐœ์ „ํ˜•: GSLB(Route 53 health check, NS1 ๋“ฑ)๋Š” DNS ์‘๋‹ต์„ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•ด ํ—ฌ์Šค์ฒดํฌยท์ง€์—ญ๋ณ„ ๋ผ์šฐํŒ…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

L4 (์ „์†ก ๊ณ„์ธต)

IP/TCP/UDP ๋ ˆ๋ฒจ์—์„œ ๋ถ„์‚ฐ. ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋ณด์ง€ ์•Š์œผ๋ฏ€๋กœ ๋น ๋ฅด๊ณ  ํ”„๋กœํ† ์ฝœ ์ค‘๋ฆฝ์ .

  • VIP(Virtual IP) + Failover: ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ IP๋ฅผ ๊ณต์œ ํ•˜๊ณ , ์•กํ‹ฐ๋ธŒ ๋…ธ๋“œ๊ฐ€ ์ฃฝ์œผ๋ฉด ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ์ธ๊ณ„.
    • Keepalived / VRRP: ์ „ํ†ต์ ์ธ On-premise ํŒจํ„ด.
    • MetalLB Layer 2 / BGP ๋ชจ๋“œ: On-premise K8s ํ™˜๊ฒฝ์—์„œ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€. BGP ๋ชจ๋“œ๋Š” ๋ผ์šฐํ„ฐ์™€ BGP ํ”ผ์–ด๋งํ•˜์—ฌ ECMP๋กœ ๋ถ„์‚ฐ๊นŒ์ง€ ์ฒ˜๋ฆฌ.
    • kube-vip: ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ VIPยทService VIP ๋ชจ๋‘ ์ฒ˜๋ฆฌ. ARP ๋˜๋Š” BGP ๊ธฐ๋ฐ˜.
  • IPVS / LVS: Linux ์ปค๋„ ๋ ˆ๋ฒจ L4 LB. K8s kube-proxy์˜ ipvs ๋ชจ๋“œ๋„ ๊ฐ™์€ ๊ธฐ์ˆ .
  • ํด๋ผ์šฐ๋“œ ๋งค๋‹ˆ์ง€๋“œ: AWS NLB, GCP Network LB, Azure LB. ํ—ฌ์Šค์ฒดํฌยท์ž๋™ failoverยท๊ณ ๊ฐ€์šฉ์„ฑ์„ ๋งค๋‹ˆ์ง€๋“œ๋กœ ์ œ๊ณต.

L7 (์‘์šฉ ๊ณ„์ธต)

HTTP ํ—ค๋”ยท๊ฒฝ๋กœยทํ˜ธ์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…. URL/path/Host/Header ๋ฃฐ๋กœ ๋ฐฑ์—”๋“œ ์„ ํƒ.

  • ์†Œํ”„ํŠธ์›จ์–ด: NGINX, HAProxy, Envoy, Traefik.
  • K8s: Ingress Controller, Gateway API ๊ตฌํ˜„์ฒด(Envoy Gateway, Istio, NGINX Gateway Fabric, AGC ๋“ฑ).
  • ํด๋ผ์šฐ๋“œ ๋งค๋‹ˆ์ง€๋“œ: AWS ALB, GCP HTTP(S) LB, Azure Application Gateway.

์•Œ๊ณ ๋ฆฌ์ฆ˜

์•Œ๊ณ ๋ฆฌ์ฆ˜๋™์ž‘๋น„๊ณ 
Round Robin์ˆœ์„œ๋Œ€๋กœ ๋ฐฑ์—”๋“œ ์ˆœํ™˜๊ฐ€์žฅ ๋‹จ์ˆœ, ๋ฐฑ์—”๋“œ ๋™์งˆ ๊ฐ€์ •
Least Connectionsํ˜„์žฌ ์—ฐ๊ฒฐ ์ˆ˜ ๊ฐ€์žฅ ์ ์€ ๋ฐฑ์—”๋“œ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ํŽธ์ฐจ ํด ๋•Œ ์œ ํšจ
Source IP Hashํด๋ผ์ด์–ธํŠธ IP ํ•ด์‹œ ๊ธฐ๋ฐ˜ ๊ณ ์ •sticky session ํšจ๊ณผ
Weighted๊ฐ€์ค‘์น˜ ๋น„๋ก€ ๋ถ„์‚ฐ๋ฐฑ์—”๋“œ ์‚ฌ์–‘ ์ฐจ์ด ๋ณด์ •
Maglev / EH์ผ๊ด€์„ฑ ํ•ด์‹ฑ ๊ธฐ๋ฐ˜ (Google)๋…ธ๋“œ ์ถ”๊ฐ€ยท์‚ญ์ œ ์‹œ ์žฌํ• ๋‹น ์ตœ์†Œํ™”

ํ•ต์‹ฌ ๊ณ ๋ ค์‚ฌํ•ญ

  • ํ—ฌ์Šค์ฒดํฌ: ๋ชจ๋˜ LB์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ. DNS RR์ด ๊ฐ€์žฅ ์•ฝํ•จ, ํด๋ผ์šฐ๋“œ LB๊ฐ€ ๊ฐ€์žฅ ๊ฐ•ํ•จ.
  • ์„ธ์…˜ ์œ ์ง€(Sticky Session): ์ƒํƒœ ์žˆ๋Š” ๋ฐฑ์—”๋“œ๋ฅผ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ-๋ฐฑ์—”๋“œ ๊ณ ์ •. cookie ๊ธฐ๋ฐ˜(L7) ๋˜๋Š” source IP hash(L4).
  • TLS ์ข…๋‹จ: L7 LB๋Š” ๋ณดํ†ต TLS termination์„ ๋‹ด๋‹น. ๋ฐฑ์—”๋“œ๊นŒ์ง€ TLS๋ฅผ ๋Œ๊ณ  ๊ฐˆ์ง€(end-to-end) ๊ฒฐ์ • ํ•„์š”.
  • PROXY protocol: L4 LB๊ฐ€ ํด๋ผ์ด์–ธํŠธ IP๋ฅผ ๋ฐฑ์—”๋“œ์— ์ „๋‹ฌํ•˜๋Š” ํ‘œ์ค€. NGINXยทHAProxy ๋ชจ๋‘ ์ง€์›.

๋ฌด์ค‘๋‹จ ์ด๊ด€ (Zero-downtime Migration)

Docker Compose โ†’ K8s ๊ฐ™์€ ๋ฐฑ์—”๋“œ ์ธํ”„๋ผ ์ด๊ด€ ์‹œ ํ”ํ•œ ํ•จ์ •๊ณผ ์ •๋‹ต.

Backend: LB ๋ฐฑ์—”๋“œ ํ’€ ๊ฐ€์ค‘์น˜

DNS ๊ฐ€์ค‘์น˜ ๋ผ์šฐํŒ…(Route 53 weighted ๋“ฑ)๋งŒ์œผ๋กœ๋Š” ๋ฌด์ค‘๋‹จ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค โ€” resolverยทOSยทJVM ์บ์‹œ๋กœ TTL์ด ๋ฌด์‹œ๋˜์–ด ์ฆ‰์‹œ ๋ฐ˜์˜์ด ์•ˆ ๋จ. DNS๋Š” ์œ ์ž… ๋น„์œจ ์กฐ์ ˆ ๋„๊ตฌ์ด์ง€ ์Šค์œ„์นญ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋‹ค.

์ •๋‹ต: ๋‹จ์ผ LB ๋’ค์— ๊ตฌยท์‹  ๋ฐฑ์—”๋“œ ํ’€์„ ๋™์‹œ์— ๋“ฑ๋กํ•˜๊ณ  LB ๋ ˆ๋ฒจ์—์„œ ๊ฐ€์ค‘์น˜ ์กฐ์ ˆ.

  • ALB target group weighted routing (์ฆ‰์‹œ ๋ฐ˜์˜, ํ—ฌ์Šค์ฒดํฌยทconnection draining ์ž๋™)
  • ๋” ์ •๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜๋ฉด Service Mesh(Istio) traffic split
  • ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด(DBยท์„ธ์…˜ store)๋Š” ์–‘์ชฝ์ด ๊ฐ™์€ ๊ณณ์„ ๋ณด๋„๋ก ์‚ฌ์ „ ์ •๋ ฌ ํ•„์ˆ˜

Frontend: Hash ๊ธฐ๋ฐ˜ Cache Busting

๋ธŒ๋ผ์šฐ์ €ยทCDN ์บ์‹œ ๋•Œ๋ฌธ์— ๋ฐฑ์—”๋“œ๋งŒ ์˜ฎ๊ฒจ์„  ์•ˆ ๋จ โ€” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์˜› ๋ฒˆ๋“ค์„ ๋“ค๊ณ  ์ƒˆ API๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊นจ์ง.

์ •๋‹ต: ๋ฒˆ๋“ค ํŒŒ์ผ๋ช…์— contenthash๋ฅผ ๋ฐ•์•„ ์ƒˆ ๋ฒ„์ „์„ ์ƒˆ ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ณ , HTML๋งŒ ์งง์€ TTL/no-cache๋กœ ๋‘”๋‹ค.

  • app.[contenthash].js โ€” ๋‚ด์šฉ ๊ฐ™์œผ๋ฉด ํŒŒ์ผ๋ช… ๋™์ผ, CDN immutable ์บ์‹ฑ ์ ๊ทน ํ™œ์šฉ
  • HTML์€ ๋งค๋ฒˆ fresh fetch โ†’ ๊ทธ ์•ˆ์˜ ์ƒˆ hash ๋ฒˆ๋“ค ์ฐธ์กฐ
  • SPA์— Service Worker๊ฐ€ ์žˆ์œผ๋ฉด ์ƒˆ SW ๊ฐ์ง€ ์‹œ ์‚ฌ์šฉ์ž ์ƒˆ๋กœ๊ณ ์นจ ์œ ๋„(skipWaiting + clients.claim) ๋ณ„๋„ ์ฒ˜๋ฆฌ

๊ฒฝํ—˜ ํšŒ๊ณ 

SK hynix On-premise (2021~2024)

๊นกํ†ต ํ”„๋ก์‹œ ๋…ธ๋“œ 3๋Œ€๋ฅผ ๋‘๊ณ , ๋„๋ฉ”์ธ์˜ A ๋ ˆ์ฝ”๋“œ๋ฅผ 3๊ฐœ IP์— ๋งคํ•‘ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ–ˆ๋‹ค. ํ”„๋ก์‹œ ๋…ธ๋“œ๋Š” ๋ฐฑ์—”๋“œ๋กœ ํฌ์›Œ๋”ฉ๋งŒ ๋‹ด๋‹น.

  • ํด๋ผ์šฐ๋“œ LB๋„ K8s MetalLB/kube-vip๋„ ์—†๋Š” ์ตœ์†Œ ๊ตฌํ˜„์ด์—ˆ๋‹ค.
  • ์ง€๊ธˆ์ด๋ผ๋ฉด: MetalLB BGP ๋˜๋Š” kube-vip๋กœ VIP failover๊นŒ์ง€ ์ž๋™ํ™”ํ•  ์˜์—ญ์ด๋‹ค.