등장하는 서비스들부터 정리하자
Azure에서 컨테이너를 다루는 서비스는 크게 세 가지다.
서비스 한 줄 요약
| ACR (Azure Container Registry) | 내 Docker 이미지를 저장하는 프라이빗 저장소 |
| AKS (Azure Kubernetes Service) | 쿠버네티스를 Azure가 대신 관리해주는 서비스 |
| Web App for Containers | 컨테이너 기반 웹앱을 쉽게 배포하는 PaaS |
세 개가 독립적으로 쓰이기도 하지만 보통 같이 쓴다.
흐름으로 보면 이렇다.
코드 작성
→ Docker로 이미지 빌드
→ ACR에 이미지 push
→ AKS 또는 Web App for Containers에서 이미지 pull해서 배포
ACR (Azure Container Registry) - 이미지 저장소
Docker Hub를 써본 적 있다면 개념은 동일하다.
차이는 프라이빗이라는 것, 그리고 Azure 인프라 내부에 위치한다는 것이다.
Docker Hub는 퍼블릭이라 누구나 접근 가능하지만, ACR은 Azure에 호스팅된 사설 레지스트리라 접근 권한을 내가 제어할 수 있다.
# ACR에 이미지 올리는 흐름
docker build -t myapp:latest .
docker tag myapp:latest myregistry.azurecr.io/myapp:latest
docker push myregistry.azurecr.io/myapp:latest
이걸 Azure CLI(az 명령어)로도 할 수 있다.
az acr build --registry myregistry --image myapp:latest .
az acr build는 로컬에서 빌드 안 하고 ACR이 직접 빌드까지 해주는 명령어다. 훨씬 편하다.
AKS (Azure Kubernetes Service) - 관리형 쿠버네티스
쿠버네티스를 직접 구축하면 마스터 노드 설정, etcd 관리, 네트워킹 구성 등 인프라 레벨의 작업이 엄청 많다.
AKS는 이 복잡한 것들을 Azure가 대신 해주는 관리형 서비스다.
내가 신경 써야 하는 건 워커 노드(실제 앱이 돌아가는 곳)뿐이다. 마스터 노드는 Azure가 알아서 관리한다.
AKS 구조
AKS Cluster
├── Control Plane (Azure가 관리)
│ ├── API Server
│ ├── Scheduler
│ └── etcd
└── Node Pool (내가 관리)
├── Node 1 → Pod, Pod, Pod
├── Node 2 → Pod, Pod
└── Node 3 → Pod, Pod, Pod
Virtual Nodes (ACI 연동)
AKS에는 Virtual Nodes라는 기능도 있다.
트래픽이 갑자기 폭발적으로 증가할 때, 실제 Node를 늘리는 게 아니라 Azure Container Instances(ACI) 를 Virtual Node처럼 붙여서 순간적으로 스케일을 늘릴 수 있다.
실제 VM을 새로 프로비저닝하는 것보다 훨씬 빠르게 대응 가능하다.
Burst 트래픽 발생
→ Node Pool만으로는 부족
→ Virtual Nodes(ACI)에서 Pod를 추가로 실행
→ 트래픽 줄면 ACI Pod는 자동 정리
Azure CLI (az 명령어) - 왜 써야 하냐면
Azure Portal(웹 UI)로도 다 할 수 있는데 CLI를 쓰는 이유가 뭐냐?
반복 작업을 자동화할 수 있기 때문이다.
예를 들어 AKS 클러스터 생성을 포털에서 하면 클릭을 10번 이상 해야 한다.
CLI로 하면 이렇다.
# 리소스 그룹 생성
az group create --name myResourceGroup --location eastus
# AKS 클러스터 생성
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 2 \
--generate-ssh-keys
# ACR 연결
az aks update --name myAKSCluster --resource-group myResourceGroup --attach-acr myRegistry
이걸 스크립트로 만들어두면 동일한 환경을 언제든 재현할 수 있다.
팀 프로젝트에서 개발 환경을 맞추거나, CI/CD 파이프라인에 통합할 때 필수다.
Azure Web App for Containers - 더 간단한 선택지
AKS는 쿠버네티스 기반이라 오케스트레이션 개념을 알아야 한다.
근데 그냥 컨테이너로 웹앱 하나 배포하고 싶을 때는 Web App for Containers가 더 적합하다.
Azure App Service의 일부 서비스인데, 컨테이너 이미지만 지정하면 배포가 끝난다.
Docker Hub 또는 ACR에 이미지 push
→ Web App for Containers에서 이미지 지정
→ 배포 완료 (OS 패치, 로드밸런싱, 용량 관리는 Azure가 알아서)
주요 기능 3가지만 기억하면 된다.
- 간편한 배포
이미지 주소만 지정하면 몇 초 안에 프로덕션 환경에 올라간다. - CI/CD 연동
GitHub Actions, Docker Hub, ACR과 연동해두면 코드를 push할 때마다 자동으로 새 이미지를 빌드하고 배포해준다.
배포 슬롯을 활용하면 스테이징 환경에서 테스트 후 프로덕션으로 무중단 전환도 가능하다. - 자동 스케일링
트래픽에 따라 수평/수직 스케일링을 자동으로 처리해준다. 규칙만 설정해두면 된다.
AKS vs Web App for Containers 언제 뭘 써야 하나
상황 추천
| 마이크로서비스, 복잡한 오케스트레이션 필요 | AKS |
| 웹앱 하나 빠르게 배포하고 싶음 | Web App for Containers |
| 팀에 쿠버네티스 경험자가 있음 | AKS |
| 인프라 관리 최소화하고 싶음 | Web App for Containers |
정리
키워드 핵심 내용
| ACR | Azure 전용 프라이빗 Docker 레지스트리. az acr build로 빌드+push 한 번에 가능 |
| AKS | 마스터 노드를 Azure가 관리하는 쿠버네티스. Virtual Nodes로 순간 스케일 대응 가능 |
| Azure CLI | 반복 작업 자동화, CI/CD 파이프라인 통합의 핵심 도구 |
| Web App for Containers | 오케스트레이션 없이 컨테이너 배포. OS 패치, 스케일링 전부 플랫폼이 처리 |
쿠버네티스의 개념은 이미 알고 있더라도, 클라우드에서 어떤 서비스로 연결되는지 모르면 막막하다.
ACR → AKS 또는 Web App for Containers로 이어지는 흐름을 이해하면 실제로 어떻게 배포되는지 그림이 그려진다.
Azure AI 서비스 전체 한눈에 보기
크게 카테고리별로 묶으면 이렇다.
언어 계열
- Azure AI Foundry Service (OpenAI)
GPT-4, GPT-3.5-Turbo 같은 OpenAI 모델을 Azure 인프라에서 쓸 수 있다.
콘텐츠 생성, 요약, 코드 변환, 이미지 해석, 의미론적 검색까지 다 가능하다.
OpenAI API를 직접 쓰는 것과 거의 같지만, Azure 보안/규정 환경 안에서 쓴다는 게 차이다. - Azure AI Language
텍스트 기반 NLP 서비스다. 감정 분석, 키워드 추출, 언어 감지, QnA 응답 같은 기능을 API로 제공한다.
이번 글에서 다루는 Knowledge Base 기능이 여기 속한다. - Azure AI Translator
100개 이상 언어 번역 지원. 실시간 음성 번역도 된다.
음성 계열
Azure AI Speech
- STT (Speech-to-Text): 음성을 텍스트로
- TTS (Text-to-Speech): 텍스트를 음성으로
- 실시간 음성 번역
- 화자 인식 (누가 말하는지 구분)
이미지/비디오 계열
Azure AI Vision
이미지/비디오 분석, 객체 감지, 얼굴 인식, OCR을 다 처리한다.
Custom Vision으로 내가 직접 커스텀 이미지 인식 모델을 만들 수도 있다.
Azure AI Document Intelligence
문서에서 텍스트와 구조를 추출한다. 양식 인식, 데이터 추출 자동화에 쓴다.
영수증이나 계약서에서 특정 값만 뽑아오는 작업 같은 것들.
기타
Azure Bot Service: 챗봇 개발 및 배포. 웹, 모바일, 슬랙 등 다양한 채널 연동 가능
Azure AI Content Safety: 텍스트/이미지/비디오에서 유해 콘텐츠 감지
Azure Machine Learning: 모델 개발부터 배포까지 엔드투엔드 ML 플랫폼
Azure AI Search: 자연어 처리 기반 검색 서비스
왜 클라우드 AI를 쓰냐
직접 모델 학습시키고 서버에 올리면 되는 거 아닌가? 맞다. 근데 문제가 있다.
- GPU 서버 비용이 어마어마하다
- 모델 학습, 검증, 배포, 모니터링 파이프라인 구축이 다 일이다
- 유지보수도 계속 해야 한다
Azure AI 서비스를 쓰면 이 과정을 API 호출 한 번으로 대체할 수 있다.
비용도 사용한 만큼만 낸다. 초기에 GPU 서버 띄워서 날리는 것보다 훨씬 효율적이다.
Python, Java, C# 등 다양한 언어로 SDK를 제공하기 때문에 기존 프로젝트에 붙이기도 쉽다.
Azure Language Service로 QnA 봇 만들기
이론보다 실제 예시가 이해가 빠르니까, 실습 흐름을 정리해봤다.
서울 관광 FAQ를 기반으로 Knowledge Base를 만들고, 한국어 질문을 영어로 번역해서 답변하는 웹앱을 만드는 시나리오다.
고객이 한국어로 질문
→ Azure AI Translator가 영어로 번역
→ Azure Language Service Knowledge Base에서 답변 검색
→ 답변을 다시 한국어로 번역
→ 고객에게 응답
1단계: Azure AI 언어 리소스 생성
Azure Portal에서 "Language" 리소스를 만든다.
리소스 생성 시 나오는 엔드포인트 URL과 API Key를 메모해둔다.
2단계: Language Studio에서 프로젝트 생성
Language Studio에 접속해서 "Custom question answering" 프로젝트를 새로 만든다.
3단계: Knowledge Base 구축
여기서 QnA 데이터를 집어넣는다. 지원하는 소스가 꽤 다양하다.
- PDF, Word, Excel, Text 파일 직접 업로드
- 웹 페이지 URL 입력 (크롤링해서 QnA 추출)
- 직접 Q&A 쌍 입력
서울 FAQ는 웹 페이지 URL을 넣으면 Language Studio가 알아서 Q&A 쌍을 추출해준다.
4단계: 모델 학습 및 테스트
데이터를 넣고 "Save and train" 하면 모델이 학습된다.
학습 후 Language Studio 내에서 바로 테스트해볼 수 있다.
테스트 패널에서
질문: "서울시티투어버스 할인 이벤트 있나요?"
→ 답변: "서울시티투어버스 이용 시 할인 이벤트가 있습니다. 자세한 내용은..."
5단계: 배포
테스트가 끝나면 "Deploy"를 눌러 배포한다.
배포 후 API 엔드포인트가 생성된다.
POST https://{endpoint}/language/:query-knowledgebases
6단계: 앱에 통합
Python 예시로 보면 이렇다.
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.core.credentials import AzureKeyCredential
client = QuestionAnsweringClient(endpoint, AzureKeyCredential(key))
response = client.get_answers(
question="서울시티투어버스 탑승 장소가 어디인가요?",
project_name="SeoulFAQ",
deployment_name="production"
)
print(response.answers[0].answer)
번역을 추가하려면 답변 전후에 Azure AI Translator API만 한 번씩 더 호출하면 된다.
Language Service Knowledge Base가 일반 검색이랑 다른 점
일반 키워드 검색은 단어가 정확히 일치해야 한다.
"서울 투어버스 어디서 타요?" 라고 물었을 때 DB에 "탑승 장소"로 저장되어 있으면 못 찾는다.
Language Service는 자연어 이해(NLU) 기반이라 의미가 비슷하면 답을 찾아준다.
"버스 어디서 타요", "탑승 위치", "어디서 올라타나요" 다 같은 답변으로 매핑된다.
정리
키워드 핵심 내용
| Azure AI 계열 | 언어, 음성, 비전, ML 등 카테고리별로 특화 서비스 제공 |
| Azure AI Language | NLP 기반 텍스트 분석. QnA Knowledge Base 핵심 서비스 |
| Knowledge Base 구성 | URL/파일/직접 입력으로 QnA 데이터 넣고, 학습 후 API로 배포 |
| 클라우드 AI 장점 | API 호출 한 번으로 고급 AI 기능 사용. 인프라 관리 불필요 |
'Cloud > 클라우드 응용 SW 개발' 카테고리의 다른 글
| [클라우드 응용 SW 개발] 11, 12주차 (0) | 2026.06.15 |
|---|---|
| [클라우드 응용 SW 개발] 9, 10주차 (0) | 2026.06.15 |
| [클라우드 응용 SW 개발] 6,7주차 (0) | 2026.05.10 |
| [클라우드 응용 SW 개발] 4,5주차 (0) | 2026.04.02 |
| [클라우드 응용 SW 개발] 2,3주차 (0) | 2026.03.22 |