들어가기 전에
웹사이트를 운영하려면 당연히 고성능 컴퓨터와 서버를 직접 구매해야 할 것 같지만 그럴 필요가 없다. 클라우드 컴퓨팅을 사용하면 필요한 만큼 컴퓨팅 자원을 빌려 쓰고, 필요 없으면 바로 반납할 수 있기 때문이다.
클라우드 컴퓨팅의 3가지 기반인 IaaS, PaaS, SaaS라는 생소하지만 중요한 개념을 이해하면, 우리가 일상적으로 사용하는 웹 서비스가 어떤 원리로 유연하게 동작하는지 알 수 있다. 이번 글에서는 클라우드 컴퓨팅의 핵심 개념을 쉽게 설명해보려고 한다.
참고영상 : https://www.youtube.com/watch?v=XBu54nfzxAQ
1. IaaS(Infrastructure as a Service)
웹사이트를 운영할 때, 회사가 클라우드 컴퓨팅 서비스를 통해 컴퓨터를 임대하는 경우가 많다. 즉, 물리적인 컴퓨터를 직접 구매하지 않고도 웹사이트를 운영할 수 있다는 뜻이다. 이때, 클라우드 컴퓨팅 회사가 여러 대의 가상 컴퓨터를 임대해 주는 서비스를 IaaS(Infrastructure as a Service)라고 한다.
대표적인 클라우드 컴퓨팅 회사인 AWS를 예로 들어 설명해보겠다.
AWS는 백그라운드에서 강력한 성능의 대규모 컴퓨터를 운영하며, 이 안에는 여러 개의 가상 컴퓨터가 실행되고 있다. 다른 회사들은 이 가상 컴퓨터 중 하나를 임대해 사용한다. 이렇게 소프트웨어적으로 구현된 가상 컴퓨터를 VM(Virtual Machine)이라고 한다. 웹사이트를 운영할 때는 백엔드용 VM, DB(Database)용 VM 등을 필요에 따라 임대할 수 있다.
하나 더, 서버 트래픽 문제의 예를 들어보자. 한 온라인 쇼핑몰에서 크리스마스 시즌에 대형 트리가 불티나게 팔릴 때, 접속자가 급증하여 서버가 요청을 감당하지 못하고 인터넷 트래픽이 혼잡해질 수 있다. 이때 온라인 쇼핑몰은 어떻게 대응할까?
클라우드 컴퓨팅을 이용하면 동일한 백엔드 코드를 실행하는 여러 VM을 설정할 수 있다. 이때, LB(Load Balancer)라는 특수한 VM을 앞단에 배치해 요청을 여러 VM에 균등하게 분산시킨다. LB 덕분에 사용하지 않는 VM은 꺼서 비용을 절감하고, 필요할 때는 즉시 VM을 추가해 서버 트래픽 문제에 대응할 수 있다.
2. Paas(Platform as a Service)
하지만 많은 VM들을 일일이 설정하고 관리하는 데는 많은 시간과 노력이 든다. 이를 해결하기 위해 클라우드 컴퓨팅 회사는 PaaS(Platform as a Service)를 제공한다. PaaS를 이용하면 백엔드 코드를 업로드하는 것만으로 LB와 VMs를 자동으로 설정하고 통합할 수 있다.
Paas 중에 하나인 Microservices(마이크로서비스)에 대해 더 자세히 다뤄보겠다.
예를 들어 한 온라인 쇼핑몰의 백엔드가 주문하기, 결제하기, 이메일 보내기 같은 기능을 담당한다고 하자. 이 기능들은 수백만 줄의 코드로 구성될 수 있는데, 이를 관리하기 쉽도록 기능별로 3개의 코드베이스로 나눌 수 있다.
- 주문하기
- 결제하기
- 이메일 보내기
각 코드베이스는 각각 독립적인 LB, VMs, DB를 가질 수 있다. 이를 Microservices Architecture라고 하며, 코드베이스를 더 작고 집중적으로 유지할 수 있는 장점이 있다. 또한, 반드시 동일한 DB나 프로그래밍 언어를 사용할 필요도 없다.
3. SaaS(Software as a Service)
참고했던 영상에서는 이메일 보내기 기능을 설명하며 Twilio(트윌리오)를 언급했다.
Twilio는 이메일 전송을 위한 백엔드와 API를 제공하며, 요청만 보내면 이메일을 손쉽게 발송할 수 있다. 이처럼 외부 앱이 사용할 수 있도록 백엔드와 API를 제공하는 서비스를 SaaS(Software as a Service)라고 한다. SaaS는 일반적으로 내부 로직이 복잡하지만, 외부 사용자 입장에서는 기능을 쉽게 활용할 수 있는 것이 특징이다.
정리
- IaaS : 인프라(가상 서버, 네트워크 등) 제공
- PaaS : 개발자가 코드를 쉽게 배포할 수 있는 플랫폼 제공
- Saas : 외부에서 사용할 수 있는 소프트웨어 및 API 제공

감사합니다 (^^ゞ