MySQL 앱에 적합한 호스팅 옵션을 선택합니다.
새로운 앱을 개발하거나 기존 앱을 현대화할 때 성능, 보안 및 비용 효율성을 최적화하려면 올바른 호스팅 옵션을 선택해야 합니다. 전통적으로 앱은 물리적 또는 가상화된 온프레미스 하드웨어에서 IIS(인터넷 정보 서비스), Apache, 또는 NGINX와 같은 웹 서버에 호스팅되었습니다. 이 옵션은 인프라 팀이 환경을 완전히 제어할 수 있다는 이점을 제공하지만 간접비, 초기 비용, 가용성, 확장성, 복원력, 보안 및 준수를 관리하기 위한 추가 활동이 필요합니다.
앱을 클라우드에 배포하면 이러한 영역을 관리할 필요가 없습니다. 클라우드에서 앱을 호스팅하면 전체 설정 비용이 절감되고 BCDR(비즈니스 연속성 및 재해 복구) 옵션을 통해 가용성과 안정성이 향상되며, 필요에 따라 앱 리소스를 확장할 수 있으며 고급 보안을 제공합니다.
Microsoft Azure는 앱의 아키텍처 요구 사항 및 사용 사례를 해결하기 위해 사용자 지정된 다양한 앱 호스팅 옵션을 제공합니다.
이러한 앱 호스팅 옵션 중 다수는 확장성, 성능 및 관리 효율성으로 인해 백 엔드 데이터베이스에 특히 효과적인 서비스인 Azure Database for MySQL - 유연한 서버와 원활하게 통합됩니다. 이 단원에서는 앱 워크로드에 가장 적합한 호스팅 옵션을 결정하는 데 도움이 되는 몇 가지 일반적인 MySQL 앱 아키텍처와 Azure 서비스를 살펴봅니다.
Azure App Service의 웹앱
MySQL은 저렴한 비용으로 이식성, 속도, 확장성 및 안정성을 제공하므로 웹 및 모바일 앱 개발에 가장 널리 사용되는 데이터베이스 중 하나입니다. 백 엔드에서 Azure Database for MySQL - 유연한 서버를 사용하면 경량 또는 중요 업무용 LAMP(Linux-Apache-MySQL-PHP) 스택 인터넷 규모 앱을 더 쉽게 빌드할 수 있습니다. 또한 WordPress, Drupal 또는 Joomla와 같은 인기 있는 CMS, Moodle과 같은 학습 관리 시스템, Magento와 같은 전자상거래 플랫폼을 사용하여 개발할 수도 있습니다. 이러한 플랫폼은 모두 Azure Database for MySQL - 유연한 서버와 호환됩니다.
개발자는 웹앱, REST API 및 모바일 백 엔드 호스팅을 위한 HTTP 기반 PaaS(Platform-as-a-Service) 솔루션인 Azure App Service를 사용하여 Windows 또는 Linux 환경에 이러한 MySQL 지원 웹 및 모바일 앱을 배포할 수 있습니다. Azure App Service를 사용하면 관리 오버헤드를 줄이고, 선호하는 언어로 개발하고, 앱 배포를 자동화하고, 신속하게 스케일 업 및 스케일 다운하고, 앱을 "Docker화"하여 사용자 지정 Windows 또는 Linux Docker 컨테이너를 호스팅할 수도 있습니다.
Azure Kubernetes Service 또는 Azure Container Apps의 컨테이너화된 앱(마이크로 서비스 아키텍처)
최근 마이크로 서비스 아키텍처를 갖춘 앱은 효율성, 복원력, 확장성 및 배포 용이성으로 인해 점점 인기가 높아지고 있습니다. 기존의 모놀리식 앱과 달리 각 마이크로 서비스 또는 컨테이너는 독립적으로 작동하며 전체 앱을 다시 배포하지 않고도 업데이트할 수 있습니다.
Azure에서 이러한 마이크로 서비스를 AKS(Azure Kubernetes Service)에 배포할 수 있습니다. 이 서비스는 가장 복잡한 컨테이너화된 앱을 빠르고 쉽게 정의, 배포, 디버그 및 업그레이드하는 데 도움이 되는 완전 관리형 Kubernetes 서비스입니다.
AKS 외에도 ACA(Azure Container Apps)는 마이크로 서비스로 빌드된 최신 앱에 이상적인 서버리스 컨테이너 호스팅 서비스를 제공합니다. ACA는 가상 머신이나 Kubernetes 클러스터와 같은 기본 인프라를 관리하지 않고도 컨테이너 배포 및 크기 조정을 간소화합니다. 이벤트 기반 아키텍처를 위해 Azure Logic Apps 및 Azure Functions와 잘 통합되어 앱 구성 요소의 신속한 크기 조정 및 관리를 지원합니다. ACA는 HTTP 트래픽 또는 이벤트 기반 트리거를 기반으로 동적 크기 조정 옵션을 제공하여 민첩한 작업과 빠른 반복이 필요한 앱에 특히 유용합니다. 이 서비스는 Windows 및 Linux 컨테이너를 모두 지원하므로 다양한 프로그래밍 환경에서 개발된 마이크로 서비스를 원활하게 배포할 수 있습니다.
AKS를 통한 기존 Kubernetes 배포와 함께 ACA를 활용하면 컨테이너화된 앱을 더 유연한 방식으로 오케스트레이션하고, 크기를 조절하고, 관리할 수 있습니다. 이러한 방식은 운영 효율성을 최대화할 뿐만 아니라 시장 변화와 고객 요구에 신속하게 대응할 수 있는 기능도 향상합니다.
Azure Functions 및 Azure Logic Apps를 사용한 이벤트 기반 서버리스 앱
서버리스 앱은 이벤트 기반 모델을 사용하여 개발을 가속화하고, 이벤트 및 바인딩에 응답하는 코드를 자동으로 실행하여 추가 서비스를 원활하게 통합하는 트리거를 사용합니다. 코드를 실행하는 데 소요된 시간 및 리소스에 대해서만 요금이 청구됩니다.
Azure Functions 및 Azure Logic Apps는 일련의 중요한 이벤트에 대응하는 시스템을 빌드하는 데 도움이 되는 Azure의 서버리스 솔루션입니다.
- Azure Functions Azure Functions는 HTTP 요청, 타이머 이벤트(cron 작업) 또는 Azure 서비스 이벤트(예: Azure Storage 큐 또는 Service Bus의 메시지)와 같은 다양한 트리거에 대한 응답으로 코드를 실행하는 매우 다양한 서버리스 컴퓨팅 서비스입니다. 이러한 유연성을 통해 서버 인프라를 관리하지 않고도 변경 내용에 실시간으로 응답하는 앱을 빌드할 수 있습니다. Azure Functions는 C#, Java, JavaScript, Python 및 PowerShell을 포함한 광범위한 프로그래밍 언어를 지원하므로 다양한 개발자 기반이 액세스할 수 있습니다. 이러한 함수는 다른 Azure 리소스와 상호 작용할 수도 있습니다.
- Azure Logic Apps는 앱과 엔터프라이즈 전체에서 작업, 프로세스, 워크플로를 자동화하고 오케스트레이션하는 데 도움이 되는 서버리스 디자인 환경을 제공합니다. Azure Portal 또는 Visual Studio에서 비주얼 디자이너를 사용하면 최소 코딩으로 복잡한 비즈니스 시나리오를 자동화하는 워크플로를 설정할 수 있습니다. 이러한 워크플로는 일괄 주문 처리 및 결과 집계와 같은 복잡한 작업을 수행하기 위해 실행되는 작업이라는 함수 또는 단계 컬렉션을 오케스트레이션합니다.
또한 Azure는 Azure Event Grid, Azure Service Bus 및 Azure Event Hubs와 같은 서비스도 제공하여 이벤트 기반 워크플로에서 서버리스 앱을 트리거할 수 있는 이벤트와 메시지를 전달하고 관리합니다.
Azure VM의 모놀리식 레거시 애플리케이션
일부 조직에는 비즈니스 프로세스와 밀접하게 연결되어 있고 현대화하기 어려운 모놀리식 아키텍처를 갖춘 레거시 앱이 있을 수 있습니다. 리프트 앤 시프트 모델을 사용하여 이러한 앱을 Azure로 마이그레이션하고 IaaS(Infrastructure-as-a-Service) 서비스인 Azure Virtual Machines에서 호스트할 수 있습니다.
Azure의 이점은 백업 및 복원 서비스, 디스크 암호화 및 초기 비용이 필요하지 않은 크기 조정 옵션을 사용하도록 설정하는 기능을 포함하지만, Azure VM에서 앱을 배포, 유지 관리 및 관리하기 위해서는 사람이 직접 작업해야 합니다.