KR_CS_Cloud_Native - somaz94/DevOps-Engineer GitHub Wiki

Q10 & Q11: ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํŒจํ„ด๊ณผ ๋™๊ธฐ/๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

์งˆ๋ฌธ: AWS์™€ GCP์—์„œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ 3-Tier ํ†ต์‹  ํŒจํ„ด์„ ์„ค๋ช…ํ•˜์„ธ์š”. ๋˜ํ•œ ๋™๊ธฐ ์ฒ˜๋ฆฌ์™€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์„ธ์š”.


์ฃผ์š” ์šฉ์–ด

์šฉ์–ด ์„ค๋ช…
VPC Virtual Private Cloud โ€” ํด๋ผ์šฐ๋“œ์˜ ๊ฒฉ๋ฆฌ๋œ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ
PrivateLink ์ธํ„ฐ๋„ท ์—†์ด AWS ์„œ๋น„์Šค์— ํ”„๋ผ์ด๋น— ์—ฐ๊ฒฐํ•˜๋Š” ์„œ๋น„์Šค
VPC Peering VPC ๊ฐ„ ์ง์ ‘ ์—ฐ๊ฒฐ
Private Access ์ธํ„ฐ๋„ท ์—†์ด GCP ๋‚ด๋ถ€์—์„œ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹
Synchronous ์ž‘์—…์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ โ€” ์•ž ์ž‘์—… ์™„๋ฃŒ ํ›„ ๋‹ค์Œ ์ง„ํ–‰
Asynchronous ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฒ˜๋ฆฌ
Blocking ์ž‘์—… ์™„๋ฃŒ๊นŒ์ง€ ์‹คํ–‰ ๋Œ€๊ธฐ
Non-blocking ๋Œ€๊ธฐ ์—†์ด ์ฆ‰์‹œ ์‹คํ–‰ ๊ณ„์†

ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ 3-Tier: AWS

์‚ฌ์šฉ์ž โ†’ Route 53 (DNS) โ†’ ALB / EKS Ingress โ†’ EKS Pod (์•ฑ ์„œ๋ฒ„)
                                                      โ†“
                                          VPC ๋„คํŠธ์›Œํ‚น (PrivateLink / VPC Peering)
                                                      โ†“
                                          Amazon RDS/Aurora + ElastiCache (Redis)
๊ณ„์ธต AWS ์„œ๋น„์Šค ์—ญํ• 
Presentation Amazon Route 53 ๋„๋ฉ”์ธ์„ ELB/EKS Ingress IP๋กœ ๋ณ€ํ™˜
Application Amazon EKS + ELB Pod๋กœ ์š”์ฒญ ๋ผ์šฐํŒ…, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ
Data Amazon RDS/Aurora, ElastiCache ํ”„๋ผ์ด๋น— ๋„คํŠธ์›Œํฌ์˜ DB์™€ Redis
  • DB์™€ Redis๋Š” PrivateLink ๋˜๋Š” VPC Peering์„ ํ†ตํ•ด ์ ‘๊ทผ โ€” ์ธํ„ฐ๋„ท ๋ฏธ๋…ธ์ถœ
  • EKS Pod๋Š” VPC ๋„คํŠธ์›Œํ‚น์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์—ฐ๊ฒฐ

ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ 3-Tier: GCP

์‚ฌ์šฉ์ž โ†’ Cloud DNS โ†’ GKE Load Balancer / Ingress โ†’ GKE Pod (์•ฑ ์„œ๋ฒ„)
                                                          โ†“
                                                VPC Private Access
                                                          โ†“
                                            Cloud SQL + Memorystore (Redis)
๊ณ„์ธต GCP ์„œ๋น„์Šค ์—ญํ• 
Presentation Cloud DNS ๋„๋ฉ”์ธ์„ GKE Ingress IP๋กœ ๋ณ€ํ™˜
Application GKE + Cloud Load Balancer ์š”์ฒญ ๋ผ์šฐํŒ… ๋ฐ ์ฒ˜๋ฆฌ
Data Cloud SQL, Memorystore ํ”„๋ผ์ด๋น— ๋„คํŠธ์›Œํฌ์˜ DB์™€ Redis
  • GCP Private Access๋กœ ์„œ๋น„์Šค๋ฅผ ํ”„๋ผ์ด๋น— ๋„คํŠธ์›Œํฌ์— ๋ฐฐ์น˜
  • ํด๋ผ์šฐ๋“œ ๋‚ด๋ถ€ ๋˜๋Š” VPN์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

๋™๊ธฐ ์ฒ˜๋ฆฌ vs ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

๋™๊ธฐ ์ฒ˜๋ฆฌ (Synchronous)

์ž‘์—…์„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ โ€” ๊ฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค์Œ ์ž‘์—… ์‹œ์ž‘.

ํŠน์„ฑ ์„ค๋ช…
Blocking ๊ฐ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—… ์ฐจ๋‹จ
์„ ํ˜• ์‹คํ–‰ ์ฝ”๋“œ ์ˆœ์„œ๋Œ€๋กœ ์ •ํ™•ํžˆ ์‹คํ–‰
๋‹จ์ˆœ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋””๋ฒ„๊น…์ด ์‰ฌ์›€
ํ™œ์šฉ ์‚ฌ๋ก€ DB ํŠธ๋žœ์žญ์…˜, ์ˆœ์„œ ์˜์กด์ ์ธ ํŒŒ์ผ I/O

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ (Asynchronous)

์ž‘์—…์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ โ€” ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋žจ ๊ณ„์† ์ง„ํ–‰.

ํŠน์„ฑ ์„ค๋ช…
Non-blocking ์ž‘์—…์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹œ์ž‘ยท์™„๋ฃŒ
๋™์‹œ ์‹คํ–‰ ์—ฌ๋Ÿฌ ์ž‘์—…์ด ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌ
๋ณต์žก์„ฑ Race Condition, Deadlock ์œ„ํ—˜ ์กด์žฌ
ํ™œ์šฉ ์‚ฌ๋ก€ API ์š”์ฒญ, ํŒŒ์ผ ์—…๋กœ๋“œ, ์žฅ์‹œ๊ฐ„ I/O

์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

๋™๊ธฐ ์ฒ˜๋ฆฌ ์‚ฌ์šฉ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‚ฌ์šฉ
์ž‘์—… ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•  ๋•Œ ์ž‘์—…์ด ๋…๋ฆฝ์ ์ผ ๋•Œ
์ด์ „ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์Œ ์ž‘์—…์— ํ•„์š”ํ•  ๋•Œ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ์‘๋‹ต์„ฑ์ด ์ค‘์š”ํ•  ๋•Œ
๋‹จ์ˆœํ•œ ์ˆœ์ฐจ์  ํ๋ฆ„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ

์ฐธ๊ณ  ์ž๋ฃŒ

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