AWS, Azure, GCP, IDC 중 적절한 스케일 아웃 전략 선택하기
회사의 서비스가 커지면서 개발자들이 인프라나 애플리케이션의 확장을 고려하는 것은 해당 시점의 당연한 고민이라고 생각한다.
운 좋게도 크래프트 테크놀로지스라는 회사에서 최근 ML 인프라 확장에 관한 문제를 맞닥뜨리게 되었고, MLops 팀은 이 문제를 해결하기 위해 분주하게 움직이고 있다.
사실 9월 중순부터 지금까지 본래라면 일주일에 한 개 씩 업무 배웠던 것을 정리하면서 포스팅으로 올렸을텐데 그렇게하지 못했다.
그 이유가 바로 MLOps 인프라 구성에 관련한 이슈였고, 이 인프라를 구성하는 것에 있어 회사마다 명확한 답이 없다보니 팀에서 치열한 고민을 한 결과가 주별로 바뀌거나 수정되는 경우가 있었고, 글로 정리하기에는 명확하지 않는 내용들이 많았다.
그리고 이제 IDC 입주에 관한 사항들이 어느 정도 마무리가 되어 포스팅으로 정리하게 되었다.
그래서 오늘 글은 MLOps 인프라 운영에 있어서 AWS, Azure, GCP, IDC 를 도입하게 될 때의 특징과 장단점을 간략하게 정리해보고자 한다.
각 서비스를 도입하는데 있어서 가장 크게 고려했던 사항은 “비용”이다.
대기업이라 하더라도 비용 이슈는 업무를 진행하는데 있어 중요한 요소인데, 요즘같이 경기가 안좋은 시점에 비용 이슈는 더더욱 중요할 수 밖에 없다.
각 제품군별로 스펙에 있어서 월등하게 좋거나 현저하게 성능이 떨어지는 서비스는 존재하지 않았고, 이 때문에 도입 및 운영에 따른 경제적 비용과 인프라팀에서 해당 서비스군을 이용하면서 투입되게 될 인적 비용, 그리고 시간적 비용 등을 고려하는 부분 등이 포함되었다.
(성능이 월등하게 좋은 스펙을 쓰려면, 결국 돈을 많이 지불하면 된다!)
1. 초기 : IDC보다 먼저 클라우드 3사 조사하기
초기에는 어느 스타트업이든 보편적으로 사용하고 있는 클라우드 3사에 대한 도입에 대해 논의가 되었다.
현재 회사 전산실에서 온프레미스 서버로 GPU 서버를 운영하고 있지만, 반기 또는 분기 단위로 IFC 운영 사무국에서 전력 정비를 하는 경우가 있고, 회사에 UPS (무정전 전원 장치로, 쉽게 말해 비상 전력이라 보면 된다)가 구성되어 있지만 1 ~ 2시간 내외로 전력이 나가기 때문에 천재지변이 없다는 가정하에 반영구적으로 운영하는 것이 어려운 부분이 존재했다.
무엇보다 현재 사무실에서 공급가능한 전력 총량에 한계가 있다보니, 추가로 GPU 서버를 전산실에 도입하는 것은 불가능했다.
따라서
- 고가용성을 보장하면서
- MLOps 팀의 인프라 관리에 투입되는 소요량이 적고 (자잘한 하드웨어 이슈 등)
- 권한 관리가 무척 잘 나눠져 있는 (RBAC)
클라우드 인프라를 조사하기 시작했다.
여기서 국내의 클라우드 사업을 함께하고 있는 네이버 및 KT 클라우드는 제외되었는데, 회사가 홍콩 & 미국 오피스가 있는데 현재 해당 지역 리전 지원이 원활하지 않는 것으로 보였고, 아무래도 운영 노하우를 충분히 갖고 있는 업체들과 업무를 운영하는 것이 베스트이기 때문에 고려 사항에서 빠졌던 것 같다.
인프라 서버 스케일 아웃을 위해 이번에 알게 된 것이 무척 많았는데, 그 중 하나는 AWS가 점유율이 높은 만큼, 서비스를 정말 잘 운영하고 있다는 점이었다.
당연히 잘 운영하지, 운영을 못하겠냐? 싶겠지만, ML 인프라를 위해 GPU 서버를 도입하거나 넉넉한 스토리지 관리 등을 위해 Spot instance나 EBS를 사용하여 비용 절감 및 IOPS를 다양한 스펙으로 제공하고 있는 것을 볼 수 있었고, B2B로 AWS를 이용하고자 할 경우, 국내에서 이 클라우드 3사와 파트너십이 맺어져 있는 메가존을 통해서 견적을 받아 계약하게 되면 크레딧 및 금액 할인 등을 추가로 제공받는 것 등을 알 수 있었다.
생각해보면 2021년에 AWS 서버 장애 터지면서 배민 서버 장애가 발생한 적이 있었는데, 1년에 한 번 장애가 발생할까말까 한 정도로 운영이 되고 있는 것이기 때문에 인프라 관리를 얼마나 잘하고 있는지 알 수 있는 대목이다.
다만, 다양한 할인 정책을 제공하더라도 클라우드 시장에서 앞도적인 점유율 때문인지 기본 단가가 상당히 비쌌고, 대외비라 구체적인 견적은 얘기할 수 없지만 작은 스펙의 서버 여러대로 인프라를 구성하더라도 전체 비용은 AWS가 가장 비쌌다.
대략 견적에 필요한 구성은 Spot Instance로 GPU server over provisioning 관리 및 EKS를 사용하여 클러스터 구성 및 EBS 스토리지 사용을 생각했는데, GPU Spot instance의 경우, 높은 성능의 GPU 서버일 수록 사용 중인 서버가 반환될 확률이 높아져서, 결과적으로 비용 측면에서 배제되었다.
(GCP, Azure에서 Spot instance 반환 확률에 대해 얘기는 하지 않지만, 아마 AWS와 비슷하거나 높지 않을까 추측해본다)
그리고 후발주자인 GCP & Azure의 경우, 비용은 당연히 AWS보다 저렴했고, GCP의 경우, AWS 대비 훨씬 더 저렴했다.
AWS와 동일 스펙으로 인프라를 구성하면 대략 20% 정도 저렴하게 견적이 예상되었는데, 여기에 추가로 Cloud Storage나 Compute Engine (AWS EC2에 해당하는 인스턴스) 를 선택할 때, 사용할 자원을 개별적으로 선택하는 것이 가능했다.
예를 들어, AWS에서 vCPU 96개, Memory 512GB, EBS 1TB가 고정으로 선택해야한다면, GCP에서는 vCPU 96개, Memory 256GB, Cloud Storage 500GB 형태로 원하는 형태로 리소스 커스터마이징하여 결제가 가능하다는 뜻이다.
(아마 GCP가 20% 정도 저렴할 수 있었던 이유는 불필요하게 AWS에 포함되어 있던 스펙을 GCP에서는 필요한 만큼만 선택할 수 있었기 때문으로 볼 수도 있다.)
Azure는 GCP 와 AWS 사이의 값이었고, AWS 처럼 static하게 서버 스펙을 선택하되, 스펙이 높을 수록 다른 스펙들도 불필요하게 높지는 않아, AWS 대비 5 ~ 10% 정도 저렴했던 것으로 기억한다.
위 3사 모두 초기에는 A100 서버를 노드로 사용해서 리소스 분배하는 방식을 고려했는데, 해당 형태보다 A6000 서버로 분산 학습하는 형태가 이론적으로 성능이 높아 (Bench mark 성능 기준이다. 사용하는 업체에 따라 실제로 성능이 높다고 보장할 수는 없다.) 스펙에 포함시켰는데 일반 컴퓨팅 비용 (CPU, Memory)은 감당 가능한데 GPU 서버 비용은 1년 단위로 하면 아무리 작아도 여러대면 억단위로 발생하기 때문에 무척 고민을 많이 했다.
이 비용 이슈 때문에 Ali Cloud (중국 알리바바에서 운영하는 클라우드 자회사로, 한국에 서울 리전을 개소했다.), Union Cloud (사내에서 사용 중인 Flyte를 기반으로 AI 인프라 사업을 하고 있는 스타트업으로, 시애틀에 소재하고 있다.) 등에 대해서도 함께 논의되었지만 중국 업체에 대한 불신 및 비용 이슈 (Union Cloud 비용은 인프라 팀이 없는 스타트업이라면 인프라 관리를 제공하는 부분 때문에 감안할 수 있지만, 인프라팀이 있는데 계약을 해야한다면, 상당히 많이 비용이 높았다.)가 있어 해당 업체들도 마무리 단계에서 배제되었다.
2. 중기: IDC 방향 선회
클라우드 인프라에 대해서 스펙이 정해진 상태에서 약 한 달 정도 논의가 되었지만, 결과를 낼 수 없었다.
모든 문제가 GPU 서버 비용으로 봉착되었고 (사실상 이번 인프라 서버 스케일 아웃 논의가 진행되는 것도 사실상 GPU 서버 확충은 필요한데 건물 전력 이슈 때문에 진행되는 것이기 때문에) 클라우드라고 결론을 내리기 전에 IDC 입주에 대한 조사가 필요했다.
IDC,,, Internet Data Center의 줄임말로 이번 년도 카카오 서버를 관리하는 장소에 큰 불이 났던 SK C&C 업체도 국내 IDC 중 하나이고, 일종의 인터넷 부동산 같은 업체다.
국내에는 수도권 중심으로 IDC가 구성되어 있고, 자사 서버를 모두 IDC에 넣고 관리하는 형태로 운영하고 있다.
(IDC가 수도권에 몰려 있는 이유는 IDC를 운영 & 유지하기 위해 인력 보충이 쉽기 때문이라는 이유도 있다고 한다)
2022년 현재 기준 목동 KT IDC, 구로/가산 IDC, 평촌 U+ IDC, SK C&C 등이 유명한데 (춘천에 있는 네이버 데이터 센터 및 NHN은 상면 임대 사업은 — 상면임대 사업은 IDC 공간 임대를 의미한다 — 안한다고 한다) 해당 건물들이 직접 개별 기업들과 계약하는 것이 아니고, VIDC라고 해서 가상 IDC 사업자들이 IDC 공간을 업체별로 할당 받아서, IDC 입주가 필요한 업체들이 이 업체들과 계약하여 입주하는 형태다.
팀에서 IDC 입주 준비를 해봤거나 경험을 해본 인력은 없었기 때문에 결국 우리 팀은 스타트업스럽게, 회사와 가까이 있는 IDC 업체들에 전화를 돌리기 시작했다.
대략 10 곳 내외의 수도권 업체들에 연락해보니, 대체로 IDC 마다 Rack (서버를 관리하는 장비로, 이 Rack을 기준으로 전력과 비용이 부과되고 서버가 입주한다)에 GPU 서버를 사용하지 않는 일반 컴퓨팅 서버는 3.3kw 정도의 전력이 공급되며, 10 ~ 15A (암페어, 전류 측정 단위)의 전류가 흐른다고 한다.
다만, GPU 서버는 얘기가 다른데 예를 들어 Nvidia RTX 3090 GPU 8개가 들어가는 서버 1대의 경우, 측정해 본 것은 아니지만 최대 6.5kw 정도의 전력이 사용된다고 한다. 이 경우, 15 ~ 30A 사이의 전류가 흐르며 A100 & V100 등 Nvidia의 고급 컴퓨팅 서버들도 최대 전력이 6.5kw 정도를 요구한다.
IDC에서는 이러한 GPU 서버를 위해 Rack 당 최대 6.6 kw를 제공하고 있으며, 이러한 GPU 서버 한 대가 Rack에 들어가면 남은 공간이 아무리 많아도 추가 서버는 넣을 수 없는 것이 된다 (억지로 꾸겨 넣어서 전원을 공급하면, GPU 서버가 전력을 많이 잡아먹을 때 Rack에 설치되어 있는 전력 차단기가 전력을 차단해버린다고 한다. 조심하자)
비용은 천차만별인데, 업체별로 비용을 공개한 곳이 있고 없는 곳이 있어 쉽게 공개할 수는 없고, 다만 입주하는 Rack의 갯수와 서버 대수에 따라 네고가 가능한 업체들이 꽤 많이 있어서 입주하기 전에 충분히 많은 IDC 업체들과 연락하면서 프로모션이나 추가 할인 등을 잘 물어봐야한다.
한 가지, AI 운영을 위해 고성능 GPU를 소유하고 있는 업체라면 Nvidia와 파트너십을 맺고 있는 외국계 IDC 2개 업체를 서울에서 찾아볼 수 있다.
그런데 비용이 국내 업체보다 3배 정도 비싼데, 이는 6.6kw 이상의 전력을 사용할 수 있는 국내 IDC가 사실상 없는 것을 공략하여 1.1kw당 비용을 부과하는 형태로 운영되는 업체들이라, 엄청나게 큰 전력을 필요로하는 것이 아니라면 이 업체들을 일반 스타트업들이 찾아갈 이유는 없을 것 같다.
업체들과 쭉 연락하면서 추가 구매하여 입주시킬 GPU 서버 + IDC 사용료를 계산해보니, 상대적으로 Cloud 3사 보다 비용이 저렴한 부분을 확인할 수 있었고, 무엇보다 IDC 이용료 (전력 사용비 포함)를 제외한 유형 자산이 회사 회계상 남는 부분도 함께 있기 때문에 (AWS를 사용하면 비용이 천차 만별로 렌트비 형태로 장부에 기록되는 이슈도 있다고 얼핏 들었던 것 같다) 회사의 이익을 감안하는 방향으로 IDC 입주를 최종 결정하게 되었다.
현재 사무실의 네트워크 회선보다 조금 더 좋은 회선을 사용하고, 클러스터는 쿠버네티스로 운영이 될 것이기 때문에 신규 서버가 포함됨으로써 기존 서버 구성에 큰 영향을 주지 않을 것 같다는 부분 때문에 팀의 리소스가 IDC로 입주한다고 더 많이 소요될 것 같지는 않았다.
3. 결론: AI 인프라 스케일 아웃을 고려하는 스타트업을 위하여
아마 GPU 서버가 필요하지 않은 일반 스타트업이라면 주저 없이 클라우드 3사의 서비스를 사용해도 무방할 것이다.
일단 spot instance 자체가 GPU 인스턴스가 아니라면 꽤 활성화가 잘 되어 있는 것으로 알고 있고 (특히 AWS 기준으로 버지니아 리전에 spot instance를 사용하면 예약도 잘 되고, 잘 안끊긴다는 문서 설명을 봤던 것 같다) 서버 스펙이 향상되어도 GPU 서버보다는 비용적으로 덜 증가하기 때문이다.
(GPU 서버는 클라우드에서 견적 낼 때마다 가슴이 조마조마하다…)
그래서 AI 스타트업에서 인프라 운영 인력이 있다고 한다면, IDC 등에 입주하여 스케일 아웃 전략을 취하는 것이 재무적인 부분과 기술적인 부분을 함께 고려했을 때, 꽤 괜찮은 선택지라고 생각되며, 클라우드 3사를 통해 매우 큰 폭의 혜택 (할인을 포함해 크레딧 등)을 받는 것이 아니라면 IDC 외에는 선택의 여지가 없지 않을까 싶다.
다만 최근에 Stability AI에서 Stable Diffusion 모델 학습을 위해 AWS에서 컴퓨팅 리소스에 500억을 썼다고 테크 크런치에서 읽었는데, 이 정도로 모델에 대한 확고함과 비용적인 부담을 무시할 수 있다면 클라우드 3사 선택이 옳을 것이다.
4. 회고: 생의 첫 IDC 입주를 준비해보며…
주니어 개발자로 올해 1월부터 일을 하게 되면서 개발 업무 뿐만 아니라 하드웨어 및 전력 등 인프라와 관련한 일 등 다방면의 엔지니어링 업무를 해보게 되었는데, 솔직히 대기업 등에 근무했다면 이러한 인프라 경험은 해볼 수 없을 것이라 자신한다.
게다가 이렇게 견적 내보는 경험을 주니어 때 해볼 수 있는 것 자체가 너무나 소중한 기회라고 생각한다.
근 두 달 동안 코드는 생각보다 많이 못짰는데, 이제 슬슬 코드를 작성하는 엔지니어로 돌아갈 때가 되지 않았나 싶다.
IDC 방향으로 결정되고 나서, 지금은 IDC에 사용할 스토리지들의 성능 테스트를 진행하고 있는데 (Fio라는 benchmark 측정 툴이 있다) 모델 트레이닝 등을 할 때 Read/Write IO가 빈번하게 발생하면 네트워크 또는 디스크 성능 저하가 발생해서 스토리지에도 이와 관련한 시나리오를 몇 개 구성해서 테스트를 진행하고, 기록 중이다.
이것에 대한 내용은 또 다른 긴 글이 될 것이기에 또 다른 한 편의 글로 다시 작성해야겠다.
AI를 “제대로” 운영하는 것에는 안정적인 인프라가 필수라는 것에 대해 다시 한 번 절실히 깨닫게 된다.
Ryan