클라우드 (Cloud)
우리가 알고 있는 클라우드(Cloud)라고 한다면, icloud나 Naver cloud, Google cloud 같이 우리가 가지고 있는 정보, 사진 (데이터) 를 저장하는 저장 공간이라는 개념으로 알고 계실 것 입니다.
사실 클라우드 인프라는 엄청나게 다양한 서비스를 포함하고 있지만, 개발자나 IT 엔지니어가 아닌 일반 사용자의 관점에서 볼 때, 클라우드는 주로 온라인 저장 공간(사진이나 PDF, jpg 등을 저장하는 공간)으로 인식이 되는 경향이 있습니다
- 일반 사용자의 클라우드 인식:
- 대부분의 일반인에게 클라우드는 주로 데이터 저장소로 인식됨
- 예: icloud, Google Drive, Dropbox 등의 서비스
- 클라우드의 실제 범위(개발자, IT 엔지니어):
- 저장 공간 외에도 컴퓨팅, 네트워킹, 데이터 베이스, AI/ML 서비스 등 포함
- 기업용 솔루션, 개발 플랫폼, 보안 서비스 등 다양한 영역 포괄
IaaS, PaaS, SaaS 란
뭐 다양한 글들을 보면 IaaS, PaaS, SaaS 등을 언급하곤 하는데, 이 부분에 대해서 최대한 쉽게 설명을 하자면,
- IaaS (Infrastructure as a Service)
- 예를 들어, 레고 회사(AWS)가 여러분에게 기본적인 블록들(서버, 저장소, 네트워크 등)을 제공하는 것과 같습니다. 여러분은 이 블록들을 가지고 자유롭게 원하는 구조물(시스템)을 만들 수 있습니다. 구조물을 어떻게 만들지는 여러분의 몫이지만, 기본적인 인프라는 제공됩니다.
- AWS 에서는 Ec2, S3, ASG 등 여러가지 블록을 조합하여 시스템을 구축할 수 있습니다.
- PaaS (Platform as a Service)
- 요리를 할 때를 생각해보면, PaaS는 여러분에게 주방(플랫폼)을 제공하는 것과 같습니다. 오븐, 냉장고, 조리도구 등이 모두 갖춰져 있어요. 여러분은 그저 재료를 가져와 요리(애플리케이션)만 하면 됩니다.
- AWS 에서는 Elastic Beanstalk, Lambda와 같은 서비스들이 있겠네요
- SaaS (Software as a Service)
- SaaS도 식당(AWS)에 가는 것으로 비유하자면, 여러분은 요리를 직접 할 필요도, 주방을 갖출 필요도 없습니다. 그저 메뉴에서 원하는 음식(다양한 서비스)을 선택하고 즐기면 됩니다. 모든 준비와 서비스는 식당에서 제공합니다.
- AWS에서는 AWS Backup(클라우드 및 온프레미스 데이터 백업), Amazon Chime(화상 회의 및 통신) 와 같은 서비스가 있습니다.
클라우드 컴퓨팅(Computing)과 클라우드 스토리지(Storage)
수많은 서비스들이 있지만, 조금 대표적으로 많이 언급되는 클라우드 컴퓨팅과 스토리지의 관계에 대해서 정말 간단하게 설명하겠습니다
우리가 1인 개발자로서 웹 서비스를 배포하려 한다고 가정해 봅시다.
배포란, 우리가 내 로컬 환경(내 노트북 혹은 컴퓨터)에서 개발한 이 웹페이지를 다른 사람들이 인터넷을 통해 방문할 수 있도록 해주는 것을 의미합니다. 이를 위해서는 우리가 만든 웹 애플리케이션을 실행할 서버가 필요합니다. 이 말인 즉슨, 그럼 우리에게는 24시간 가동되고 있는 컴퓨터가 한대 더 필요하다는 의미입니다. 그래야 사용자들이 원하는 시간대에 언제든지 방문해서 이용할 수 있겠죠?
이때 AWS의 EC2 인스턴스가 중요한 역할을 합니다. EC2는 클라우드 컴퓨팅의 대표적인 예로, 가상 서버(보이지 않는 컴퓨터)를 제공합니다. 이 가상 서버에 우리의 웹 애플리케이션을 설치하고 실행할 수 있습니다.
자, 우리는 EC2를 통해서 우리가 만든 웹 페이지를 배포했습니다. 근데, 우리가 이렇게 웹 페이지를 운영하다 보면, 사용자 데이터, 업로드된 파일 등을 저장해야하겠죠? 이때 클라우드 스토리지 서비스인 Amazon S3나 데이터베이스인 DynamoDB를 사용할 수 있습니다.
따라서 클라우드 컴퓨팅(EC2)는 우리의 애플리케이션의 '두뇌' 역할을, 클라우드 스토리지(S3)는 데이터를 저장하는 '저장고'역할을 한다고 볼 수 있습니다. 이 두 서비스를 조합하여 완전한 웹 서비스를 구축하고 운영할 수 있습니다.
왜?
이렇게 클라우드 서비스에 대해 대략적으로 설명을 드렸는데, 이제 자연스럽게 '왜 클라우드 서비스를 사용해야 하는가?'라는 질문이 떠오를 수밖에 없겠죠? 왜 많은 기업들이 On-premise(자체 서버를 회사 내에 구축한 환경)에서 클라우드 환경으로 이주(migration)하고 있을까요?
여러 이유가 있지만, 과거의 예시를 들어 몇 가지를 설명드리겠습니다.
과거에 On-premise 환경에서 서버를 구축할 때, 서버 엔지니어들은 앞으로 우리 회사의 웹 페이지가 얼마나 많은 컴퓨팅 용량과 저장 공간을 필요로 할지 예측해야 했습니다. 하지만 이러한 예측은 항상 실제 수요와 차이가 발생하기 마련이었고, 이는 곧 불필요한 비용 낭비로 이어졌습니다.
반면 클라우드 서비스에서는 다양한 결제 방식이 있지만, 대표적으로 'Pay as you go'라는 사용한 만큼만 비용을 지불하는 방식 덕분에, 컴퓨팅 및 스토리지 용량에 대한 비용을 절감할 수 있습니다. 또한, 우리 애플리케이션이 성공하여 많은 사용자가 몰리게 되면, 서버나 스토리지의 확장이 필요해지는데, AWS와 같은 클라우드 서비스를 이용하면 매우 간편하게 확장 및 축소가 가능하여, 불필요한 시간과 비용을 절감할 수 있습니다.
사실 이 이유들만으로도 우리가 클라우드 서비스를 사용해야 하는 충분한 이유가 되겠죠?