Hayden's Archive
[Cloud] 클라우드 서비스 유형(XaaS : ~ as a Service) 본문
참고 : 방통대 클라우드컴퓨팅 강의 ( ucampus.knou.ac.kr/ekp/user/course/initUCRCourse.sdo?cntsId=KNOU1525&sbjtId=KNOU1525001 )
XaaS의 종류는 굉장히 많다. 기본적인 서비스는 IaaS, PaaS, SaaS 이며 나머지 것들은 이 세 가지의 변형 형태라고 할 수 있다.
- On-Premise : 실제 하드웨어부터 해서 이 컴퓨터에 들어가는 네트워크 장비, 스토리지 장비, 보안 장비까지 모두 특정 회사에서 구입해서 갖춰놓고 운영하는 형태. 클라우드 서비스 없이 모든 부분을 사용자가 관리함.
- 클라우드 서비스의 기본적인 유형
- IaaS : 인터넷을 통해 서버와 스토리지 등 데이터센터 자원을 빌려 쓸 수 있는 서비스
- 가장 낮은 단계의 클라우드 서비스 모델.
- OS의 전체 혹은 일부분까지도 사용자가 관리하거나 제어.
- Bare Metal(어떤 소프트웨어도 설치되어 있지 않은 하드웨어)을 클라우드 형태로 제공해줌.
- 넷플릭스의 사용 사례
- DB오류로 서비스가 장시간 중단되는 문제를 겪은 후 2008년에 클라우드 컴퓨팅으로 마이그레이션을 시작 ( 마이그레이션 )
- 넷플릭스는 자체적으로 스트리밍할 수 있는 솔루션을 가지고 있었음. 애플리케이션 뿐만 아니라 애플리케이션이 동작하는 플랫폼까지도 이미 가지고 있었음.
- 그러므로 SaaS와 PaaS를 굳이 이용할 필요 없이 하드웨어만 사용할 수 있도록 AWS에 요청
- 사업 확장을 위해 전세계적으로 데이터 센터를 건립할 필요가 있었음. 클라우드를 통해 해결 → 클라우드 도입 후 넷플릭스 제공 영역이 전세계로 확대됨.
- PaaS : 소프트웨어 서비스를 개발할 때 필요한 플랫폼을 제공하는 서비스
- 데이터와 애플리케이션은 자사에서 구축.
- 애플리케이션을 구축하는 환경까지는 클라우드 제공자에게 맡김.
- 운영체제, 데이터베이스와 같은 미들웨어, 자바 같은 런타임까지를 모두 클라우드 제공자가 관리해줌.
- 기업이 독자적으로 소프트웨어를 개발하거나 서비스를 제공하기 위해 PaaS를 활용
- 스노우파이프사 사례 : 모바일 게임은 IaaS 기반으로 제공. PaaS 기반의 MS SQL 서버를 활용하여 이용자의 데이터를 기록하고 관리하는 방식 도입
- 예시 : MS SQL 클라우드 서비스 등
- SaaS : 클라우드 환경에서 운영되는 애플리케이션 서비스. 모든 서비스가 클라우드에서 이뤄지고 PC에 설치하지 않아도 웹에서 소프트웨어를 빌려쓸 수 있음.
- 가장 요금은 비싸지만 관리와 운용에 있어 인력들이 필요하지 않아서 편의성이 최적화.
- 업데이트와 패치도 클라우드 제공자가 알아서 해줌. 관리적 부분에서 최신의 상태 유지.
- 데이터가 포함되는 경우도 있고 데이터가 포함되지 않는 경우도 있음
- 주요 서비스 : ERP(전사적 자원 관리), CRM(고객 관리 소프트웨어), SCM(공급망 관리), 문서편집, 그룹웨어, 문서관리, AI 등
- 예시 : Google Apps, Office 365 등
- IaaS : 인터넷을 통해 서버와 스토리지 등 데이터센터 자원을 빌려 쓸 수 있는 서비스
출처 : terms.naver.com/entry.nhn?docId=3580686&cid=59088&categoryId=59096
- 이 외에 CaaS(Container as a Service)나 FaaS(Function as a Service)를 포함시키기도 한다.
좀 더 알고 싶어서 서치하다 보니 클라우드 서비스 유형을 피자에 빗댄 재미난 비유도 있었다...ㅋㅋㅋㅋㅋ (출처 : medium.com/@pkerrison/pizza-as-a-service-2-0-5085cd4c365e )
- CaaS(Container as a Service)
- 컨테이너 : 애플리케이션과 이를 구동하는데 요구되는 리소스(라이브러리, 바이너리, ... 등)를 묶은 패키지. 실행 환경을 완벽히 구축해놓은 상태.
- 사용자가 컨테이너 및 클러스터를 구동하기 위한 컴퓨팅 리소스 및 기술 제공.
- 다양한 환경에서 오류 없이 사용 가능
- 예시
- MS Azure의 AKS(Azure Kubernetes Service)
- AWS의 ECS(Elastic Container Service)
- 대표적 사례 : 미국의 액션 카메라 브랜드 GoPro
- 페타바이트 단위의 데이터 처리를 위한 수만 개의 API 요청(사용자들이 본인들의 영상을 올려서 공유할 수 있는 페이스북과 같은 사이트)
- GoPro는 FaaS 형태로도 클라우드 이용 : 동영상이 올라오면 인코딩 해야 함. 평소에 인코딩 하지 않으면 CPU 메모리 필요하지 않음. 반납해서 쓰고 있지 않다가 인코딩 요청을 하면 서비스가 돌아감.
- CaaS 형태로 클라우드 이용 : 이런 식의 서비스를 새롭게 구축할 때마다 사용량이 많아지면 서버가 추가적으로 투입. 서버 여러 대를 증설.
- 자신들이 제공하는 서비스마다 CPU와 메모리량을 결정 → 컨테이너에 배치 및 리소스 할당 위임.
- FaaS(Function as a Service)은 Serverless에 해당함.
- Serverless : 서버가 없는 사용 모델. 서비스를 운영하면서 서버를 항상 점유하고 있지 않겠다는 뜻. 실제 서버가 없는 건 아니고 사용하지 않을 때는 서버가 없다는 뜻.
- 데몬(사용자가 요청했을 때 어떤 서비스를 제공해줘야 하는지 프로그램 코드로 만들어놓는데 그걸 데몬이라고 함. 요청이 언제 들어올지 모르니까 서버에 상주하고 있어야 함.)
- 요청이 언제 들어올지 모르니까 24시간 켜져있어야 하고 24시간 서버를 잡아놓고 있어야 하는 문제점.
- 요청이 들어오면, 서버를 그 때 마련해서 데몬 돌리고 요청을 처리해서 제공. 서비스가 돌아가면 계속 운영되고 있다가 이른 새벽과 같이 요청이 없을 때는 서버를 반납해버림. → 요금 절약
- 어떤 사용자의 요청이 들어올 때만 그때그때 자동으로 서버를 생성해놓고 처리하고 한동안 안 쓰면 다시 반납해버림. 즉 쓰지 않을 때는 서버가 없다. 그러므로 Serverless!
- 사용자와 제공자 둘 다에게 윈윈. 사용자는 요금을 아낄 수 있어서 좋고, 제공자는 사용자가 안 쓰는 동안 다른 사용자가에게 제공할 수 있어서 좋음.
- Serverless에 BaaS와 FaaS가 있다. BaaS와 달리 FaaS는 사전 작성된 서비스 라이브러리에 의존하지 않고 사용자 정의 애플리케이션을 생성하는 개발자에게 더 많은 제어 권한을 제공함.
- 예시
- MS Azure의 Function
- AWS의 람다(lambda)
- Google의 Cloud Functions
- Serverless : 서버가 없는 사용 모델. 서비스를 운영하면서 서버를 항상 점유하고 있지 않겠다는 뜻. 실제 서버가 없는 건 아니고 사용하지 않을 때는 서버가 없다는 뜻.