[HelloWorld 개발일지] ACI(Azure Container Instance)에서 Azure Function으로 마이그레이션
ACI -> Function 마이그레이션 이유
기존 HelloWorld 모델 서버를 배포할 때, ACI(Azure Container Instance)를 사용했는데, 몇가지 문제가 발생
- 변동 IP로 백엔드와 연동 불안정
- 고정 비용 발생
Azure Function을 활용하면 고정된 url로 연동 안정성이 생기고 사용량에 따른 요금 청구로 비용을 절감할 수 있겠다 싶어서 마이그레이션을 결심했습니다.
방법
VS코드에서 Azure Functions 프로젝트 생성
- VS Code 확장 설치:
- VS Code를 열고 좌측 사이드바의 확장(Extensions) 아이콘을 클릭합니다.
- 검색창에 “Azure Functions”를 입력합니다.
- “Azure Functions” 확장을 찾아 설치합니다.
- 추가로 “Python” 확장도 설치되어 있는지 확인합니다.
- Azure Functions Core Tools 설치:
- Windows의 경우:
- 관리자 권한으로 PowerShell을 실행합니다.
- 다음 명령어를 입력합니다:
1
npm install -g azure-functions-core-tools@4 --unsafe-perm true
- macOS/Linux의 경우:
- 터미널을 열고 다음 명령어를 입력합니다:
1
npm install -g azure-functions-core-tools@4 --unsafe-perm true
- 터미널을 열고 다음 명령어를 입력합니다:
- Windows의 경우:
- Python 설치 확인:
- VS Code의 터미널에서 다음 명령어로 Python 버전을 확인합니다:
1
python --version
- Python이 설치되어 있지 않다면, python.org에서 다운로드하여 설치합니다.
- VS Code의 터미널에서 다음 명령어로 Python 버전을 확인합니다:
- VS Code에서 프로젝트 생성:
- VS Code를 실행합니다.
Ctrl+Shift+P
(macOS:Cmd+Shift+P
)를 눌러 명령 팔레트를 엽니다.- “Azure Functions: Create New Project”를 입력하고 선택합니다.
- 프로젝트를 저장할 폴더를 선택합니다.
- 언어로 “Python”을 선택합니다.
- Python 인터프리터를 선택합니다.
- 첫 번째 함수의 템플릿으로 “HTTP trigger”를 선택합니다.
- 함수 이름을 입력합니다 (예: “HttpTrigger”).
- 인증 수준을 선택합니다 (예: “Function”).
- 가상 환경 설정:
- VS Code의 통합 터미널에서 다음 명령어를 실행합니다:
1
python -m venv .venv
- 가상 환경을 활성화합니다:
- Windows:
.venv\Scripts\Activate
- macOS/Linux:
source .venv/bin/activate
- Windows:
- VS Code의 통합 터미널에서 다음 명령어를 실행합니다:
- 필요한 라이브러리 설치:
requirements.txt
파일을 열고 필요한 라이브러리를 추가합니다.- 터미널에서 다음 명령어를 실행합니다:
1
pip install -r requirements.txt
로컬에서 테스트
로컬에서 Azure Functions를 테스트하는 방법을 단계별로 설명해 드리겠습니다:
- 가상 환경 활성화: 먼저 프로젝트의 가상 환경이 활성화되어 있는지 확인합니다.
1 2 3 4 5
# Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate
- 의존성 설치 확인: 필요한 모든 라이브러리가 설치되어 있는지 확인합니다.
1
pip install -r requirements.txt
- 로컬 설정 파일 확인:
local.settings.json
파일에 필요한 모든 환경 변수가 설정되어 있는지 확인합니다. 예:1 2 3 4 5 6 7 8 9 10
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "python", "ES_CLOUD_ID": "your_elastic_cloud_id", "ES_API_KEY": "your_elastic_api_key", "OPENAI_KEY": "your_openai_api_key" } }
함수 앱 실행: VS Code의 통합 터미널에서 다음 명령을 실행합니다:
1
func start
이 명령은 로컬 개발 서버를 시작하고 함수의 URL을 표시합니다.
- 함수 테스트:
- Postman 사용:
- 새 POST 요청 생성
- URL 입력:
http://localhost:7071/api/question
- Headers 탭에서
Content-Type: application/json
추가 - Body 탭에서 raw 선택 후 JSON 형식으로 다음 입력:
1 2 3 4 5 6 7 8
{ "Conversation": [ { "speaker": "human", "utterance": "한국에서 외국인 근로자로 일하기 위한 비자 요건은 무엇인가요?" } ] }
This post is licensed under CC BY 4.0 by the author.