피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Native Dependency 해결을 위한 Azure Functions Docker 기반 최적화 설계
Running Azure Functions in Docker: Why and How
AI 요약
Context
Zip-deploy 기반의 Consumption plan은 OS 레벨의 제어권 부재로 Chromium, FFmpeg와 같은 Native dependencies 설치가 불가능한 제약 존재. 관리형 인프라의 편의성보다 OS 수준의 패키지 제어와 환경 일관성이 우선되는 시점에 컨테이너화 전환 필요.
Technical Solution
- Multi-stage build 도입을 통한 빌드 아티팩트와 런타임 이미지 분리로 최종 이미지 경량화 구현
--platform=linux/amd64플래그 명시를 통한 Apple Silicon 등 다양한 아키텍처 간 빌드 결정성 확보global.json내 SDK 버전 핀닝 및 Isolated Worker 패키지 버전 최신화로 런타임 미스매치 방지- /home/site/wwwroot 경로 기반의 WORKDIR 설정으로 Functions host 프로세스의 앱 진입점 정합성 유지
- KEDA 기반의 Scale-to-zero 구조를 채택하여 리소스 효율성과 자동 확장성 동시 확보
- ACA 또는 AKS 배포를 통해 기존 마이크로서비스 오케스트레이션 레이어와의 통합 관리 체계 구축
실천 포인트
1. Puppeteer, FFmpeg 등 OS 패키지 설치 필요 여부 확인
2. .NET 10 사용 시 Linux Consumption plan 대신 Flex Consumption, Premium, ACA, AKS 검토
3. Dockerfile 작성 시 `--platform` 플래그와 `global.json` 버전 핀닝 적용 여부 체크
4. Isolated Worker 패키지 버전이 .NET 10 호환 버전(Worker
2.
5
0.0+, SDK
2.
0.5+)인지 검증