์ฑ์ฅํ๋ ๊ฑด๊ฐ ๋ฐ ์์ ๋น์ฆ๋์ค์ ๋จ์ผ ๋ฐฑ์๋๊ฐ ๋ ์ด์ ๊ฐ๋นํ ์ ์์์ต๋๋ค. AI ์ฑ๋ด ํธ๋ํฝ, ๋ฐฉ๋ํ ์จ์ด๋ฌ๋ธ ๋ฐ์ดํฐ ์์ง, ์ผ์์ ์ธ API ์์ฒญ์ด ๋ชจ๋ ๋์ผํ ๋ฆฌ์์ค๋ฅผ ๋๊ณ ๊ฒฝ์ํ๋ฉด์ ์์คํ ํ์ฅ๊ณผ ๋ฐฐํฌ๊ฐ ์ด๋ ค์์ง๊ณ ์ํํด์ก์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด ์์คํ ์ AWS์์ ์คํ๋๋ ๋จ์ผ API Gateway ๋ค์ ๋ฐฐ์น๋ ์ง์ค์ ์ด๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ ์๋น์ค๋ก ์ฌ์ค๊ณํ์ต๋๋ค.
๋น๋ฉด ๊ณผ์
- ๋ชจ๋ ์์ ์ ์ฒ๋ฆฌํ๋ ๋จ์ผ ์ฝ๋๋ฒ ์ด์ค. ํ๋์ ์ํฌํ๋ก๋ ์ฌ์ฉ์ ๊ด๋ฆฌ, AI ์ฑ๋ด ์ถ๋ก , ๋ ์ํผ, ๊ฑด๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ํฌํจํ์ต๋๋ค. ํ ์์ญ์ ๊ธ์ฆ์ ์ ์ฒด ํ๋ซํผ์ ์ ํ์์ผฐ๊ณ , ๋ชจ๋ ๋ณ๊ฒฝ์ ์ ์ฒด๋ฅผ ์ฌ๋ฐฐํฌํด์ผ ํจ์ ์๋ฏธํ์ต๋๋ค.
- ๊ทน๋๋ก ์ด์ง์ ์ธ ๋ฆฌ์์ค ํ๋กํ. LLM ๊ธฐ๋ฐ ์ฑ๋ด ์์ฒญ์ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง๊ณ ๋ฒ์คํธ(bursty) ํน์ฑ์ ๊ฐ์ง๋ฉฐ, ์จ์ด๋ฌ๋ธ ๋ฐ์ดํฐ ์์ง์ ์ฐ๊ธฐ ์์ ์ด ๋ง๊ณ ์ง์์ ์ด๋ฉฐ, ํต์ฌ CRUD API๋ ๊ฐ๋ณ๊ณ ๊พธ์คํฉ๋๋ค. ์ธ ๊ฐ์ง ๋ชจ๋๋ฅผ ์ํ ํ๋์ ์๋ฒ๋ฅผ ํฌ๊ธฐ ์กฐ์ ํ๋ ๊ฒ์ ์ผ๋ถ ์ํฌ๋ก๋์ ๊ณผ๋ํ๊ฒ ์ง๋ถํ๊ณ ๋ค๋ฅธ ์ํฌ๋ก๋๋ฅผ ๊ณ ๊ฐ์ํค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค.
- ๋ ๋ฆฝ์ ์ธ ํ์ฅ ๋ฐ ๋ฐฐํฌ. ํ์ ํต์ฌ API์ ์ํฅ์ ์ฃผ์ง ์๊ณ AI ์ํฌ๋ก๋๋ฅผ ํ์ฅํ๊ณ , ๋ค๋ฅธ ์์ญ์ ์ํ์ ์ด๋ํ์ง ์์ผ๋ฉด์ ํ๋์ ๋๋ฉ์ธ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฐํฌํด์ผ ํ์ต๋๋ค.
๋จ์ผํ๊ณ ์์ ํ ์ง์ ์ . ์ฌ๋ฌ ๋ฐฑ์๋ ์๋น์ค์๋ ๋ถ๊ตฌํ๊ณ ํด๋ผ์ด์ธํธ(๋ชจ๋ฐ์ผ, ์น, ๊ด๋ฆฌ)๋ ์ผ๊ด๋๊ณ ์ธ์ฆ๋ ๋จ์ผ ์ ์ ์ ํ์๋ก ํ์ต๋๋ค. ์ด๋ ๋ด๋ถ ์๋น์ค ํ ํด๋ก์ง๊ฐ ์ธ๋ถ์ ๋ ธ์ถ๋์ง ์๋๋ก ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ฐ๋ฆฌ์ ์๋ฃจ์
์ฐ๋ฆฌ๋ ํ๋ซํผ์ ์ธ ๊ฐ์ง ํต์ฌ NestJS ์๋น์ค๋ก ๋ถํ ํ์ผ๋ฉฐ, ์ด๋ AWS Application Load Balancer ๋ค์ ์์นํ๊ณ ๋ฉ์ธ ์๋ฒ๋ API Gateway์ด์ ์ค์ผ์คํธ๋ ์ดํฐ ์ญํ ์ ํฉ๋๋ค. ์ด ์๋ฒ๋ ์ธ์ฆ ๋ฐ ํต์ฌ ๋๋ฉ์ธ์ ์์ ํ๊ณ , ์ธ์ฆ๋ REST๋ฅผ ํตํด ์ฑ๋ด ๋ฐ ๊ฑด๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ์ ๋ฌธํ๋ ์์ ์ ์์ํฉ๋๋ค. ๊ณต์ ๋ฐ์ดํฐ ๋ฐ ๋ฉ์์ง ๊ณ์ธต์ ์๋น์ค๋ค์ ๋์จํ๊ฒ ๊ฒฐํฉํ๋ฉด์๋ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ํฉ๋๋ค.

์ํคํ
์ฒ
- ๋ฉ์ธ ์๋ฒ (NestJS) โ API Gateway ๋ฐ ์ค์ผ์คํธ๋ ์ดํฐ: ์ธ์ฆ, ์ฌ์ฉ์, ๋ชฉํ, ๋ ์ํผ, ์ค์ผ์ค๋ง ๋ฐ ์๋ฆผ. ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ ๋จ์ผ ๊ณต๊ฐ ์ง์ ์ ์ ๊ฐ์ง๋๋ค.
- ์ฑ๋ด ๋ง์ดํฌ๋ก์๋น์ค (NestJS) โ LangChain/LangGraph๋ฅผ ํตํด Azure OpenAI (GPT-4o)๋ก ๊ตฌ๋๋๋ AI ๋ํํ ์๋น์ค๋ก, ๋ ์ํผ ๋ฐ ์ง์ ๊ฒ์์ ์ํ Elasticsearch ๊ธฐ๋ฐ RAG๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ํฌ์ค ๋ง์ดํฌ๋ก์๋น์ค (NestJS) โ ์จ์ด๋ฌ๋ธ ๋ฐ ์๋ ๊ฑด๊ฐ ๋ฐ์ดํฐ (Apple Health, Health Connect)๋ฅผ ์์ง ๋ฐ ์ง๊ณํ๊ณ ๋ถ์์ ์ ๊ณตํฉ๋๋ค.
- AWS ECS Fargate๋ ์ธ ๊ฐ์ง ์ปจํ ์ด๋ํ๋ ์๋น์ค๋ฅผ ์คํํ๋ฉฐ, ๊ฐ ์๋น์ค๋ ์์ฒด CPU/๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ์กฐ์ ๋ฐ ํ์ฅ ์ ์ฑ ์ ๊ฐ์ง๋๋ค.
- Application Load Balancer๋ HTTPS๋ฅผ ์ข ๋ฃํ๊ณ ํธ๋ํฝ์ ์ฌ๋ฐ๋ฅธ ์๋น์ค๋ก ๊ฒฝ๋ก ์ง์ ํฉ๋๋ค.
- ๊ณต์ ๋ฐ์ดํฐ ๊ณ์ธต โ MongoDB Atlas (์ฃผ ์ ์ฅ์), Redis (์บ์/์ธ์ ), Elasticsearch (๊ฒ์), ActiveMQ (๋น๋๊ธฐ ์๋ฆผ ์ ์ก).
์ฃผ์ ๊ธฐ๋ฅ
1. ์ค์ผ์คํธ๋ ์ดํฐ ํจํด. ๋ฉ์ธ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ ธ์ถ๋๋ ์ ์ผํ ์๋น์ค์ ๋๋ค. ๋ชจ๋ ์์ฒญ์ ์ธ์ฆํ ํ ๋ด๋ถ ์๋น์ค ๊ฐ ํธ์ถ์ ์ํํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐฑ์๋ ํ ํด๋ก์ง๋ ๋น๊ณต๊ฐ๋ก ์ ์ง๋๊ณ ํด๋ผ์ด์ธํธ ํตํฉ์ ๋จ์ํฉ๋๋ค.
2. ์ธ์ฆ๋ ์๋น์ค ๊ฐ ํธ์ถ. ์๋น์ค ๊ฐ ํต์ ์ ๊ณต์ HTTP ํด๋ผ์ด์ธํธ๋ฅผ ํตํ REST์ด๋ฉฐ, ์๋น์ค๋ณ ๋ฒ ์ด๋ฌ API ํค๋ก ๋ณดํธ๋ฉ๋๋ค:
// Main server delegating an AI request to the chatbot microservice const reply = await this.microserviceClient.post( this.chatbotApiKey, // per-service bearer key `${this.chatbotUrl}/chat`, { user, question, sessionId, attachment }, ); |
3. ์ํฌ๋ก๋๋ณ ๋ ๋ฆฝ์ ์ธ ํ์ฅ. ๊ฐ ์๋น์ค๋ ์์ฒด ํฌ๊ธฐ ์กฐ์ ์ ๊ฐ์ง ๋ณ๋์ Fargate ํ์คํฌ ์ ์์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง์ ์ฑ๋ด ์๋น์ค๋ ๊ฒฝ๋ ํต์ฌ API์ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅ๋๋ฏ๋ก, AI ํธ๋ํฝ ๊ธ์ฆ์ด ์ผ์์ ์ธ ์์ฒญ์ ์ ํ์ํค๋ ์ผ์ด ์์ต๋๋ค.
4. ๋ด์ฅ๋ ๋ณต์๋ ฅ์ ๊ฐ์ถ ์ ์ ํ ํฌ๊ธฐ์ AI ์๋น์ค. ์ฑ๋ด ์๋น์ค๋ ์ฌ๋ฌ Azure OpenAI ํค๋ฅผ ์ํํ๋ฉฐ, ์๋ ์ ํ ๋๋ ์ค๋ฅ ๋ฐ์ ์ ์๋์ผ๋ก ํ์ผ์ค๋ฒํ์ฌ ๋ก๋ ์ํฉ์์๋ AI ๊ธฐ๋ฅ์ด ๋ฐ์์ฑ์ ์ ์งํ๋๋ก ํฉ๋๋ค.
5. ๋น๋๊ธฐ ๋ฉ์์ง์ ํตํ ์๋ฆผ. ActiveMQ ์ง์ฐ ํ๊ฐ ์๊ฐ ๊ธฐ๋ฐ ์๋ฆผ ๋ฐ ๋ฏธ๋ฆฌ ์๋ฆผ์ ์์ฒญ ์คํธ๋ฆผ๊ณผ ๋ถ๋ฆฌํ๋ฏ๋ก, ์๋ฆผ ์ ์ก์ด ํต์ฌ API ํธ๋ํฝ์ ๋ฐฉํดํ๊ฑฐ๋ ๋ฆ์ถ๋ ์ผ์ด ์์ต๋๋ค.
6. ๋ฐ๋ณต ๊ฐ๋ฅํ๊ณ ๊ฒฉ๋ฆฌ๋ ๋ฐฐํฌ. ECR์์ ECS๊น์ง, ๊ฐ ์๋น์ค๋ ์์ฒด Docker ์ด๋ฏธ์ง๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ํฌ์ค ์๋น์ค์ ๋ํ ์์ ์ ๋จ์ํ ํฌ์ค ์๋น์ค๋ฅผ ์ฌ๋ฐฐํฌํ๋ ๊ฒ์ผ๋ก, ํฌ์ค ์ฒดํฌ๊ฐ ํฌํจ๋ ๋กค๋ง ์ ๋ฐ์ดํธ๋ฅผ ํตํด ๋น ๋ฅด๊ณ ์ํ ๋ถ๋ด์ด ์ ์ ๋ฆด๋ฆฌ์ค๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
7. ์ผ๊ด๋ ๋จ์ผ ํด๋ผ์ด์ธํธ ๊ณ์ฝ. ๋ชจ๋ฐ์ผ (React Native) ๋ฐ ๊ด๋ฆฌ์ ๋์๋ณด๋๋ ๋ชจ๋ ๋จ์ผ ๋ถํ ๋ถ์ฐ๋ HTTPS ์ง์ ์ ๊ณผ ํต์ ํ๋ฉฐ, ๋ง์ดํฌ๋ก์๋น์ค๋ก์ ๋ด๋ถ ๋ถํ ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด์ด์ง ์์ต๋๋ค.
๊ฒฐ๊ณผ
- ์์ฆ์๋ AI ์ฑ๋ด, ๊ฑด๊ฐ ๋ฐ์ดํฐ ๋ฐ ํต์ฌ API ์ํฌ๋ก๋๊ฐ ๋ณ๋๋ก ํ์ฅ๋ฉ๋๋ค. ์ด๋ค ์์ ๋ ๋ค๋ฅธ ์์ ์ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์ต๋๋ค.
- ๊ฐ ์๋น์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋์ด, ์ํํ ํ๋ซํผ ์ ์ฒด ๋ฆด๋ฆฌ์ค๋ฅผ ๋น ๋ฅด๊ณ ๊ฒฉ๋ฆฌ๋ ์ ๋ฐ์ดํธ๋ก ์ ํํฉ๋๋ค.
- ๊ฐ ์๋น์ค๋ณ๋ก ์ปดํจํ ์์์ด ์ ์ ํ๊ฒ ํฌ๊ธฐ ์กฐ์ ๋์ด, ๋ชจ๋ ์ฉ๋์ ๋ง๋ ๋จ์ผ ์๋ฒ์ ๊ณผ๋ํ ํ๋ก๋น์ ๋์ด ์ ๊ฑฐ๋์์ต๋๋ค.
- ๋จ์ผ์ ์์ ํ๊ณ ๋ถํ ๋ถ์ฐ๋ ์ง์ ์ ์ ํด๋ผ์ด์ธํธ ํตํฉ์ ๋จ์ํ๊ฒ ์ ์งํ๋ ๋์์ ๋ฐฑ์๋๋ ๋น๊ณต๊ฐ์ ์ด๊ณ ๋ชจ๋์์ผ๋ก ์ ์ง๋ฉ๋๋ค.
๊ธฐ์ ์คํ
NestJS ยท TypeScript ยท Node.js 20 ยท Azure OpenAI (GPT-4o) ยท LangChain ยท MongoDB Atlas ยท Redis ยท Elasticsearch ยท ActiveMQ ยท AWS ECS Fargate ยท Application Load Balancer ยท Amazon ECR ยท Docker
๋ค๋ฅธ ๋ธ๋ก๊ทธ
1. AWS ECS๋ก ๋น๋์ค ์ฒ๋ฆฌ ์ํฌ๋ก๋๋ฅผ ํ์ฅํ๋ ๋ฐฉ๋ฒ
2. AWS ECR์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ
3. ๊ณ ์ฑ๋ฅ ๋น๋์ค ์ํฌ๋ก๋์ AWS EC2๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ

