목차
Ⅰ. 서론
1. 클라우드 도입 필요성
Ⅱ. 본론
1. IaaS, PaaS, K8S란
2. AWS, Azure, Google의 서비스
가. AWS의 IaaS, PaaS 특징, 장단점
나. Azure의 IaaS, PaaS 특징, 장단점
다. Google의 IaaS, PaaS 특징, 장단점
3. 클라우드 서비스 도입을 위한 사업자 선정
Ⅲ. 결론
Ⅰ. 서론
1. 클라우드 도입 필요성
인터넷 통신망 어딘가에서 구름(Cloud)에 싸여 보이지 않는 컴퓨팅 자원(CPU, 메모리, 디스크 등)을 원하는 대로 가져다 쓸 수 있다는 뜻인 클라우드[1]는 해가 지날수록 시장 규모가 성장하고 있다. 과학기술정보통신부에 따르면 국내 ‘퍼블릭클라우드’ 시장 규모는 2017년부터 올해까지 연평균 20.5%씩 증가해 작년 2조 9200억원, 올해 3조 4400억원에 달할 전망이라고 보고했다. 클라우드가 이렇게 뜨고 있는 이유는 무엇일까? 클라우드의 여러 가지 장점들 덕분이기도하지만, 클라우드 시장을 가속화시킨 건 코로나19 이후 기업과 정부 등 디지털 전환이 증가하고 비대면 서비스가 늘면서 영향을 받은 것이라고 [2]전자신문은 보고하였다. 즉, 빠르게 변하고 불확실한 시장의 변화에 따라서 기업은 이를 따라가기 위해 클라우드를 도입하는 추세인 것이다.
본 블로그는 신규 서비스를 런칭하는 소규모 스타트업 창업자의 입장에서, 클라우드 서비스를 도입한다면 주요 사업자 중 어떤 서비스를 선택할 것인지 결정한다. 결정하기 위해 주요 사업자인 AWS, Azure, Google의 IaaS, PaaS에 대해 알아보고, 클라우드 서비스 특징과 장단점을 비교해 알아본다.
그런데 클라우드 사업자를 선정하기 전에, 스타트업 창업자의 입장에서 왜 On-Premise가 아닌, 클라우드 서비스를 도입하는 것이 나은지부터 알아본다. 그 이유는 다음과 같다. 스타트업은 개발자들이 익숙한 환경에서 빠르게 속도를 내는 것이 중요하기 때문인 점, 서비스가 빠르게 성장하기도 하고 어떤 경우 중단될 수 있어, 클라우드의 유연성이 필요한 점 때문이라고 에잇퍼센트의 이호성 CTO는 언급했다. 반면, On-premise의 경우 서비스 종료에 대응하기도 어렵고 장비를 구매하는데 시간이 오래 걸린다는 단점이 있다고 말했다.[3] 즉, 클라우드의 초기 선투자 비용이 없고, 운영 비용 절감, 탄력적인 운영 및 확장, 속도 및 민첩성, 비즈니스에만 집중 가능한 점, 글로벌 확장가능하다는 장점들이 스타트업의 특성과 맞아 떨어지기 때문에 대부분의 스타트업들이 On-Premise가 아니라 클라우드를 선택하는 것이다.
Ⅱ. 본론
1. IaaS, PaaS, K8S란
각 사업자들의 IaaS, PaaS를 알아보기전 IasS, PaaS, K8S가 무엇인지에 대해 알아본다. 먼저, IaaS란 Infrastructure as a Service의 약자로, 네트워크, 스토리지, 서버를 가상화 하여 이용자들이 필요한 만큼 사용 가능하게 만든 서비스이다. 이는 사용자가 데이터 센터에 필요한 물리적 인프라를 구입하고 관리해야 하는 복잡함과 비용을 감소시켜 준다. 또한, 필요에 따라 빠르게 확장 가능하고, 다양한 사용자가 하나의 물리 서버를 이용해 유지보수 비용을 감소한다는 점, 서버가 다운되었을 때 다른 서버로 즉시 이전되어 다운 타임을 최소화 한다는 점이 장점이다. 단점으로는 운영체제, 미들웨어 보안, 유지 등은 클라우드를 이용하는 소비자가 해결해야 한다는 점이 있다.
그렇다면 PaaS란 무엇일까? PaaS란 Platform as a Service의 약자로, IaaS 서비스로 제공되는 인프라 위에 사용자가 원하는 서비스를 개발할 수 있는 운영체제, 미들웨어, 애플리케이션 실행 환경 등을 제공하는 서비스이다. 이런 서비스를 제공하기 때문에 PaaS사용자들은 적합한 환경, 개발 자체에 집중할 수 있고 빠르게 서비스가 가능하다. 즉, PaaS의 장점은 IaaS의 장점에 추가적으로 코딩 시간 단축, 지리적으로 분산된 개발 팀 지원, 어플리케이션 수명 주기를 효율적으로 관리한다는 장점이 있다. 하지만 PaaS의 단점으로는 애플리케이션이 플랫폼에 종속되어 개발되기 때문에 다른 플랫폼으로 이동이 어렵다는 점이 있다. 그렇다면 PaaS는 어떻게 만들어지는 것일까? PaaS는 K8S, 즉 Kubernetes를 기반으로 만들어진다. 다음으로 쿠버네티스에 대해 알아본다.
K8S은 K와 S사이에 있는 8글자를 나타내는 약식 표기이다. 쿠버네티스는 컨테이너화된 애플리케이션을 자동 배포, 스케일링 및 관리해주는 오픈소스 시스템이다.[4] 여기서 컨테이너란, 프로세스 격리를 기반으로 하는 애플리케이션 전달 메커니즘을 의미한다. 리눅스 컨테이너를 기반으로 하여 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램은 도커가 대표적이고, 쿠버네티스는 도커를 관리하는 툴이다. 쿠버네티스가 여러 개의 컨테이너를 서비스 단위로 관리하는 것이다. 즉, 쿠버네티스는 컨테이너 오케스트레이션이다. 컨테이너는 수가 많아지게 되면 관리와 운영이 어려워지기 때문에 쿠버네티스를 이용해 다수의 컨테이너로 어플리케이션을 구성하는 모든 과정을 관리하는 것이다. 아래에서 설명할 클라우드 사업자들의 PaaS서비스들은 쿠버네티스를 기반으로 만들어졌기 때문에 쿠버네티스에 대해 이해하는 것이 중요하다. 이제 본격적으로 각 사업자별 서비스에 대해 알아본다.
2. AWS, Azure, Google의 서비스
본격적으로 AWS, Azure, Google의 IaaS와 PaaS에 대해 알아보기 전에 왜 여러가지 클라우드 서비스를 하는 여러가지 업체들이 있음에도 불구하고 AWS, Azure, Google에 대해서만 알아보는지 파악한다. 그 이유는 아래 그림에서 확인할 수 있다.
Canalys의 보고서에 따르면 2021년 4월 기준 전 세계 클라우드 시장은 AWS가 시장의 32%를 차지하고 Azure가 19%, Google이 7%를 차지하는 것을 확인할 수 있다. 따라서, 본 보고서는 주요 클라우드 업체들에 대해 서비스 별 특징과 장단점에 대해 알아보고, 최종적으로 사업자를 선정하고자 한다.
가. AWS의 IaaS, PaaS 특징, 장단점
먼저 AWS의 IaaS는 대표적으로 Amazon EC2가 있다. Amazon EC2란 Amazon Elastic Compute Cloud의 두문자어로, 안전하고 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공하는 웹 서비스이다. EC2의 특징으로는 종량제 구조이지만, 시간당 요금을 부과한다는 점, 컴퓨팅 요구사항의 변화에 따라 컴퓨팅 파워를 조정할 수 있다는 점, 새로운 서버 인스턴스 확보 및 부팅시간을 분단위로 단축한다는 점, 실제로 사용한 용량만큼만 지불이 가능 하다는 점, Linux와 Windows 중 선택이 가능하다는 점, 마지막으로 안정성을 위해 여러 AWS 리전과 가용 영역에 걸쳐 배포한다는 점이 있다.[6] 여기서 인스턴스란, 가상컴퓨팅 환경을 의미한다. 인스턴스의 유형에 따라 인스턴스에 사용되는 호스트 컴퓨터의 하드웨어가 결정되며 각 인스턴스 유형은 서로 다른 컴퓨팅, 메모리, 스토리지 용량을 제공한다. AWS는 400개가 넘는 인스턴스의 선택지가 있어 사실상 거의 모든 비즈니스 요구 사항에 적합할 수 있다고 말해오고 있다.[7]
이어서, 위에서 언급한 리전과 가용영역에 대해서 알아본다. 리전이란 지리적 위치를 말하는데, 아마존 웹 서비스의 서버가 어디에 위치하는지를 의미한다. EC2를 이용해 서비스를 하려는 지역의 주 고객들이 거주하는 지역과 서버의 거리가 멀면 멀수록 느려지기 때문에 주 고객들이 거주하고 있는 곳과 가까운 리전을 선택하는 것이 좋다. 또한 AWS는 리전을 최소 2개이상의 가용 영역으로 구성했는데, 만약 특정 서비스를 이용할 수 있는 건물이 자연재해로 인해 부서진다면, 서비스를 이용할 수 없게 되기 때문에 이에 대비해 다른 건물에서 서비스를 함으로써, 즉, 가용영역을 2개 이상으로 구성함으로써, 피치 못할 사정에도 서비스를 유지시키는 것이다. 또한, AWS는 제공하는 서비스 별로 SLA(Service-Level Agreement), 서비스 수준 협약을 제공하는데, EC2 서비스를 기준으로 최소 99.9%의 월간 가동률을 보장한다.[8] 만약 월 가동 시간 백분율이 99.99%미만일 경우, 이에 따른 크레딧을 제공함으로써 신뢰성을 보장하는 정책을 사용한다.
다음으로, AWS의 PaaS서비스인 Amazon Elastic Beanstalk에 대해서 알아본다. Amazon Elastic Beanstalk란 AWS의 핵심 서비스 중 하나로 어플리케이션 웹 서비스를 간단하고 빠르게 실행하여 스타트업에서 가장 중요한 시간과 돈을 낭비하지 않도록 하는 서비스 중 하나이다.[9] Beanstalk는 JAVA, .NET, PHP, Node.js, Python 등을 사용하여 Apache, Nginx 등과 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포할 수 있다. Beanstalk의 장점으로는, 어플리케이션을 업로드하기만 하면 Elastic Beanstalk이 용량 프로비저닝, 로드밸런싱 등을 이용해 빠르고 간편한 시작을 가능하게 해주며, Auto Scaling을 이용해 자동으로 애플리케이션을 확장하거나 축소함으로써 적절한 규모를 유지, 개발자 생산성 향상, 완벽한 리소스 제어를 가능하게 해준다는 것이 있다.
AWS의 장점과 단점을 정리해본다. AWS는 점유율 1위에 위치하고 있어 신뢰성이 보장된다는 점, 서비스의 선택지가 다양해서 비즈니스 요구 사항에 적합하게 맞출 수 있다는 점, 파트너 생태계를 갖춰 대규모 조직에 대한 지원을 한다는 점, 광범위한 운영 범위를 가진다는 점이 장점이다. 단점으로는 선택지가 많기 때문에 서비스를 파악하기 어렵고, 어려운 서비스 관리를 위해 고급 전문 지식을 갖춘 인력이 필요하다는 점이 있다. 또한, AWS의 비용구조를 파악하는데 어려움이 있을 수 있다는 점이 있다.
나. Azure의 IaaS, PaaS 특징, 장단점
이어서, Azure의 IaaS는 대표적으로 Microsoft Azure VM이 있다. AWS EC2와 마찬가지로 확장가능한 주문형 컴퓨터이고, 사용한 양만큼만 리소스 비용을 지불한다. 또한 Windows, Linux중에 선택이 가능하다. Azure VM는 종량제 구조이고, AWS와 다르게 분당 요금을 부과한다. 따라서, 단기로 구독할 생각이라면 Azure는 더 많은 유연성을 가질 수 있다. 또한 AWS와 Azure의 비용을 비교했을 때, 256GB RAM & 64Vpcu가 있는 인스턴스를 기준으로 AWS는 시간당 3.2달러를 청구하지만 Azure는 시간당 6.76달러를 청구해 Azure가 인스턴스가 커질수록 비용이 더 많은 비용이 드는 경향이 있음을 알 수 있다[10].
다음으로, Azure의 PaaS에 대해서 알아본다. Azure의 PaaS에는 Microsoft Azure App Service가 있다. Azure App Service란 웹 및 모바일 앱을 쉽고 빠르게 만들고 확장성 및 안정성이 뛰어난 클라우드 인프라를 배포할 수 있게 해주는 통합 클라우드 서비스이다. AWS의 Elastic Beanstalk와 마찬가지로 JAVA, .NET, PHP, Node.js, Python를 이용해 어플리케이션 개발의 생산성을 향상할 수 있다. 즉, 클라우드에서 웹앱 및 API를 빠르게 빌드할 수 있는 것이다. 또한, Azure App Service 기준 SLA 99.95%의 작동 시간을 통해 고가용성을 구현하고, 자동 플랫폼 유지 관리, 모든 Azure 지역에서 전역적으로 스케일링을 한다.
Microsoft Azure의 장점과 단점을 정리해본다. Azure는 MS 서비스 및 제품과 일관된 통합을 지원하기 때문에 조직에 MS 중심 환경이 갖추어져 있다면 장점이 될 수 있다.[11] 하지만 단점으로는, 관리 도구가 불안정하다는 점이 있고, Azure의 방대한 서비스를 이용하기 위해선 고급 전문 지식을 갖춘 인력이 필요하다는 점이 있다.
다. Google의 IaaS, PaaS 특징, 장단점
Google의 IaaS에는 Google Compute Engine이 있다. Google Compute Engine은 구글 인프라에서 호스팅되는 유연하고 자체 관리되는 가상 머신을 제공하는 IaaS제품이다. Compute Engine에는 KVM, 로컬 및 내구성을 갖춘 스토리지 옵션으로 실행되는 Linux 및 Windows 기반 VM과 구성 및 제어 목적의 단순 REST 기반 API가 포함되어 있다.[12] EC2, Azure VM과 마찬가지로 다양한 인스턴스를 제공한다.
Google의 PaaS에는 Google App Engine이 있다. App Engine은 확장 가능한 웹 어플레케이션을 개발하고 호스팅하기 위한 완전 관리형 서버리스 플랫폼이다. 몇 가지 자주 사용되는 언어(Go, PHP, 자바, Python, Node.js, .NET, Ruby 등), 라이브러리, 프레임워크 중에서 선택하여 앱을 개발한 후 App Engine에서 프로비저닝 서버를 관리하고 필요에 따라 앱 인스턴스를 확장할 수 있다.[13]
Google Cloud Platform의 장점과 단점을 정리해본다. Google Cloud Platform은 빅 데이터, 데이터 분석, 머신 러닝에 많은 투자를 했고 이런 기능들을 수행하기 위한 고성능 컴퓨팅 제품을 전문으로 해서 상황에 따라 Google Cloud Platform을 선택하는 것이 좋은 선택지가 될 수 있다. 또한, 클라우드 네이티브용으로 설계되어 클라우드 네이티브 어플리케이션에 최적의 옵션이라는 장점이 있다. 추가적으로, Google Cloud Platform은 AWS나 Azure를 사용하는 것보다 훨씬 더 많은 비용을 절약할 수 있도록 하는 초당 과금 모델을 제공하며, AWS에 비해 경우에 따라 최대 50%를 절약할 수 있도록 다양한 할인을 제공한다. [14]하지만, AWS나 Azure에 비해 시장에 늦게 진입했기 때문에 더 적은 기능을 가지고 있고, 대기업을 위한 서비스가 제한적이라는 것이 단점이다.
3. 클라우드 서비스 도입을 위한 사업자 선정
위에서 클라우드 도입의 필요성, IaaS와 PaaS의 개념, 사업자 별 서비스의 장점과 단점에 대해 알아보았다. 그렇다면, 신규 서비스를 런칭하는 소규모 스타트업 창업자의 입장에서 클라우드 서비스를 도입한다면, 어떤 서비스를 선택하는게 바람직할 것인가? 이는, 린 스타트업의 저자 에릭 리스가 언급한 정의에서 해답을 얻을 수 있다. “A startup is a human institution designed to create a new product or service under conditions of extreme uncertainty.” 번역하자면, 스타트업은 극도로 불확실한 상황에서 새로운 제품이나 서비스를 만들기 위해 설계된 인간 기관이다라는 것이다. 따라서, 스타트업은 불확실한 일을 하는 팀이고, 이 불확실한 특성에 맞는 기술을 사용해야 한다. 스타트업의 특성을 고려한 예시로는 다음과 같은 경우가 있다. ‘ㅍㅍㅅㅅ’의 기사 “파이썬이 스타트업에게 인기 있는 이유 7가지”에 따르면, 스타트업들은 빠듯한 예산으로 작업하는 경우가 많기 때문에, 파이썬을 사용한다고 정리했다. 파이썬의 사용자 친화적인 점, 인기가 많고 수요가 높은 점, 범용성을 지닌 점, 높은 확장성을 지닌 점, 거대 커뮤니티가 있는 점, 빠른 출시 속도를 보장하는 점, 개발 군단이 필요하지 않다는 점, 총 7가지의 특성 때문이라는 것이다.[15] 즉, 스타트업들은 불확실한 상황속에서 제품이나 서비스를 출시하기 위해 비용효율적인 백엔드 언어로서 파이썬을 사용하는 것이다. 마찬가지로, 백엔드 뿐만 아니라 프론트엔드도 스타트업은 이러한 특성을 가진 언어를 선택한다.
이를 클라우드에 접목시키면 어떨까? 위에서 알아보았듯이 Google Cloud Platform은 AWS, Azure와 마찬가지로 종량제 요금이면서, AWS, Azure와는 다르게 초당 요금을 부과함으로써 많은 요금을 절약할 수 있었다. 또한, Google Cloud Platform은 다양한 할인 정책들을 제공한다. 이러한 이유로, 적은 자본으로 시작할 확률이 높은 스타트업은 조금이라도 돈을 아끼기 위해서 Google Cloud Platform을 선택해야 한다. 뿐만 아니라, AWS, Azure의 다양한 서비스들을 제대로 알고 이용하기 위해선 고급 전문 인력이 필요하지만, 스타트업에는 고급 전문 인력을 고용할 여유가 되지 못한다. 따라서 Google Cloud Platform을 클라우드 사업자로 선택하는 것이 바람직하다. 또한, 스타트업이 GCP를 선택한다면, GCP의 단점이였던 대기업을 위한 제한된 범위의 서비스라는 점을 고려하지 않아도 된다.
Ⅲ. 결론
위에서 클라우드 서비스에 대해 알아보고, 스타트업의 입장에서 클라우드 사업자를 선정하는 과정들을 통해 Google Cloud Platform이 가장 적합하다고 판단하였다. 그러나, 스타트업이 아닌 국내 대기업이나 금융권같이 많은 사람들이 서비스를 이용하고 있는 회사들도 똑같이 Google Cloud Platform이 바람직할까? 답은 아니다. 2018년 11월 22일 AWS에서 서울 리전의 일부 DNS 서버 설정이 잘못 되어 84분동안 Amazon EC2 인스턴스의 DNS 확인을 방해하는 일이 발생했다고 AWS는 보고했다.[16] 이로 인해 나이키, 쿠팡, 업비트 등 일반소비자들이 자주 사용하는 웹사이트들이 마비가 되었다. 이런 오류가 발생하면 해당 기업의 서비스를 이용하는 소비자들은 많은 피해를 입게 되고 기업들은 클라우드 가동률을 특히나 고려해서 클라우드 사업자를 선정할 것이다. 즉, 대기업이든 스타트업이든 기업의 상황에 따라 고려해야 하는 특성이 다르고, 이로 인해 클라우드 사업자를 선택하는 기준이 달라지는 것이다. 따라서, 무작정 클라우드 사업자를 선정하는 것이 아니라, 기업의 상황에 맞는 클라우드 사업자를 선정하는 것이 무엇보다 중요하다.
[1] 『gabia 라이브러리』, https://library.gabia.com/contents/infrahosting/9114/
[3] 『Byline Network』, https://byline.network/2021/10/11-167/
[4] 『kubernetes』, https://kubernetes.io/ko/
[6] 『swhan9404.log』, https://velog.io/@swhan9404/EC2-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC
[7] 『aws』, https://aws.amazon.com/ko/ec2/?ec2-whats-new.sort-by=item.additionalFields.postDateTime&ec2-whats-new.sort-order=desc
[8] 『aws』, https://d1.awsstatic.com/legal/AmazonComputeServiceLevelAgreement/Amazon%20Compute%20Service%20Level%20Agreement_Korean_2020-07-22.pdf
[9] 『BESPON GLOBAL』, https://www.bespinglobal.com/introduction-aws-beanstalk/
[10] 『edureka』, https://www.edureka.co/blog/aws-vs-azure/
[11] 『문돌이가 이해한 인공지능 이야기』, https://moondol-ai.tistory.com/184
[12] 『Google Cloud』, https://cloud.google.com/compute/docs/faq?hl=ko-KRGoogle
[13] 『Google Cloud』, https://cloud.google.com/appengine/docs?hl=ko
[15] 『ㅍㅍㅅㅅ』, https://ppss.kr/archives/225469
'Dev > Cloud' 카테고리의 다른 글
[Cloud] 블록 스토리지, 파일 스토리지, 오브젝트 스토리지 개념 정리 (0) | 2022.01.04 |
---|---|
[Cloud] 클라우드란? On-Premise와 비교, 조건, 장점, SaaS, PaaS, IaaS (0) | 2022.01.04 |