SAP HANA: 메모리 오류가 미치는 영향에 대한 해결책
Eddie DeJesus
Product Manager, Google Cloud
Abdelkader Sellami
Technical Program Manager, Google Cloud
* 본 아티클의 원문은 2021년 9월 4일 Google Cloud 블로그(영문)에 게재되었습니다.
모든 클라우드 시스템은 고품질 하드웨어 인프라로 시작합니다. 하지만 하드웨어가 손상될 때도 있으며 이 경우 Google의 가장 중요한 목표는 고객과 고객의 클라우드 워크로드에 미치는 영향을 최소화하는 것입니다.
메모리 오류는 가장 흔한 하드웨어 장애 유형이며, 프로덕션 워크로드 및 시스템 안정성에 미치는 영향을 고려하면 가장 까다로운 오류 중 하나이기도 합니다. 이런 이유에서 Google Cloud가 메모리 오류의 영향을 최소화하기 위해 기울여온 노력을 공유하게 되어 기쁩니다. 클라우드에서 SAP HANA를 운영하는 비즈니스에게는 중대한 혁신이라는 점에서 Google Cloud는 이러한 혁신을 고객에게 선보이게 된 것을 자랑스럽게 생각합니다.
메모리 오류: 유래가 깊은 중대한 문제
메모리 오류는 가장 먼저 처리해야 할 문제입니다. 자주 발생하기 때문에 우선순위가 높습니다. 게다가 메모리 오류가 발생하면 중단으로 인해 고객과 비즈니스에 중대한 영향을 미칠 수 있습니다.
2009년 Google Cloud에서는 메모리 안전성에 대한 최초의 주요 연구 결과를 발표했습니다. 연구 결과에 따르면 프로덕션 시스템에 설치된 DIMM 모듈에서 발생하는 평균 오류율이 연간 8%가 넘었습니다. DDR RAM의 세대가 거듭될수록 더 작은 패키지에 더 많은 용량이 탑재된다는 점을 고려하면 메모리 하드웨어의 신뢰성이 점점 낮아졌다고 봐도 무방한 것입니다.
메모리 오류가 미치는 영향: 상황이 악화될 수는 있어도 개선될 가능성은 미미함
시스템에서 DIMM 모듈의 불량 세그먼트를 감지하면 어떤 일이 일어날까요? 메모리 오류로 인한 데이터 손실 또는 손상은 흔히 발생하지 않으며 일부 오류는 바로잡을 수 있습니다. 하지만 그렇지 않은 오류도 있어 치명적인 시스템 오류를 야기할 수 있습니다.
최신 CPU는 오류 정정 메모리 기능을 지원하며 오류 정정 코드(ECC)를 통해 단순한 오류를 정정하는 데 탁월한 성능을 발휘합니다. 문제는 호스트 시스템에서 실행되는 소프트웨어(예: 하이퍼바이저, 가상 머신, 운영체제, 데이터베이스 또는 애플리케이션)의 대부분에서 정정할 수 없는 메모리 오류가 발생하는 즉시 장애를 일으킨다는 점입니다. 클라우드 환경에서는 이러한 종류의 장애로 인해 캐시된 데이터뿐 아니라 로컬 SSD에 저장된 데이터까지 손상될 수 있습니다. 장애가 발생한 애플리케이션은 복구되지만 복구 프로세스에서 몇 분간의 다운타임이 발생합니다. 데이터가 많을수록 이 프로세스에 오랜 시간이 걸립니다.
다운타임이 불편함을 초래하는 정도에 그칠 수도 있지만 막대한 영향을 미치는 경우도 많습니다. 비즈니스와 관련해 중요도가 높은 SAP 애플리케이션 및 인메모리 HANA 데이터베이스를 실행하는 Google Cloud 고객의 경우 매출 손실과 기타 직접적인 영향 측면에서 다운타임 비용이 분당 10,000달러를 초과한다고 추산할 수 있습니다. 많은 HANA 데이터베이스가 테라바이트 규모의 메모리에 로드되며 장애가 발생한 후 모든 작업을 재시작하고 정상 상태로 돌아오기까지 1시간 이상 걸릴 수 있습니다. SAP HANA의 경우 다운타임이 최대 10분인 빠른 복구가 가능하려면 상시 프로비저닝되는 중복 복제본이 필요하므로 비용이 두 배가 됩니다.
또한 통계적으로, HANA 인스턴스가 호스트의 거의 모든 시스템 메모리를 점유하는 경우 애플리케이션이 메모리 오류를 발생시킬 가능성이 높습니다. 이 부분이 왜 문제가 되는지는 자명합니다.
'피해 이웃' VM 문제
프로덕션 애플리케이션에서 메모리 오류가 발생하는 경우 고려해야 할 마지막 문제가 있습니다. 바로 '피해 이웃'이라고 부르는 문제입니다.
어떤 클라우드에서든 단일 물리적 호스트는 수십 개의 VM을 실행할 수 있는 멀티 테넌트 환경이며 이러한 VM은 수십 명의 고객이 소유하고 있을 가능성이 있습니다. 메모리 오류는 실질적으로 불량 섹션을 사용하는 VM에만 장애를 일으키는 것이 아니라 시스템에서 실행 중인 모든 VM에 장애를 일으킬 수 있습니다. 이는 호스트 시스템에서 발생하는 메모리 오류에 대한 일반적인 VM의 반응이며, 이러한 문제는 오늘날 메모리 손상을 방지하는 시중의 모든 VM 아키텍처에서 발생합니다.
전체적으로 물리적 서버의 메모리 오류로 인해 발생하는 VM 장애 중 '피해 이웃'의 영향으로 발생하는 비율은 90%가 넘습니다. 흔히 일어나는 문제치고는 영향이 막대한 것입니다.
메모리 오류가 미치는 영향에 대한 실질적인 해결책
Google Cloud에서 이 문제의 관리를 중시하는 이유를 아실 것입니다. Google Cloud에서는 불가피하게 발생하는 장애가 있다는 점을 인정하면서도 문제를 해결할 수 있는 다른 방법을 개발했습니다. Google Cloud에는 고객이 예기치 못한 다운타임을 최소화하는 데 도움이 되는 라이브 마이그레이션 같은 차별화되고 유용한 도구가 마련되어 있습니다. 이러한 도구를 CPU(Intel 제공)와 SAP HANA를 비롯한 특정 애플리케이션에 내장된 오류 처리 기능을 활용하는 작업과 통합함으로써 메모리 오류와 관련된 다운타임 및 중단을 크게 감소시키는 솔루션을 개발했습니다. 고객이 문제가 있었음을 인지하지 못하는 경우도 많을 정도입니다.
Google Cloud 솔루션: 메모리 포이즈닝 복구
폭넓은 관점에서 Google Cloud의 솔루션을 메모리 포이즈닝 복구(MPR)라고 부릅니다. 이는 기존 Google Cloud의 일부 기능, 새로운 기능, 중요한 제3자 기능을 CPU(Intel) 및 애플리케이션(SAP HANA) 수준에서 결합합니다. MPR은 크게 두 가지 주요 프로세스로 나눌 수 있습니다.
메모리 오류 격리
1단계: 메모리 오류에 보다 안정적으로 대응하도록 VM 기술을 강화했습니다. Google Cloud에서는 시스템에서 비롯되는 메모리 오류를 가로채 분석합니다. 그런 다음, 오류를 정정할 수 없는 것으로 확인된 메모리 DIMM 리전에 '중독됨' 플래그를 지정합니다.
2단계: '중독됨' 리전과 그 영향을 받는 VM을 지속적으로 추적하여 중독된 영역이 데이터 무결성에 영향을 미치지 못하도록 만드는 프로세스를 시작합니다.
메모리 오류 복구
3단계: 애플리케이션 관련 메모리 오류 처리를 애플리케이션에서 실행할 수 있는 방식으로 게스트 OS 및 MCE 인식 애플리케이션에 메모리 오류가 기록되었음을 알립니다.
4단계: 이와 동시에 Google Cloud 라이브 마이그레이션과 통신하여 게스트 VM을 영향을 받는 호스트로부터 옮깁니다. 이를 통해 고객은 정정할 수 없는 오류가 더 많이 발생할 가능성을 줄이고 추가 다운타임을 방지하는 정상 호스트에서 실행할 수 있습니다.
다음은 이러한 모든 작업이 이루어지는 과정을 간단히 나타낸 그림입니다.
MPR이 고객 만족도를 높이는 방법
메모리 오류 시나리오에 관련된 다른 Google Cloud 고객 그룹도 살펴보면서 장애 발생 후 고객이 더 만족스러운 결과를 얻을 수 있도록 지원하는 방법에 대해 알아보겠습니다. 먼저 실제로 메모리 오류를 발생시킨 VM 및 애플리케이션을 실행하는 고객부터 살펴보겠습니다.
고객 그룹: 메모리 오류의 직접적인 영향을 받는 VM에서 빠른 재시작이 사용 설정된 MCE 인식 SAP HANA.고객 그룹: 메모리 오류의 직접적인 영향을 받는 VM에서 MCE를 인식하지 않는 다른 애플리케이션을 실행하는 고객
다음으로, '피해 이웃' 그룹은 호스트 시스템에 문제가 있었다는 사실을 인지하지 못할 수도 있습니다. Google Cloud 라이브 마이그레이션에서 이들을 새 호스트로 즉시 자동으로 옮겨 장애 발생에서 재시작에 이르는 시나리오를 방지합니다.
고객 그룹: 메모리 오류의 직접적인 영향을 받지 않는 VM에서 다른 애플리케이션을 실행하는 고객
MPR을 활용하기 위한 간단한 단계
MPR 기능은 2021년 4분기에 Google Cloud 메모리 최적화 Compute Engine 2세대 인스턴스에서 제공될 예정입니다. 그때까지 몇 개월간 Google Cloud는 이 기능을 계속 배포하여 인스턴스를 추가하고 MCE 인식 아키텍처를 채택하는 애플리케이션을 지원할 새로운 방법을 모색할 것입니다.
'피해 이웃' 카테고리에 속하는 대부분의 고객은 큰 수고를 들이지 않고도 이점을 누릴 수 있습니다. 라이브 마이그레이션 기능을 해당 MCE 신호 인식 기능과 결합함으로써 먼저 경고를 듣고 게스트 VM에서 문제가 발생하기 전에 신속하게 마이그레이션 프로세스를 시작할 수 있습니다. 고객은 안전하게 새 호스트로 이동하고 애플리케이션을 계속 실행할 수 있습니다.
HANA를 실행하는 SAP 고객에게 MPR은 손실 보호에 중요한 역할을 합니다. HANA 환경에서 예기치 못한 다운타임이 발생하면 큰 비용을 초래할 수 있고, 중대한 장애로부터 복구하는 과정이 매우 오래 걸릴 수 있으며, 비즈니스 중단으로 인해 기업이 큰 손해를 입을 수 있습니다. MPR 덕분에 이러한 비용과 우려가 거의 사라질 수 있으며 한 시간 이상 소요될 수 있는 다운타임이 빠른 재시작을 통해 초 단위로 단축됩니다.
하지만 SAP 고객이 이러한 이점을 누리려면 중요한 첫 번째 단계를 거쳐야 합니다. 빠른 재시작 기능은 MPR 솔루션에서 중요한 부분이며 기본적으로 사용 설정되어 있지 않습니다. SAP HANA 인스턴스에 빠른 재시작을 설정하려면 몇 가지 구성 설정을 변경해야 하는데, 이 프로세스는 빠르고 간단하며 위험이 뒤따르지 않습니다.
마지막으로, 워크로드를 SAP나 Google Cloud에서 실행하지 않는 경우 기업의 규모와 업종을 막론하고 영향을 끼치는 하드웨어 안정성 문제를 완화하고 클라우드 실행의 이점을 위해 워크로드를 실행하는 것이 좋습니다. 이미 Google Cloud 고객이 업타임을 향상하고 위험을 줄이는 데 많은 도움을 주고 있는 라이브 마이그레이션과 같은 도구의 가치를 고려해 보세요.
하드웨어 장애는 으레 발생하는 일이며 앞으로도 그럴 것입니다. 하지만 Google에서는 메모리 장애가 발생할 때 일반적으로 일어나는 문제를 방지하는 것이 얼마나 가치 있는 일인지 증명하고 있습니다. 현재 이렇게 까다로운 문제에 대한 실질적인 솔루션을 보유하고 있는 것은 Google Cloud뿐입니다.
SAP HANA의 빠른 재시작, 라이브 마이그레이션, SAP 환경을 지원하는 기타 주요 Google Cloud 기능에 대해 자세히 알아보세요.