Azure App Service 알아 보기
App Service 란 무엇인가?
Azure App Service는 인터넷을 통해 서비스되는 다양한 응용 프로그램을 만들고 관리할 수 있는 플랫폼입니다. 이를 통해 웹사이트, 앱의 백엔드, 그리고 REST API(인터넷 앱이 서로 통신하는 방식)를 운영할 수 있습니다.
사용자는 자신이 선호하는 프로그래밍 언어나 도구를 사용하여 이러한 서비스를 만들 수 있고, Microsoft의 Windows나 오픈소스인 Linux 시스템 어디에서나 손쉽게 이 앱을 실행하고, 필요에 따라 성능을 향상시키거나 사용자가 많아짐에 따라 서비스 규모를 늘릴 수 있습니다.
App Service 주요 특징
자동 크기 조정 지원 (Autoscaling)
Azure App Service는 사용자의 웹앱이 사용하는 자원을 자동으로 조정하는 기능을 제공합니다.
사용량이 많아질 때 자동으로 컴퓨터 자원을 늘려서 웹앱이 더 많은 요청을 처리할 수 있도록 도와주며(Scale up), 사용량이 적을 때는 자원을 줄여 비용을 절약할 수 있게 해줍니다(Scale down). 여기서 자원이란, 웹앱을 실행하는데 필요한 프로세서의 코어 수나 메모리(RAM)의 크기를 말합니다.
또한, 웹앱을 실행하는 서버의 수를 조정하는 기능도 있습니다. 필요에 따라 서버의 수를 늘려 더 많은 사용자가 웹앱을 동시에 사용할 수 있게 하거나(Scale out), 적은 수의 서버로 줄여 비용을 절약할 수 있습니다(Scale in).
연속 통합/배포 지원 (CI/CD)
Azure Portal을 통해서, 개발자들은 자신의 코드가 있는 여러 곳(Azure DevOps Services, GitHub, Bitbucket, FTP 서버, 또는 자신의 컴퓨터에 있는 Git 저장소 등)으로부터 Azure App Service에 자신의 웹앱을 자동으로 업데이트하고 배포할 수 있습니다. 이것은 연속 통합(CI)과 연속 배포(CD)를 지원하는 기능입니다.
코드를 이런 서비스들과 연동시키면, 코드에 변경이 있을 때마다 Azure App Service가 자동으로 이 변경사항을 감지하고 웹앱을 최신 상태로 유지시켜 줍니다. 이로써 개발자는 코드 업데이트를 수동으로 할 필요 없이, 새로운 기능을 빠르고 자주 배포할 수 있게 됩니다.
배포 슬롯 (Deployment Slot)
Azure App Service를 사용하여 웹앱을 배포할 때, ‘표준’ 또는 그 이상의 서비스 계획을 선택하면, 웹앱의 기본 버전(프로덕션 슬롯이라고도 불림) 외에도 ‘배포 슬롯’이라고 불리는 추가적인 버전을 만들 수 있습니다.
이 배포 슬롯들은 마치 독립적인 웹앱처럼 각각의 고유한 호스트 이름을 가지고 있으며, 실제로 서비스 중인 프로덕션 앱과는 분리되어 있습니다.
배포 슬롯을 사용하면 새로운 버전의 앱을 실제 사용자에게 영향을 주지 않고 테스트하거나 준비할 수 있습니다. 만약 새로운 버전이 충분히 테스트되었고, 사용 준비가 되었다고 판단된다면, 프로덕션 슬롯과 배포 슬롯의 내용을 쉽게 교환할 수 있습니다.
이렇게 하면 새로운 버전을 매우 안전하게 실제 운영 환경으로 이동시킬 수 있으며, 만약 문제가 발생한다면 이전 버전으로 빠르게 돌아갈 수도 있습니다.
App Service on Linux
Azure App Service on Linux는 여러 인기 있는 프로그래밍 언어 및 프레임워크에 대한 기본 제공 지원을 제공하여, 개발자가 Linux 환경에서 웹앱을 쉽게 배포하고 실행할 수 있도록 설계되었습니다.
지원되는 언어로는 Node.js, Java(JRE 8 & JRE 11), PHP, Python, .NET, Ruby 등이 있으며, 이는 Azure의 표준 이미지로 제공됩니다.
개발자는 자신의 코드를 App Service에 직접 배포하기만 하면, Azure가 백엔드에서 필요한 언어와 런타임 환경을 관리합니다.
프로그래밍 언어 및 런타임 환경을 서포트의 장점
- 시간 절약 및 효율성: 개발자는 인프라 설정과 관리에 시간을 소비하지 않고, 애플리케이션 개발에 더 집중할 수 있습니다. 이는 특히 개발 기간이 짧거나 자원이 제한적인 프로젝트에 유용합니다.
- 간편성: 런타임 환경 설정에 대한 걱정 없이 코드만 배포하면 되기 때문에, 배포 프로세스가 간단해집니다. 이는 학습 곡선을 줄이고 개발자가 새로운 기술 스택을 더 쉽게 채택할 수 있도록 도와줍니다.
- 자동화 및 오류 감소: Azure가 런타임 관리를 자동화하기 때문에, 개발자가 직접 환경을 구성할 때 발생할 수 있는 오류 가능성이 줄어듭니다.
- 보안 및 업데이트 관리: Microsoft는 서비스의 보안 패치와 업데이트를 관리하여, 개발자가 이러한 작업에 신경 쓰지 않아도 됩니다.
만약 애플리케이션이 기본 제공되는 이미지로 지원되지 않는 특정 런타임이나 설정을 요구한다면, 사용자는 자신의 커스텀 Docker 컨테이너를 생성하여 App Service에서 실행할 수 있습니다. 이를 통해 개발자는 거의 모든 종류의 애플리케이션을 Azure에서 실행할 수 있는 유연성을 가질 수 있습니다.