App Service 웹앱 구현

App Service Plan, 배포 슬롯 스왑, 자동 크기 조정, TLS/SSL, 진단 로깅을 정리합니다.

AZ-204 시험에서 App Service는 가장 중요한 서비스 중 하나입니다. 계층 구조, 배포 슬롯, 자동 크기 조정, 앱 설정, 진단 로깅을 정확히 이해해야 합니다.

 

App Service란 무엇인가요?

아파트 단지를 떠올려 보세요. 아파트 단지 전체가 App Service Plan(인프라)이고, 각 세대가 개별 앱입니다. 단지의 규모(계층)에 따라 세대 수와 편의 시설이 달라지듯, App Service Plan의 계층에 따라 사용할 수 있는 기능이 달라집니다.

App Service는 웹 앱, REST API, 모바일 백엔드를 서버 관리 없이 실행할 수 있는 완전 관리형 플랫폼(PaaS)입니다.

 

App Service Plan 계층

App Service Plan은 앱이 실행되는 가상 머신의 묶음입니다. 같은 Plan에 여러 앱을 올릴 수 있으며, 모두 같은 컴퓨팅 자원을 공유합니다.

| 계층 | 특징 | 사용 사례 | |------|------|---------| | Free / Shared | 무료 또는 공유 인프라, 배포 슬롯 없음, 커스텀 도메인 제한 | 학습·실험 | | Basic | 전용 VM, 수동 크기 조정, 배포 슬롯 없음 | 소규모 앱 | | Standard | 자동 크기 조정, 배포 슬롯 5개, 백업, 커스텀 도메인+SSL | 일반 운영 | | Premium | 고성능 VM, 배포 슬롯 20개, VNet 통합 | 고트래픽 앱 | | Isolated (ASE) | 전용 가상 네트워크, 최고 보안, App Service Environment | 금융·의료 등 규정 준수 |

핵심: 배포 슬롯(Deployment Slots)과 자동 크기 조정은 Standard 계층 이상에서만 사용 가능합니다.

 

배포 슬롯 (Deployment Slots)

배포 슬롯은 같은 App Service 안에 여러 개의 환경(스테이징, QA, 프로덕션 등)을 독립적으로 운영하는 기능입니다. 식당의 "시식 코너"와 비슷합니다. 손님에게 새 메뉴를 내놓기 전에, 먼저 직원들이 시식 코너에서 맛을 확인합니다. 문제가 없으면 본 메뉴판(프로덕션)에 올립니다.

슬롯 스왑 (Slot Swap)

스테이징 슬롯에서 충분히 테스트한 후 클릭 한 번으로 프로덕션과 교체합니다. 스왑 중 앱이 잠깐 웜업(준비)된 후 교체되기 때문에 다운타임이 발생하지 않습니다.

다운타임 제로 배포: 새 버전이 준비될 때까지 기존 버전이 계속 서비스 롤백: 문제가 생기면 즉시 다시 스왑하여 이전 버전으로 복원 자동 스왑: 스테이징에 배포 완료 시 자동으로 프로덕션과 스왑 (CI/CD에 유용)

슬롯 고정 설정 (Sticky Settings)

슬롯 설정 중 일부는 스왑할 때 함께 이동하지 않고 각 슬롯에 고정됩니다. 예를 들어 데이터베이스 연결 문자열을 슬롯마다 다르게 설정하고 고정시키면, 스테이징은 테스트 DB를, 프로덕션은 운영 DB를 계속 사용합니다.

슬롯 고정(Sticky): 스왑 후에도 해당 슬롯에 계속 남는 설정 (예: 연결 문자열, 특정 앱 설정) 슬롯 미고정: 스왑 시 함께 이동하는 설정 (예: 일반 앱 설정)

 

자동 크기 조정 (Autoscaling)

점심시간에 손님이 몰리면 직원을 더 배치하고, 한산해지면 줄이는 레스토랑처럼, App Service도 트래픽에 따라 자동으로 인스턴스 수를 늘리거나 줄입니다.

크기 조정 방식

| 방식 | 설명 | 예시 | |------|------|------| | 규칙 기반 (Rule-based) | 메트릭이 임계값을 넘으면 확장/축소 | CPU 80% 이상이면 인스턴스 +1 | | 스케줄 기반 (Schedule-based) | 특정 시간대에 미리 확장 | 매일 오전 9시에 인스턴스 3개로 증가 |

지원 메트릭: CPU 사용률, 메모리 사용률, HTTP 큐 길이, 요청 수 스케일 아웃 (Scale Out): 인스턴스 수 증가 (수평 확장) 스케일 업 (Scale Up): 더 큰 VM 계층으로 이동 (수직 확장)

 

앱 설정 (App Settings)

앱 설정은 앱에 환경 변수를 주입하는 기능입니다. 코드 안에 비밀번호나 API 키를 직접 적지 않고, 외부에서 설정값을 주입받아 사용합니다. 마치 자물쇠 비밀번호를 코드에 적지 않고, 금고 밖에서 입력하는 것과 같습니다.

앱 설정: 코드에서 환경 변수로 읽을 수 있는 키-값 쌍 연결 문자열 (Connection Strings): 데이터베이스 연결 정보 (ADO.NET, MySQL 등) Key Vault 참조: 앱 설정 값을 Azure Key Vault에서 직접 읽어오는 방식. 비밀을 App Service에 저장하지 않아 보안 강화.

앱 설정 슬롯 동작

앱 설정을 슬롯 설정으로 표시하면 스왑 시 이동하지 않습니다. 반대로 슬롯 설정이 아닌 앱 설정은 스왑 시 함께 이동합니다.

 

진단 로깅 (Diagnostic Logging)

앱에 문제가 생겼을 때 원인을 찾기 위해 사용합니다. 의사가 환자를 진단할 때 검사 결과를 보는 것처럼, 진단 로깅으로 앱의 상태를 분석합니다.

| 로그 유형 | 설명 | 지원 OS | |---------|------|--------| | 애플리케이션 로깅 | 앱 코드가 작성하는 로그 (콘솔 출력 등) | Windows / Linux | | 웹 서버 로깅 | HTTP 요청/응답 기록 (IIS 로그) | Windows | | 자세한 오류 메시지 | HTTP 4xx/5xx 오류 페이지 저장 | Windows | | 실패한 요청 추적 | 실패한 요청의 상세 처리 과정 기록 | Windows |

로그 저장 위치: App Service 파일 시스템 또는 Azure Blob Storage 스트리밍 로그: Azure Portal 또는 Azure CLI로 실시간 로그 확인 가능

 

시험 핵심 정리

"배포 슬롯, 자동 크기 조정 사용 가능한 최소 계층" -- Standard

"전용 네트워크, 최고 보안, 규정 준수" -- Isolated (ASE)

"다운타임 없이 스테이징을 프로덕션으로 전환" -- 슬롯 스왑 (Slot Swap)

"스왑 후에도 슬롯에 남는 설정" -- 슬롯 고정 설정 (Sticky Settings)

"문제 발생 시 즉시 이전 버전으로 복원" -- 슬롯 스왑 롤백

"CPU/메모리/HTTP 큐 기반 자동 인스턴스 확장" -- 규칙 기반 자동 크기 조정

"코드에 비밀번호 넣지 않고 외부 주입" -- 앱 설정 (App Settings)

"앱 설정값을 Key Vault에서 직접 읽기" -- Key Vault 참조

"HTTP 요청/응답 기록 (IIS 로그)" -- 웹 서버 로깅

"앱 코드가 직접 기록하는 로그" -- 애플리케이션 로깅

"스케일 아웃 vs 스케일 업" -- 아웃=인스턴스 수 증가 / 업=더 큰 VM으로 이동

블로그 목록으로 돌아가기