๐๏ธ ๊ฐ์
์๋ ํ์ธ์. ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ํ๋ ์งํํ๋ ค ํฉ๋๋ค. ๊ธฐ์กด์ ์ฃผ๋ ฅํด์จ 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 ํธ์ถ ์คํจ์ ์๋น์ค ์ํ ์กฐํ ๊ฐ๋ฅ
๐ค๏ธ ์ด์ ์๋๋ฆฌ์ค (์ ์ฒด ํ๋ก์ฐ)
- ์ฌ์ฉ์๊ฐ ๋ค์ด๋ฒ ๊ฒ์๊ด๊ณ API ํค๋ฅผ ๋ฑ๋กํ๊ณ ํน์ ํค์๋์ ์ต์, ์ต๋ ๊ธ์ก๊ณผ ๋ ธ์ถ ์์, ํ๋๋ฅผ ์ค์
- ์ฌ์ฉ์ ์ค์ ์ด ์ ์ฅ๋๋ฉด API ์๋ฒ๋ ์๋ ์ ์ฐฐ ์์ ์ ์์ฑํ์ฌ Cloud Tasks์ ์์ ๋ฉ์์ง๋ฅผ ์ ๋ฌ
- Cloud Tasks๋ ์ค์ ๋ ์ฃผ๊ธฐ์ ๋ฐ๋ผ API ํธ์ถ ์์ปค๋ก ์์ฒญ์ ์ ์กํ๋ฉฐ, ์์ปค๋ ๋ค์ด๋ฒ API๋ฅผ ํธ์ถ
- ๋ค์ด๋ฒ API์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ก
- ์์คํ ์ Cloud Monitoring ๋ฐ Logging์ ํตํด ๋ชจ๋ํฐ๋ง
์ฐ์ ์ ์ผ๋ก ๊ฐ์ฅ ํ์ํ๋ค๊ณ ๋๊ปด์ง๋ ๋ถ๋ถ๋ง ๊ตฌ์ฑํ๋๋ฐ, ์๊ฐ๋ณด๋ค ์๋น์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋์ด์ ๊ณ ๋ฏผ์ด ๋๊ธฐ๋ ํฉ๋๋ค. ์์ผ๋ก ์๋น์ค ์๊ตฌ์ฌํญ์ ํ์ ํ๊ณ Naver AD API๋ฅผ ๋ถ์ํ๋ฉด์ ๊ณ์ํด์ ๋ณ๊ฒฝ ๋ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ์ ๊ฐ์ฅ ๊ฐ๋จํ ํ๋กํ ํ์ ์ ๋จผ์ ๋ง๋ ๋ค ์ ์ง์ ์ผ๋ก ๊ฐ์ ํ ๊ณํ์ ๋๋ค.