LAMP 게임 참조 아키텍처
이미 온-프레미스에서 LAMP 아키텍처를 사용하다 Azure로 이동하는 것은 매우 간단합니다. 이 참조 아키텍처를 따라 효과적이고 효율적으로 배포하는 방법을 알아보세요.
다음과 같이 공용 클라우드를 사용하는 이점 몇 가지가 추가됩니다.
- 필요에 따라 새로운 컴퓨팅 및 데이터베이스 노드를 간단하게 추가할 수 있어 단기간 동안 서버를 추가할 수 있다는 보장이 있으므로 훨씬 가벼운 인프라를 설정한 후 요구 사항에 따라 확대하거나 축소할 수 있습니다. 이밖에, Azure에서의 확장 및 축소는 온-프레미스보다 훨씬 저렴하고 신속합니다. 일부 작업은 온-프레미스에서 며칠 또는 몇 주가 걸릴 수 있지만 공용 클라우드에서는 몇 분밖에 걸리지 않습니다. 마찬가지로, 새 서버를 스핀업하기 위해 하드웨어를 구입하지 않아도 되는 경우 선행 비용이 훨씬 더 낮으며 필요에 따라 용량을 동적으로 확장할 수 있는 경우에는 지속 비용이 감소할 수 있습니다.
- 최신, 최고 하드웨어를 사용하여 성능이 향상되므로 더 적은 자원으로 더 많은 작업을 수행할 수 있습니다. 또한 고성능 하드웨어를 공용 클라우드에서 사용하는 것이 온-프레미스에서 구매하는 것보다 저렴합니다.
- 하드웨어 오류는 불가피하며 이를 온-프레미스에서 해결하는 것은 심각한 문제가 될 수 있습니다. Azure에서 인프라를 실행하면 자동 백업 및 장애 조치(failover) 덕분에 안심할 수 있습니다.
- 비즈니스에서는 게임 측면에 더 집중할 수 있고 백엔드에서 모든 것이 정밀하게 실행되도록 보장하기 위해 많은 작업이 요구되는 IT에서는 부담이 경감된다는 의미에서 편리합니다.
그리고 일단 공용 클라우드를 시작하면, 나중에 구현을 고려 중이거나 이미 사용 중인 일부 기능을 보다 최적으로 구현할 수 있는 최신 클라우드 기능을 사용하여 여정을 계속할 수 있습니다. 예를 들어 LAMP를 활용하는 멀티 플레이어 메치 메이커를 구현했다면 이 기능에 매우 적합한 서버리스 방식을 고려할 수 있을 것입니다.
클라우드에서 재미를 동적으로 크기 조정하는 게임 개발자
"Azure에는 LAMP 스택을 실행하는 데 필요한 모든 것이 있었습니다."
"Terraform은 Azure에서 "매끄럽게 플레이"되었습니다".
Alex Shirov: 수석 기술 책임자
- Azure Linux Virtual Machines -Azure에서 컴퓨팅 성능을 얻는 가장 기본적인 방법입니다. 이 경우 Apache 웹 서버 및 애플리케이션 PHP 파일 LAMP 구성 요소를 호스트합니다.
- Azure 가상 컴퓨터 확장 집합 - 부하 분산되는 동일한 가상 컴퓨터의 그룹을 만들고 관리할 수 있습니다.
- Azure Database for MySQL - LAMP 데이터 저장소 구성 요소입니다.
- Azure Cache for Redis - 아키텍처의 성능 및 확장성을 개선하기 위한 캐시입니다.
- Azure Load Balancer - Azure 가상 컴퓨터 확장 집합의 여러 Azure Linux 가상 컴퓨터 인스턴스에 트래픽을 분산합니다.
- Azure Storage - 플랫 파일을 저장합니다.
- Azure DDoS Protection 표준 - Azure DDoS Protection은 애플리케이션 디자인 모범 사례와 결합하여 DDoS 공격에 대한 방어를 제공합니다.
- 디바이스 클라이언트는 DNS(Domain Name System)에서 Azure Load Balancer IP 주소를 가져옵니다.
- Azure Load Balancer는 Azure 가상 컴퓨터 확장 집합에서 특정 Azure Linux 가상 컴퓨터 인스턴스를 선택합니다.
- Azure Linux Virtual Machines 코드는 commoncache-aside 패턴에 따라 Azure Cache for Redis에 저장된 정보부터 읽으려고 시도합니다.
- Azure Linux Virtual Machines 코드는 연결 풀러를 사용하여 Azure Database for MySQL 및 사용 가능한 모든 읽기 복제본에서 정보를 읽거나 씁니다.
- 고가용성을 보장하기 위해 Azure Database for MySQL은 복제를 사용하도록 설정되어 있습니다.
- Azure 가상 컴퓨터 확장 집합의 Azure Linux 가상 컴퓨터 인스턴스는 고성능 Azure Storage에서 플랫 파일을 읽고 습니다.
Azure 가상 컴퓨터 확장 집합에서 실행되는 애플리케이션은 일반적으로 다음 두 가지 방법 중 하나로 배포됩니다.
- 배포 시 가상 컴퓨터 확장을 사용하여 애플리케이션 파일을 복사합니다.
- OS와 애플리케이션 파일을 모두 단일 사용자 지정 이미지에 포함하는 골든 이미지를 만듭니다.
가상 컴퓨터 확장 기반 방법은 만들 때마다 새 가상 컴퓨터에서 확장이 실행되기 때문에 수평 확장이 더 느릴 수 있습니다. 크기 조정 집합이 골든 이미지를 기반으로 하는 경우 새 가상 컴퓨터는 원본 사용자 지정 이미지의 복사본이며, 필수 구성 요소와 애플리케이션이 이미 설치되어 있으므로 수평 확장이 더 빠릅니다.
변경할 수 없는 배포라고도 하는 골든 이미지 방법을 통해 얻을 수 있는 장점은 다음과 같습니다.
- 이미 테스트한 이미지를 승격하는 것이므로 예측 가능합니다.
- 또한 간편하게 크기를 조정하고 잘 알려진 이전 상태로 간단하게 롤백할 수 있습니다.
또한 더 자주 업데이트해야 하는 PHP 스크립트를 제외하고 OS 버전, Apache 버전, PHP 버전, 사용자 지정 도구처럼 가장 변경 불가능한 요소를 포함하는 골든 이미지를 작성하여 두 방법을 함께 사용할 수도 있습니다.
중요
다양한 방법을 사용하여 이 아키텍처를 배포하는 자세한 단계는 단일 지역 LAMP 아키텍처 배포를 참조하세요.
여러 읽기 복제본에 읽기 워크로드를 분산하는 부하 분산 장치 프록시로 사용할 수 있는 mysqlnd_ms(MySQL용 PHP 네이티브 드라이버의 플러그인)를 활용하는 것을 고려합니다.
MySQL Server에 연결하기 위해 서버 이름, 사용자 이름 및 암호를 지정할 수 있으므로, Azure Database for MySQL 읽기 복제본에 읽기 워크로드를 분산하여 부하를 분산하고 수평 확장하는 데 사용할 수 있습니다.
Azure 구독이 없는 경우 무료 계정을 만들어 12개월 무료 서비스를 시작합니다. 이러한 서비스의 제한을 초과하지 않는 한 Azure 무료 계정에서 무료로 제공하는 서비스에 대해서는 요금이 부과되지 않습니다. Azure Portal을 통해 또는 사용량 파일을 통해 사용량을 확인하는 방법을 알아보세요.
이러한 참조 아키텍처를 실행하는 동안 사용되는 Azure 서비스의 비용은 사용자가 부담하며, 전체 비용은 분석 파이프라인을 통해 실행되는 이벤트 수에 따라 달라집니다. 참조 아키텍처에 사용된 각 서비스에 대한 가격 웹 페이지를 참조하세요.
- Azure Linux Virtual Machines
- Azure 가상 컴퓨터 확장 집합
- Azure Database for MySQL
- Azure Cache for Redis
- Azure Load Balancer
- Azure Storage
- Azure DDoS Protection 표준
Azure 가격 계산기를 사용하여 사용하려는 Azure 서비스에 대한 비용을 구성하고 예측할 수도 있습니다.
클라우드 인프라의 비용을 정확하게 예측하는 것은 힘들 수 있습니다. 이 가이드에서 Azure 가격 계산기의 설정이 게임 백엔드를 위한 단일 지역 LAMP 아키텍처 배포와 어떤 관련이 있는지 간편하게 확인할 수 있습니다.
이 시스템을 구현하는 사용자는 다음과 같은 중요 사항을 고려해야 합니다.
Azure 가상 컴퓨터 인스턴스
Virtual Machine Scale Sets 서비스 자체는 추가 요금이 부과되지 않습니다. 선택한 컴퓨팅 인스턴스와 사용한 다른 기본 인프라 리소스(예: 저장소 및 네트워킹)에 대해서만 요금이 청구됩니다.
하드웨어 고려 사항을 검토하여 특정 요구 사항에 따라 사용할 가장 적절한 가상 컴퓨터 유형과 아키텍처 내에서 시작해야 하는 인스턴스 수를 결정합니다. 백엔드가 완벽하게 프로덕션 환경에서 사용될 때까지 PoC(개념 증명)에서 조정이 필요할 수 있습니다.
월간 컴퓨팅 비용을 추정하려면 다음 공식을 적용합니다. 가격은 지역별로 다를 수 있습니다.
(# of Virtual Machine instances * # of hours running per month) + (# of Virtual Machine instances * # of GBs per instance)
Azure Cache for Redis
상황에 맞는 적절한 캐시를 선택하려면 어떤 Azure Cache for Redis 제품 및 크기를 사용해야 하나요?를 검토하세요. 월간 Azure for Redis Cache 비용을 추정하려면 다음 공식을 적용합니다. 가격은 인스턴스 SKU(프리미엄 > 표준 > 기본)에 따라 달라지며 지역별로도 다를 수 있습니다.
(# of instances * # of hours running per month) + (# of GBs per instance for persistence if enabled in Premium SKU)
매우 큰 메모리 용량이 필요한 경우 프리미엄 SKU를 사용하고 각 노드가 주/복제본 캐시 쌍으로 구성된 고가용성 클러스터를 만들어야 합니다.
Azure Database for MySQL
월간 Azure Database for MySQL 비용을 추정하려면 다음 공식을 적용합니다. 가격은 데이터베이스 계층(메모리 최적화 > 범용 > 기본)과 컴퓨팅 계층에 따라 달라지며 지역별로도 다를 수 있습니다.
(# of servers * # of hours running per month) + (# of GBs provisioned) + (# of GBs in additional backup storage)
총 프로비전된 저장소의 최대 100%까지 백업 저장소에 부과되는 추가 요금은 없습니다.
Azure Load Balancer
기본 Azure Load Balancer는 무료이며, 표준 Azure Load Balancer는 관련 요금이 있습니다. 월간 표준 Load Balanacer 비용을 추정하려면 다음 공식을 적용합니다. 가격은 지역별로 다를 수 있습니다.
(# or GBs of data processed) + (# of rules processed * # of hours running)
Azure Storage
월간 저장소 비용을 추정하려면 다음 공식을 적용합니다. 가격은 성능 계층(프리미엄 > 표준), 중복성 옵션 및 액세스 계층(핫 > 클 > 보관)에 따라 달라지며 지역별로도 다를 수 있습니다.
(# or GBs of capacity) + (# of write operations) + (# of list/create operations) + (# of read operations) + (# of GBs retrieved) + (# of GBs written)
대역폭
이밖에 대역폭 비용을 추가해야 합니다. 인바운드 데이터 전송(즉 Azure 데이터 센터로 이동하는 데이터)은 무료이며, 아웃바운드 데이터 전송(즉 Azure 데이터 센터에서 외부로 이동하는 데이터)은 다음 공식을 사용하여 요금이 청구됩니다.
(# of GBs transferred outbound)
시작하려면 다음과 같은 사전 설정된 추정 중 하나를 사용하여 Azure 계산기를 엽니다.
각 섹션에서 지역을 이 아키텍처를 실행할 지역(예: 일본 서부)으로 설정하고 시나리오에 따라 적절히 조정합니다.
참고
Azure 계산기는 일부 언어에서 사용할 수 없습니다.