AWS 기술 블로그
HPC 클러스터를 구성하는 핵심요소, AWS EC2 인스턴스 소개 2부: EC2 인스턴스가 고성능을 보장하는 이유 및 EC2 인스턴스의 구매 옵션
지난 블로그에서는 AWS 클라우드에서 HPC 클러스터를 구성하기 위해 필요한 EC2 인스턴스의 선택 방법에 대해 설명하였습니다. 이번 블로그에서는 HPC 클러스터의 고성능을 보장해주는 AWS 나이트로 시스템 및 클러스터 배치 그룹, 마지막으로 EC2 인스턴스의 구매 옵션에 대해 설명하도록 합니다.
고성능을 보장하는 AWS의 가상화 시스템 Nitro
AWS의 EC2 인스턴스는 일부 베어 메탈(bare metal) 형태로 제공되는 물리서버를 제외하고, 기본적으로 물리 서버에 하이퍼바이저(hypervisor)와 같은 가상화 기술을 적용한 가상 서버입니다. 성능 관점에서, 일반적으로 가상 서버는 이러한 가상화 솔루션의 오버헤드로 인해 필연적으로 물리 서버에 비해 성능이 열등합니다. 따라서 고성능이 필수적인 HPC 환경에, 클라우드를 적용하는 것에 대해 우려가 있을 수 있습니다. AWS에서도 초기에는 Xen 하이퍼바이저 기반의 가상화 솔루션을 적용하여 그림1과 같이 단일 서버내의 하이퍼바이저에서 컴퓨팅 가상화 뿐만 아니라 네트워크, EBS 스토리지, 모니터링, 보안 등의 모든 기능에 대한 가상화 업무를 담당해 왔습니다.
<그림 1. AWS에서 제공했던 초기 가상화 기법>
AWS는 이러한 가상화 기술의 성능 제약을 극복하기 위하여 새로운 가상화 기술인 AWS 나이트로(nitro) 시스템을 2017년도에 도입하였습니다. 나이트로 시스템의 등장으로 인해 기존에 가상화 레이어인 하이퍼바이저에서 전담하던 네트워크, EBS 스토리지, 모니터링, 보안 등의 기능들을 그림2와 같이 별도의 나이트로 시스템을 통해 오프로딩 시킴으로써, 베어 메탈 서버에 준하는 성능을 제공할 수 있게 되었습니다. 즉 기존에 하이퍼바이저를 통해 소프트웨어적으로 처리하던 가상화 작업들을 별도의 하드웨어를 통해 오프로딩 시킴으로써 성능을 높일 수 있게 되었습니다. 예를 들어, 제가 다른 블로그에서 언급한 AWS의 고속 네트워크 기술인 SRD(EFA) 역시 AWS의 하이퍼바이저 기술인 나이트로 카드에 기반하여 고성능을 제공하고 있습니다.
<그림 2. AWS에서 제공하는 가상화 기술인 나이트로 시스템>
그렇다면 이러한 나이트로 시스템이 탑재된 EC2 인스턴스를 기반으로 HPC 클러스터를 구성한다면, 실질적으로 어느 정도의 성능을 기대할 수 있는지 알아보도록 하겠습니다. 그림3은, 가상 서버인 c5n.18xlarge 인스턴스와 베어 메탈 EC2 인스턴스인 c5n.metal 인스턴스 16개로 각각 클러스터를 구성하여 1) OpenFOAM, 2) GROMACS, 3) WRF(Weather Research & Forecasting Model), 4) HPL(High Performance Linpack)의 네가지 워크로드들에 대한 테스트 진행 결과를 보여주고 있습니다. 그림3에서 볼 수 있듯이, 가상 서버의 성능이 물리 서버와 거의 동일함을 확인할 수 있습니다.
<그림 3. c5n 인스턴스를 기준으로 한, 물리 서버와 가상 서버의 성능 비교>
Tightly workload에 필수적인 클러스터 배치 그룹(cluster placement groups) 설정
CFD(Computational Fluid Dynamics)와 같은 tightly coupled 워크로드에서는 클러스터를 구성하는 노드간 고속 통신이 필수입니다. 따라서 EFA와 같은 고속 네트워크 기술이 필수입니다. 여기에 더해, 노드간 초 저지연성을 보장하기 위해 AWS 클라우드 환경에서는 클러스터 배치 그룹 이라는 기능을 설정할 수 있습니다.
EFA가 네트워크 인터페이스 수준에서 고성능을 보장한다면, 클러스터 배치 그룹은 EC2 인스턴스의 배치(placement) 수준에서 고성능을 보장하는 기법입니다. 노드간 EFA를 구성한다 하더라도 클러스터를 구성하는 EC2 인스턴스들이 물리적으로 멀리 떨어져 있다면, 지연성에 민감한 tightly coupled 워크로드에서는 영향을 받을 수 밖에 없습니다. 따라서 EFA와 클러스터 배치 그룹을 같이 사용함으로써 네트워크 성능을 극대화 시킬 수 있습니다.
<그림 4. 클러스터 배치 그룹의 기본 개념>
클러스터 배치 그룹의 주요 특징은 다음과 같습니다:
- 물리적 근접성: 클러스터 구성 시, EC2 인스턴스들은 동일한 가용 영역(Availability Zone) 내에서 가능한 한 가깝게 배치되어 낮은 지연 시간과 높은 네트워크 대역폭을 제공합니다.
- 낮은 지연 시간: 클러스터 배치 그룹은 EC2 인스턴스들 사이의 낮은 지연 시간 및 높은 성능을 요구하는 애플리케이션에 적합합니다.
- 가용 영역 제한: EC2 클러스터 배치 그룹은 단일 가용 영역으로 제한되며, 여러 가용 영역에 걸쳐 있지 않습니다.
클러스터 배치 그룹 기능을 통해 최적의 성능을 확보하기 위해서는 가급적 동일한 인스턴스 유형의 사용을 권장하며, 선택한 EC2 인스턴스가 클러스터 배치 그룹 기능을 제공해야 합니다. 또한 단일 가용영역(AZ)에서만 구성되기 때문에 가용성 측면에서는 취약할 수 밖에 없는 제약사항이 존재합니다.
클러스터 배치 그룹을 설정하는 방법은 여러 옵션들이 존재하지만, HPC 클러스터 구성에 한정할 경우 HPC 클러스터 관리 서비스인 AWS 패러랠클러스터(ParallelCluster)를 사용하는 것이 가장 손쉬운 방법입니다. 그림5는 AWS 패러랠클러스터를 사용하여, c5n.18xlarge 인스턴스로 구성된 클러스터에 클러스터 배치 그룹을 코드 형태로 활성화(true)한 예시입니다.
<그림 5. AWS 패러랠클러스터를 이용한 클러스터 배치 그룹 설정 예시>
따라서 여러분들께서CFD, FEA(Finite Element Analysis), WRF 등과 같은 tightly coupled 워크로드를 위하여 AWS 클라우드 환경에서 클러스터를 구성하고자 할 경우, 클러스터 배치 그룹의 사용은 필수라 할 수 있습니다.
EC2 인스턴스 구입(선택) 옵션
AWS에서 EC2 인스턴스를 구입할 수 있는 옵션은 매우 다양합니다. 구매 옵션에는 다음과 같이 1) 온디맨드(on-demand) 방식, 2) 사전 예약 방식, 3) 스팟(spot) 방식의 3가지 방식이 존재합니다.
우선 온디맨드 방식은, 글자 그대로 내가 필요 할 때마다 EC2 인스턴스를 선택하여 사용하는 방식입니다. 이 구매 옵션은 사용자가 원할 때 언제든지 사용할 수 있다는 장점이 있으나, 가격은 위의 3가지 옵션 중 가장 비싼 방식입니다. 제품 개발 사이클에 따라 엔지니어링 시뮬레이션에 대한 업무 변동이 심한 경우, 온디맨드 사용을 추천합니다.
두번째 사전 예약 방식은, 1년 또는 3년 기간 동안 사전에 EC2 인스턴스를 예약하여 사용하는 방법입니다. 엔지니어링 시뮬레이션 워크로드가 매년 어느 정도 일정할 경우, 이 방식을 통해 EC2 인스턴스를 구매한다면 비용을 온디맨드 방식 대비 약 30~70% 절감할 수 있습니다. 사전 예약 방식은 다시 1) RI(Reserved Instances) 방식과 절감형 플랜(Savings Plan)으로 구분할 수 있습니다. 세부적인 내용에 대해서는 AWS의 담당 어카운트팀을 컨택하시기 바랍니다.
마지막으로 스팟 방식은 AWS 데이터센터 내의 유휴 EC2 인스턴스를 경매 방식을 통해 크게 할인된 가격으로 제공하는 방식을 의미합니다. 가격은 수요와 공급에 따라 실시간으로 변경됩니다. 이 방식을 사용하면 앞선 두가지 방식 대비 비용을 가장 크게 절감할 수 있다는 장점이 존재하나, 사용 중에 인스턴스가 중단될 수 있다는 단점이 존재합니다.
비용 효율적으로 대규모 클러스터 구성이 가능한 스팟 인스턴스
앞서 EC2 인스턴스 구입 옵션 중에 하나인 스팟 인스턴스에 대해 소개하였습니다. 클라우드 환경에서는 기존의 온프레미스 환경과는 달리, 대량의 컴퓨팅 파워를 투입하여 매우 빠른 시간내에 시뮬레이션을 완료하는 것이 가능합니다. 이러한 특징으로 인해 AWS 클라우드로 자사의 HPC 인프라를 마이그레이션을 수행한다면, 가장 큰 AWS 클라우드의 효용성을 기대할 수 있는 영역입니다.
단 획기적으로 시뮬레이션 시간을 단축시킬 수 있으나, 반대 급부로 대량의 EC2 인스턴스 투입으로 인해 컴퓨팅 비용이 증가할 수 있습니다. 이 때 스팟 방식으로 클러스터를 구성하게 되면, EC2 인스턴스 비용을 타입에 따라 최대 90%까지 절약할 수 있습니다. 따라서 AWS 클라우드 환경에서 HPC 클러스터를 구성할 경우, 특별한 예외적인 사항이 아니라면 일반적으로 스팟 옵션을 추천 드립니다.
스팟 인스턴스는 AWS 데이터센터 내의 EC2 인스턴스 여분 용량에 대한 사용률을 극대화한 방식이기 때문에 경우에 따라 중단될 수 있습니다. 단, 스팟 인스턴스가 중단 될 경우 2분전 중단 공지가 발행됩니다. 따라서 이러한 이유 때문에 스팟 인스턴스 사용을 꺼려할 수 있습니다. 그러나 AWS 통계에 따르면, 95%의 시뮬레이션 잡(job)이 2분 알림 전에 완료되는 것으로 알려져 있기 때문에 크게 걱정할 필요는 없습니다. 또한 대부분의 상용 ISV 솔버의 경우, 체크포인트를 제공하기 때문에 중단에 따른 시뮬레이션 리스크를 최소화 할 수 있습니다.
다만 워크로드에 따라 스팟 옵션이 항상 최선의 선택이 아닐 수 있습니다. 따라서 스팟 인스턴스를 선택할 때는 중단에 대한 애플리케이션의 허용 수준과 비용 절감 목표를 비교해야 합니다. 워크로드에 어떤 방식의 EC2 구매 옵션이 적합한지는, AWS의 전문가 또는 지난 블로그에서 소개해 드린 전문 MSP와의 상담을 통해 결정드릴 것을 추천 드립니다.
참고로 지난 블로그에서 소개한 HPC 전용 인스턴스의 경우, 스팟 옵션을 제공하지 않습니다. 이미 온디맨드 옵션을 통해, 매우 낮은 코어당 가격으로 컴퓨팅 리소스를 제공하고 있기 때문입니다.
스팟 옵션 역시, 클러스터 배치 그룹과 동일하게 그림6에서와 같이 AWS 패러랠클러스터에서 설정 가능합니다.
<그림 6. AWS 패러랠클러스터를 이용한 스팟 옵션 설정 예시>
맺음말
지금까지 ‘HPC 클러스터를 구성하는 핵심요소, AWS EC2 인스턴스 소개’라는 주제로 2회에 걸쳐 블로그를 작성하였습니다.
특히 이번 블로그에서는 EC2 인스턴스의 고성능을 보장해주는 1) AWS의 가상화 시스템인 나이트로 시스템, 2) 클러스터 배치 그룹, 그리고 3) EC2 인스턴스의 구매 옵션에 대해 소개하였습니다. 이 블로그를 통해 여러분들께서는 AWS 클라우드에서도 물리 서버와 거의 대등한 성능을 확보할 수 있으며, 스팟 옵션을 통해 대량의 EC2 인스턴스를 매우 낮은 비용으로 사용할 수 있다는 점을 기억해 주시면 감사하겠습니다.
많은 고객들이 온프레미스 환경의 서버 대비, AWS 클라우드 환경에서는 어느 정도 비용 절감이 가능한지 초기 미팅부터 문의하시는 경우가 많습니다. 그러나 고객사 사용 환경 및 워크로드 패턴과 같은 여러 변수가 존재하기 때문에, 클라우드에서 어느 정도 비용 절감이 가능할지는 알 수 없습니다. 비용 예측과 관련해서 제가 추천드리는 가장 좋은 방법은, 작게 라도 PoC 진행을 시도해 보는 것입니다. 코드 기반으로 HPC 클러스터 구성이 가능하기 때문에, 실패하더라도 코드를 삭제하면 그만입니다.
또한 클라우드로 마이그레이션을 검토할 경우, 대부분의 고객분들이 비용 관점에서 접근하는 경우가 많으나 지난 블로그에서 언급드린 것처럼 AWS 클라우드의 HPC 환경은 많은 장점들을 내포하고 있습니다. 온프레미스 환경에서 비용 이외에도 여러가지 pain point가 있을 것으로 예상됩니다. 따라서 사내에서 HPC와 관련된 문제점들의 우선 순위를 살펴보고, 이러한 문제점들을 AWS 클라우드 환경에서 극복 가능한지 PoC를 통해 확인하고, 마이그레이션에 대한 의사 결정을 하는 것이 무엇보다 중요하다고 할 수 있습니다.