# ๐Ÿฝ๏ธ AI Review - ์†Œ์ƒ๊ณต์ธ์„ ์œ„ํ•œ AI ๊ธฐ๋ฐ˜ ๊ฒฝ์Ÿ์—…์ฒด ๋ถ„์„ ๋ฐ ์•ก์…˜ ์ถ”์ฒœ ์‹œ์Šคํ…œ ์†Œ์ƒ๊ณต์ธ๋“ค์ด ์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฝ์Ÿ์—…์ฒด๋ฅผ ๋ถ„์„ํ•˜๊ณ , AI๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๋งž์ถคํ˜• ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ์„  ๋ฐฉ์•ˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ## ๐ŸŽฏ ์‹œ์Šคํ…œ ๊ฐœ์š” ### ํ•ต์‹ฌ ๊ฐ€์น˜ ์ œ์•ˆ - **๐Ÿ” ์Šค๋งˆํŠธ ๊ฒฝ์Ÿ์—…์ฒด ๋ฐœ๊ฒฌ**: ์ง€์—ญ๊ณผ ์—…์ข… ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ์‚ฌํ•œ ๊ฒฝ์Ÿ์—…์ฒด ์ž๋™ ํƒ์ง€ - **๐Ÿ“Š ๋Œ€๋Ÿ‰ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ ๋ถ„์„**: ์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๊ณ ํ’ˆ์งˆ ์ธ์‚ฌ์ดํŠธ ๋„์ถœ - **๐Ÿค– AI ๊ธฐ๋ฐ˜ ๋งž์ถค ์ปจ์„คํŒ…**: Claude AI๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์•ก์…˜ ํ”Œ๋žœ - **โšก ์™„์ „ ์ž๋™ํ™”**: API ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ๊ณผ์ •์ด ์ž๋™ํ™”๋œ ์†”๋ฃจ์…˜ ### ๋น„์ฆˆ๋‹ˆ์Šค ์ž„ํŒฉํŠธ - **์†Œ์ƒ๊ณต์ธ**: ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ฒฝ์˜ ์˜์‚ฌ๊ฒฐ์ •์œผ๋กœ ๋งค์ถœ ํ–ฅ์ƒ ์ง€์› - **๊ฒฝ์Ÿ ์šฐ์œ„**: AI ๊ธฐ๋ฐ˜ ๊ฐœ์ธํ™”๋œ ๋น„์ฆˆ๋‹ˆ์Šค ์ „๋žต์œผ๋กœ ์ฐจ๋ณ„ํ™” - **์šด์˜ ํšจ์œจ**: ์ˆ˜์ž‘์—… ์‹œ์žฅ์กฐ์‚ฌ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ 90% ์ ˆ๊ฐ ## ๐Ÿ—๏ธ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๋ณธ ์‹œ์Šคํ…œ์€ 3๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค: ### ๐Ÿ“ Restaurant Service **์Œ์‹์  ๊ฒ€์ƒ‰ ๋ฐ ์ •๋ณด ์ˆ˜์ง‘ ์„œ๋น„์Šค** - **ํ•ต์‹ฌ ๊ธฐ๋Šฅ**: ์นด์นด์˜ค ๋กœ์ปฌ API ๊ธฐ๋ฐ˜ ์Œ์‹์  ๊ฒ€์ƒ‰ ๋ฐ ์ƒ์„ธ ์ •๋ณด ์ˆ˜์ง‘ - **์ฃผ์š” API**: - ์Œ์‹์  ๊ฒ€์ƒ‰ (`/restaurants/search`) - ์Œ์‹์  ์ƒ์„ธ ์ •๋ณด (`/restaurants/{restaurant_id}`) - **๊ธฐ์ˆ  ์Šคํƒ**: FastAPI, Python 3.11, Kakao Local API - **ํฌํŠธ**: 18000 ### ๐Ÿ“ Review Service **์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„ ์„œ๋น„์Šค** - **ํ•ต์‹ฌ ๊ธฐ๋Šฅ**: ์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ ๋Œ€๋Ÿ‰ ์ˆ˜์ง‘, ๊ฐ์ • ๋ถ„์„, ํ‚ค์›Œ๋“œ ์ถ”์ถœ - **์ฃผ์š” API**: - ๋ฆฌ๋ทฐ ์ˆ˜์ง‘ (`/reviews/collect`) - ๋ฆฌ๋ทฐ ๋ถ„์„ (`/reviews/analyze`) - **๊ธฐ์ˆ  ์Šคํƒ**: FastAPI, Python 3.11, BeautifulSoup, Sentiment Analysis - **ํฌํŠธ**: 19000 ### ๐Ÿง  Vector Service **Vector DB ๊ตฌ์ถ• ๋ฐ AI ๋น„์ฆˆ๋‹ˆ์Šค ์ปจ์„คํŒ… ์„œ๋น„์Šค** - **ํ•ต์‹ฌ ๊ธฐ๋Šฅ**: ChromaDB ๊ธฐ๋ฐ˜ Vector ๊ฒ€์ƒ‰, Claude AI ์—ฐ๋™ ์•ก์…˜ ์ถ”์ฒœ - **์ฃผ์š” API**: - Vector DB ๊ตฌ์ถ• (`/find-reviews`) - AI ์•ก์…˜ ์ถ”์ฒœ (`/action-recommendation`) - **๊ธฐ์ˆ  ์Šคํƒ**: FastAPI, ChromaDB, Sentence Transformers, Claude AI - **ํฌํŠธ**: 8000 ## ๐Ÿš€ AKS ๋ฐฐํฌ ๊ฐ€์ด๋“œ ### 1. ์‚ฌ์ „ ์ค€๋น„ #### Local Ubuntu ์ ‘์† ํ›„ ์†Œ์Šค ๋‹ค์šด๋กœ๋“œ ```bash cd ~/workflow git clone https://github.com/cna-bootcamp/ai-review.git cd ai-review ``` #### Azure Cloud ๋กœ๊ทธ์ธ ```bash az login --use-device-code ``` #### AKS Credential ์ทจ๋“ ```bash az aks get-credentials aks-digitalgarage-03 -f ~/.kube/config ``` #### Namespace ์ƒ์„ฑ ๋ฐ ์ด๋™ ```bash k create ns ai-review-ns kubens ai-review-ns ``` #### Image Pull Secret ์ƒ์„ฑ ```bash ./restaurant/create-imagepullsecret.sh acrdigitalgarage03 rg-digitalgarage-03 ``` ### 2. Restaurant Service ๋ฐฐํฌ #### ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ```bash cd ~/workspace/ai-review/restaurant ``` #### ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ```bash ./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03 ``` #### ์„œ๋น„์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ```bash ./build.sh latest acrdigitalgarage03 rg-digitalgarage-03 ``` #### Manifest ์ˆ˜์ • - **Deployment yaml** (`deployment/manifest/deployment.yaml`)์˜ image๋ช…์„ ์„œ๋น„์Šค ์ด๋ฏธ์ง€๋ช…์œผ๋กœ ๋ณ€๊ฒฝ - **Ingress yaml** (`deployment/manifest/ingress.yaml`)์˜ host ์ˆ˜์ • ```bash # Ingress IP ํ™•์ธ k get svc -n ingress-nginx ``` #### ๋ฐฐํฌ ์‹คํ–‰ ```bash k apply -f deployment/manifest ``` #### ๋ฐฐํฌ ํ™•์ธ ```bash # Pod ์ƒํƒœ ํ™•์ธ k get po # Ingress ํ™•์ธ k get ing # Swagger ํŽ˜์ด์ง€ ์ ‘์† # http://{ingress ์ฃผ์†Œ}/docs ``` ### 3. Review Service ๋ฐฐํฌ #### ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ```bash cd ~/workspace/ai-review/review ``` #### ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ```bash ./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03 ``` #### ์„œ๋น„์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ```bash ./build.sh latest acrdigitalgarage03 rg-digitalgarage-03 ``` #### Manifest ์ˆ˜์ • - **Deployment yaml** (`deployment/manifest/deployment.yaml`)์˜ image๋ช…์„ ์„œ๋น„์Šค ์ด๋ฏธ์ง€๋ช…์œผ๋กœ ๋ณ€๊ฒฝ - **Ingress yaml** (`deployment/manifest/ingress.yaml`)์˜ host ์ˆ˜์ • ```bash # Ingress IP ํ™•์ธ k get svc -n ingress-nginx ``` #### ๋ฐฐํฌ ์‹คํ–‰ ```bash k apply -f deployment/manifest ``` #### ๋ฐฐํฌ ํ™•์ธ ```bash # Pod ์ƒํƒœ ํ™•์ธ k get po # Ingress ํ™•์ธ k get ing # Swagger ํŽ˜์ด์ง€ ์ ‘์† # http://{ingress ์ฃผ์†Œ}/docs ``` ### 4. Vector Service ๋ฐฐํฌ #### ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ```bash cd ~/workspace/ai-review/vector ``` #### ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ```bash ./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03 ``` #### ์„œ๋น„์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ```bash ./build.sh latest acrdigitalgarage03 rg-digitalgarage-03 ``` #### Manifest ์ˆ˜์ • - **Deployment yaml** (`deployment/manifest/deployment.yaml`)์˜ image๋ช…์„ ์„œ๋น„์Šค ์ด๋ฏธ์ง€๋ช…์œผ๋กœ ๋ณ€๊ฒฝ - **Ingress yaml** (`deployment/manifest/ingress.yaml`)์˜ host ์ˆ˜์ • ```bash # Ingress IP ํ™•์ธ k get svc -n ingress-nginx ``` #### ๋ฐฐํฌ ์‹คํ–‰ ```bash k apply -f deployment/manifest ``` #### ๋ฐฐํฌ ํ™•์ธ ```bash # Pod ์ƒํƒœ ํ™•์ธ k get po # Ingress ํ™•์ธ k get ing # Swagger ํŽ˜์ด์ง€ ์ ‘์† # http://{ingress ์ฃผ์†Œ}/docs ``` ## ๐Ÿ”ง ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ ### ์ „์ฒด ์„œ๋น„์Šค ์ƒํƒœ ์ ๊ฒ€ ```bash # ๋ชจ๋“  Pod ์ƒํƒœ ํ™•์ธ kubectl get pods -n ai-review-ns # ๋ชจ๋“  Service ํ™•์ธ kubectl get svc -n ai-review-ns # ๋ชจ๋“  Ingress ํ™•์ธ kubectl get ing -n ai-review-ns # ๋กœ๊ทธ ํ™•์ธ (์˜ˆ: restaurant ์„œ๋น„์Šค) kubectl logs -l app=restaurant-api -n ai-review-ns --tail=100 ```