Study/Side Proejct / / 2025. 2. 19. 22:03

[Smart Ad] ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ

๐Ÿ—’๏ธ ๊ฐœ์š”

์•ˆ๋…•ํ•˜์„ธ์š”. ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ง„ํ–‰ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์— ์ฃผ๋ ฅํ•ด์˜จ Spring Boot์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ด๋ฒˆ ๊ธฐํšŒ์— ๋”์šฑ ๊นŠ๊ฒŒ ํ•™์Šตํ•˜๋ฉฐ, ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์•˜๋˜ ๋งŒํผ, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ์–ธ์–ด์™€ ๊ธฐ์ˆ ์„ ์ดํ•ดํ•˜๋Š” ๊ณ„๊ธฐ๋กœ ์‚ผ๊ธฐ ์œ„ํ•œ ๊ฒƒ๋„ ์žˆ๊ณ , ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ง€๊ธˆ๊นŒ์ง€ ์ด๋ก ์œผ๋กœ๋งŒ ํ•™์Šตํ•˜๋˜ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ํ”ผ๋ถ€๋กœ ์™€๋‹ฟ๋„๋ก ๊ธฐ์ˆ ์„ ์ตํžˆ๊ธฐ ์œ„ํ•œ ๊ฒŒ ์ฃผ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

๋„ค์ด๋ฒ„ ๊ด‘๊ณ  API๋ฅผ ํ†ตํ•ด์„œ ํšจ์œจ์ ์ธ ๊ด‘๊ณ  ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š”๊ฒŒ ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

โ“ ๊ณ ๋ฏผ์ 

์‚ฌ์‹ค ๊ฐ€์žฅ ํฐ ๊ณ ๋ฏผ์€ '์–ด๋–ค ๊ธฐ์ˆ ์„ ์„ ํƒํ• ์ง€', 'ํ•™์Šต ๋ฒ”์œ„๋ฅผ ์–ด๋””๊นŒ์ง€ ์žก์„์ง€' ์ด๊ฒŒ 90% ์˜€๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ธฐ์ค€์ ์„ ์žก๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ, ์ธํ”„๋ผ๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜์ง€๋งŒ HA ๊ตฌ์„ฑ์„ ํ†ตํ•ด ๋‹จ์ผ ์žฅ์•  ์ง€์ (SPOF)์ด ์—†์–ด์•ผ ํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ, ๋ชจ๋“  ์„ ํƒ์€ ๊ทผ๊ฑฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์„ ๊ฒฝํ—˜ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ํ•œ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์œ„ 2๊ฐœ์˜ ๊ธฐ์ค€์ ์„ ํ†ตํ•ด ์•„๋ž˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽˆ ์ „์ฒด ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ

1. ํ”„๋ก ํŠธ์—”๋“œ ๋ฐ API ์„œ๋ฒ„

์„œ๋น„์Šค ์„ ํƒ: Kotlin + Spring Boot

  • ์ฝ”ํ‹€๋ฆฐ ํ•™์Šต์ด๋ผ๋Š” ๋ชฉํ‘œ์™€ ๊ฐ€์žฅ ์ต์ˆ™ํ•œ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ํšจ์œจ์ ์ธ ์„œ๋ฒ„ ๊ฐœ๋ฐœ

์ฃผ์š” ๊ธฐ๋Šฅ :

  • ์ž๋™ ์ž…์ฐฐ
  • ์บ ํŽ˜์ธ, ๊ด‘๊ณ  ๊ทธ๋ฃน, ํ‚ค์›Œ๋“œ ๋“ฑ๋ก, ์กฐํšŒ, ์ˆ˜์ • ๋ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ
  • API ์š”์ฒญ ์ƒ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ก์„ ํ†ตํ•œ ์ž‘์—… ๊ด€๋ฆฌ
  • Naver AD API ํ˜ธ์ถœ ์‹œ Rate Limit(429 Error)์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ Auto Scaling & Load Balancing

2. ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ (DB)

์„œ๋น„์Šค ์„ ํƒ: Cloud SQL (MySQL)

  • RDB๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , GCP์˜ ์ดˆ๊ธฐ ์ง€๊ธ‰๋˜๋Š” ํฌ๋ ˆ๋”ง์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์šฉ ๋ถ€๋‹ด ↓
  • ์‚ฌ์šฉ์˜ ์šฉ์ด์„ฑ, ์œ ์—ฐ์„ฑ, ๋น ๋ฅธ ์„ฑ๋Šฅ๊ณผ ๋†’์€ ์•ˆ์ •์„ฑ, ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ž๋ฃŒ๋„ ์ œ์ผ ํ™œ์„ฑํ™”

3. ์™ธ๋ถ€ API ํ˜ธ์ถœ ์›Œ์ปค (์ž๋™ ์ž…์ฐฐ ๋ฐ ์‹œ์„ธ ์กฐํšŒ ์ฒ˜๋ฆฌ)

์„œ๋น„์Šค ์„ ํƒ: Cloud Run (๋ณ„๋„ ์ธ์Šคํ„ด์Šค)

  • Cloud Tasks ๋ฐ Kotlin๊ณผ์˜ ์—ฐ๋™์„ ํ†ตํ•ด API ํ˜ธ์ถœ ์ž‘์—…์„ ์ฒ˜๋ฆฌ
  • ๋„ค์ด๋ฒ„ API ํ˜ธ์ถœ ์ดํ›„ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ, ์‚ฌ์šฉ์ž ์„ค์ •์— ๋งž์ถฐ ์•Œ๋ฆผ์„ ์ œ๊ณต

4.์ž‘์—… ํ / ์Šค์ผ€์ค„๋ง

์„œ๋น„์Šค ์„ ํƒ: Cloud Tasks

  • HTTP ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘์—… ํ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉฐ, ์‰ฌ์šด ๋”œ๋ ˆ์ด ๋ฐ ์žฌ์‹œ๋„ ์ •์ฑ… ์„ค์ •
  • ์‚ฌ์šฉ์ž ์บ ํŽ˜์ธ ๋“ฑ๋ก ์‹œ ์ฃผ๊ธฐ์ ์ธ ์ž‘์—… ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ , Cloud Run ์›Œ์ปค์— ์ „๋‹ฌํ•˜์—ฌ Naver API ํ˜ธ์ถœ์„ ์ œ์–ด
  • GCP Cloud Pub/Sub๊ณผ ๋น„๊ตํ•˜์—ฌ ๋‹จ์ˆœํ•œ ํ˜„์žฌ ์ž‘์—…์— ์ ๋‹นํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด ์„ ํƒ

5. ๋„คํŠธ์›Œํฌ ๋ถ„์‚ฐ ๋ฐ ์™ธ๋ถ€ API ํ˜ธ์ถœ ๋ณด์•ˆ

  • Cloud Run ์„œ๋น„์Šค๋Š” VPC์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์™ธ๋ถ€ ๋…ธ์ถœ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์•ˆ์ „ํ•œ API ํ˜ธ์ถœ ํ™˜๊ฒฝ์„ ์œ ์ง€
  • Cloud NAT ๋ฐ Secret Manager๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์™ธ๋ถ€ API ํ˜ธ์ถœ ์‹œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”

6. CI/CD ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

CI/CD ํŒŒ์ดํ”„๋ผ์ธ: Cloud Build

  • GitHub์™€ ์—ฐ๋™ํ•˜์—ฌ ์ฝ”๋“œ ํ‘ธ์‹œ ์‹œ ์ž๋™์œผ๋กœ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ
  • Cloud Logging ๋ฐ Monitoring์„ ํ†ตํ•ด API ํ˜ธ์ถœ ์‹คํŒจ์™€ ์„œ๋น„์Šค ์ƒํƒœ ์กฐํšŒ ๊ฐ€๋Šฅ

๐ŸŒค๏ธ ์šด์˜ ์‹œ๋‚˜๋ฆฌ์˜ค (์ „์ฒด ํ”Œ๋กœ์šฐ)

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋„ค์ด๋ฒ„ ๊ฒ€์ƒ‰๊ด‘๊ณ  API ํ‚ค๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ํŠน์ • ํ‚ค์›Œ๋“œ์— ์ตœ์†Œ, ์ตœ๋Œ€ ๊ธˆ์•ก๊ณผ ๋…ธ์ถœ ์ˆœ์œ„, ํ•œ๋„๋ฅผ ์„ค์ •
  2. ์‚ฌ์šฉ์ž ์„ค์ •์ด ์ €์žฅ๋˜๋ฉด API ์„œ๋ฒ„๋Š” ์ž๋™ ์ž…์ฐฐ ์ž‘์—…์„ ์ƒ์„ฑํ•˜์—ฌ Cloud Tasks์— ์ž‘์—… ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌ
  3. Cloud Tasks๋Š” ์„ค์ •๋œ ์ฃผ๊ธฐ์— ๋”ฐ๋ผ API ํ˜ธ์ถœ ์›Œ์ปค๋กœ ์š”์ฒญ์„ ์ „์†กํ•˜๋ฉฐ, ์›Œ์ปค๋Š” ๋„ค์ด๋ฒ„ API๋ฅผ ํ˜ธ์ถœ
  4. ๋„ค์ด๋ฒ„ API์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋ก
  5. ์‹œ์Šคํ…œ์€ Cloud Monitoring ๋ฐ Logging์„ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ๋ง

์šฐ์„ ์ ์œผ๋กœ ๊ฐ€์žฅ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๊ปด์ง€๋Š” ๋ถ€๋ถ„๋งŒ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ์„œ๋น„์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด์„œ ๊ณ ๋ฏผ์ด ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์„œ๋น„์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ํ™•์ •ํ•˜๊ณ  Naver AD API๋ฅผ ๋ถ„์„ํ•˜๋ฉด์„œ ๊ณ„์†ํ•ด์„œ ๋ณ€๊ฒฝ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ์— ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ”„๋กœํ† ํƒ€์ž…์„ ๋จผ์ € ๋งŒ๋“  ๋’ค ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„  ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.