장애 발생시 정보를 보호할 수 있도록 서비스와 데이터를 중복시키려고 할 때, 인프라를 호스팅할 때 이 요구 사항에 따라 중복된 하드웨어 환경을 만들어야 한다. Azure에서는 ‘가용성 영역’을 통해 앱의 가용성을 높일 수 있다.
가용성 영역이란?
가용성 영역은 Azure 지역 내 물리적으로 분리된 데이터센터다.
각 가용성 영역은 독립된 전원, 냉각 및 네트워킹을 갖춘 하나 이상의 데이터 센터로 구성된다. 가용성 영역은 ‘격리 경계’로 설정되는데, 한 영역이 다운되어도 다른 영역은 계속 작동한다. 가용성 영역은 고속 프라이빗 광 네트워크를 통해 연결된다.
![]()
지원되는 Azure 지역
일부 Azure 지역에서는 가용성 영역이 지원되지 않는다. 다음 Azure 지역은 복원력을 보장할 수 있도록 세개 이상의 별도 영역을 가지고 있다.
- 미국 중부
- 미국 동부 2
- 미국 서부 2
- 서유럽
- 프랑스 중부
- 북유럽
- 동남 아시아
앱에서 가용성 영역 사용
가용성 영역을 사용하여 중요 업무용 어플리케이션을 실행할 수 있으며, 한 영역 내에 컴퓨팅, 스토리지, 네트워킹 및 데이터 리소스를 공동 배치하고 다른 영역에 복제하여 어플리케이션 아키텍처에 고가용성을 구현할 수 있다. 서비스를 중복시키고 영역 간에 데이터를 전송하는 비용이 발생할 수 있다.
가용성 영역은 주로 VM, 관리 디스크, 부하 분산 장치 및 SQL 데이터베이스에 주로 사용된다. 가용성 영역을 지원하는 Azure 서비스는 다음의 두 범주라 나뉜다.
- 영역 서비스 - 특정 영역에 리소스를 고정한다. (예. 가상 머신, 관리 디스크, IP주소)
- 영역 중복 서비스 - 플랫폼이 영역에서 자동으로 복제된다. (예 : 영역 중복 스토리지, SQL Database)
설명서를 통해 가용성 영역에 연결할 수 있는 아키텍처 요소를 확인하자.
Azure의 지역 쌍 이해
가용성 영역은 하나 이상의 데이터 센터를 사용하여 생성되며 단일 지역 내 최소 3개의 영역이 있다. 그러나 두 데이터 센터 모두 중단될 정도로 큰 영향을 줄 만큼 대규모 재해가 발생할 수도 있다. 이러한 이유로 Azure는 항상 “Azure 지역쌍”을 만든다.
Azure 지역 쌍이란?
각 Azure 지역은 300마일 이상 떨어져 있는 동일한 지리적 위치(예 : 미국, 유럽 또는 아시아) 내의 다른 Azure 지역과 항상 쌍을 이룬다. 이 방법을 통해 한 지리적 위치에서 가상 머신 스토리지와 같은 리소스를 복제할 수 있으며, ㅍ이렇게 하면 두 Azure 지역에 동시에 영향을 주는 자연재해, 내전, 정전 또는 물리적 네트워크 중단 등의 이벤트 때문에 서비스가 중단될 가능성을 줄일 수 있다.
예를 들어, 한 쌍의 지역이 자연 재해의 영향을 받은 경우 서비스는 해당 지역 쌍의 다른 지역으로 자동으로 장애 조치(failover) 된다.
Azure 지역 쌍의 예로는 미국 동부와 미국 서부 쌍, 동남 아시아와 동아시아 쌍이 있다.
![]()
Azure 지역 쌍은 직접 연결되고 Azure 지역 규모의 재해를 피할 수 있도록 충분히 멀리 떨어져 있기 때문에 안정적인 서비스 및 데이터 중복성을 제공하는 데 사용할 수 있다. 일부 서비스는 Azure 지역 쌍을 사용하여 자동 지역 중복 스토리지를 제공한다.
Azure 지역 쌍의 추가적인 이점은 아래와 같다.
- 광범위한 Azure 중단이 발생하는 경우 해당 지역 쌍에서 호스트되는 어플리케이션에 대해 하나 이상의 지역이 가능한 빨리 복원되도록 하기 위해 모든 쌍 중에서 하나의 지역이 우선하도록 지정된다.
- 계획된 Azure 업데이트는 가동 중지 및 어플리케이션 중단 위험을 최소화하기 위해 한번에 한 Azure 지역 쌍으로 롤아웃 된다.
- 데이터는 세금 및 법률 집행 관할 구역에서 사용될 수 있게 동일한 지리적 위치 내에 쌍으로 상주한다.
Azure의 SLA(서비스 수준 계약) 이해
마이크로소프트는 SLA(서비스 수준 계약) 라고 하는 공식문서가 있어 Azure에 적용된는 성능 표준을 정의하는 특정 조건을 캡처한다.
- SLA는 Azure고객에게 특정 성능 표준을 제공하겠다는 Microsoft의 약정을 설명한다.
- 개별 Azure 제품 및 서비스에 대한 SLA가 있다.
- SLA는 서비스 또는 제품이 관련 SLA 사양을 수행하지 못할 때 발생하는 일을 지정한다.
Azure 제품 및 서비스의 SLA
Azure 제품 및 서비스의 SLA는 세 가지 주요 특징을 갖고 있습니다.
- 성능 목표
- 작동 시간 및 연결 보증
- 서비스 크레딧
성능 목표
SLA는 Azure 제품 또는 서비스의 성능 목표를 정의합니다. SLA가 정의하는 성능 목표는 각 Azure 제품 및 서비스로 한정됩니다. 예를 들어 일부 Azure 서비스의 성능 목표는 작동 시간 보증 또는 연결률로 표현됩니다.
작동 시간 및 연결 보증
일반적인 SLA는 해당하는 각 Azure 제품 또는 서비스의 성능 목표 약정을 99.9%(“3개의 9”)에서 99.999%(“5개의 9”) 사이에서 지정합니다. 이러한 목표는 서비스의 작동 시간 또는 응답 시간 같은 성능 기준에 적용할 수 있습니다.
다음 표는 여러 시간 동안 다양한 SLA 수준의 잠재적인 누적 가동 중지 시간을 보여줍니다.
테이블 1SLA %주간 가동 중지 시간월간 가동 중지 시간연간 가동 중지 시간
| 99 | 1.68시간 | 7.2시간 | 3.65일 |
| 99.9 | 10.1분 | 43.2분 | 8.76시간 |
| 99.95 | 5분 | 21.6분 | 4.38시간 |
| 99.99 | 1.01분 | 4.32분 | 52.56분 |
| 99.999 | 6초 | 25.9초 | 5.26분 |
예를 들어 Azure Cosmos DB(Database) 서비스 SLA는 99.999% 작동 시간을 제공하며, 여기에는 DB 읽기 작업뿐만 아니라 DB 쓰기 작업에서도 10밀리초 미만의 짧은 대기 시간이 포함됩니다.
서비스 크레딧
또한 SLA는 Azure 제품 또는 서비스가 관련 SLA 사양을 수행하는 데 실패할 경우 Microsoft에서 어떻게 대응할 것인지를 설명합니다.
예를 들어 고객은 성능이 떨어지는 Azure 제품 또는 서비스에 대한 보상으로 Azure 가격 할인을 받을 수 있습니다. 아래 표에는 이 예에 대한 내용이 자세히 설명되어 있습니다.
아래 테이블의 첫 번째 열은 단일 인스턴스 Azure Virtual Machine의 월간 SLA 목표 백분율을 보여줍니다. 두 번째 열은 해당 월의실제가동 시간이 SLA에 지정된 목표보다 적은 경우에 받게 되는 서비스 크레딧 금액을 보여줍니다.
테이블 2월간 가동률서비스 크레딧 백분율
| < 99.9 | 10 |
| < 99 | 25 |
| < 95 | 100 |
서비스 간 SLA 구성
여러 서비스 제품 간에 SLA를 결합할 때 그 결과로 얻은 SLA를 복합 SLA라고 한다. 결과로 얻은 복합 SLA는 어플리케이션 아키텍처에 따라 더 높거나 낮은 가동 시간 값을 제공할 수 있다.
가동 중지 시간 계산
Azure SQL Database에서 쓰는 App Service 웹앱을 생각해보자. 이러한 Azure 서비스의 현재 SLA는 아래와 같다.
![]()
이 예에서는 두 서비스 중 하나가 중단되면 전체 어플리케이션이 중단된다. 일반적으로 각 서비스의 개별 확률 값은 독립적이다. 그러나 이 어플리케이션의 복합 SLA 값은 다음과 같다.
99.95 percent × 99.99 percent = 99.94 percent
즉, 결합된 실패 확률은 개별 SLA 값보다 높다. 여러 서비스를 사용하는 어플리케이션이 잠재적 오류 지점이 더 많다. 반면, 독립적인 대체 경로를 만들어서 복합 SLA를 높일 수 있다. 예를들어 SQL Database를 사용할 수 없으면 트랜잭션을 큐에 배치하여 나중에 처리할 수 있다.
![]()
이 디자인에서는 어플리케이션이 데이터베이스에 연결할 수 없는 경우에도 계속 사용할 수 있다. 그러나 데이터베이스와 큐가 동시에 중단되면 어플리케이션도 중단된다.
예상되는 동시 중단 시간 비율이 0.0001 x 0.001 이면 데이터베이스 또는 큐의 이 복합 경로에 대한 복합 SLA 는 아래와 같다.
1 | |
따라서 큐를 웹앱을 추가하면 총 복합 SLA는 다음과 같습니다.
1 | |
SLA 동작이 많이 개선되긴 하나, 이 방법을 사용하면 어플리케이션 로직이 복잡해진다. 큐 지원을 추가하기 위해 더 많은 비용을 지불해야 하고, 재시도 동작으로 인해 데이터 일관성 문제가 발생할 수 있다.
Azure의 앱 안정성 향상
SLA를 이용하여 Azure 솔루션이 클라이언트와 사용자의 비즈니스 요구 사항 및 수요를 얼마나 충족하는지 평가할 수 있다. 고유한 SLA를 만들어서 고객의 특정 Azure 어플리케이션에 맞는 성능 목표를 설정할 수 있다. 이 접근 방식을 어플리케이션 SLA라고 한다.
앱 요구 사항 이해
효율적이고 신뢰할 수 있는 Azure 솔루션을 빌드하려면 요구사항을 알아야 한다. 그 후 Azure 제품 및 서비스를 선택하고, 요구 사항에 따라 리소스를 프로비전 할 수 있다. 솔루션에 포함된 Azure 제품 및 서비스의 성능 목표를 정의하는 Azure SLA를 반드시 이해해야 한다. 달성 가능한 어플리케이션 SLA를 만드는 데 도움이 되기 때문이다.
복원력
복원력은 오류를 복구하여 계속 작동하는 시스템 기능이다. 오류를 방지하는 것이 아니라 가동 중지 또는 데이터 손실을 방지하는 바업ㅂ으로 오류에 대응한다. 복원력의 목표는 오류가 발생한 후 어플리케이션을 완전히 작동하는 상태로 되돌리는 것이다. 복원력의 두 가지 중요한 측변은 고가용성과 재해복구(?? fault tolerance)다.
아키텍처를 설계할 때 복원력을 설계해야 하며, FMA(실패 모드 분석)를 수행해야 한다. FMA의 목표는 가능한 실패 지점을 식별하고 어플리케이션이 이러한 오류에 대응하는 방식을 정의하는 것이다.
비용 및 복잡성과 고가용성
가용성이란 시스템이 정상적으로 작동하는 시간을 말한다. 가용성을 최대화하려면 가능한 서비스 오류를 방지하는 수단을 구현해야 한다. 그러나 예방 수단을 고안하는 것은 어렵고 비용이 많이 들 수 있고, 복잡한 솔루션으로 이어지는 경우가 많다.
솔루션의 복잡성이 증가할수록 점점 더 많은 서비스가 서로 종속된다. 따라서 상호 종속 관계인 서비스가 여러 개 있으면 솔루션의 오류 지점을 놓치게 될 수 있다.
대부분의 공급 기업은 가동 중지 시간을 최소화하여 Azure 솔루션의 가용성을 극대화하려고 한다. 그러나 가용성을 솦이면 솔루션의 비용과 복잡성도 함께 높아진다.
잠재적 가동 중단의 위험은 다양한 SLA 수준에서 누적되며, 복잡한 솔루션일수록 더 큰 가용성 문제에 직면할 수 있다. 따라서 고가용성이 요구 사항에서 차지하는 비중에 따라 어플리케이션 SLA에 추가되는 복잡성과 비용이 결정된다.
애플리케이션 SLA를 정의할 때 고려할 사항
- 애플리케이션 SLA에서 정의하는 성능 목표가 4개의 9(99.99%)인 경우 수동 작업으로 오류를 복구하면 SLA를 충족하기에 충분하지 않을 수 있습니다. Azure 솔루션이 자체적으로 진단하고 자체적으로 복구해야 합니다.
- 4개의 9보다 높은 SLA 성능 목표를 충족하도록 신속하게 오류에 대응하기는 쉽지 않습니다.
- 애플리케이션 SLA 성능 목표를 측정할 시간 범위를 신중하게 고민해야 합니다. 시간 범위가 짧을수록 허용 오차도 작습니다. 애플리케이션 SLA를 시간 단위 또는 일 단위 가동 시간으로 정의하는 경우 허용 오차가 작으면 성능 목표를 달성하지 못할 수 있다는 점을 이해해야 합니다.