일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 42seoul
- 텍스트북
- 프라이빗클라우드
- enable_if
- schema first
- 어셈블리
- GraphQL
- 스플릿키보드
- 창업
- raycasting
- Cloud Spanner
- 레이캐스팅
- 이노베이션아카데미
- 파이썬
- 정렬
- c++
- adminbro
- mistel키보드
- 자료구조
- 엣지컴퓨팅
- psql extension
- 도커
- SFINAE
- 어셈블리어
- uuid-ossp
- 42서울
- 스타트업
- 부동소수점
- 동료학습
- 쿠버네티스
- Today
- Total
written by yechoi
클라우드의 특징과 종류(IaaS, PaaS, SaaS, FaaS) 본문
1.1 Cloud Economics and Computing as a Utility
클라우드 서비스는 다음을 제공함.
- 데스크탑
- 디스크, 저장소
- 프로세싱
- 네트워킹
- 데이터베이스 및 기타 서비스
클라우드 서비스의 특징
- 클라우드는 "온디맨드(바로 제공하는)" 모델. 필요한 만큼 사용하고, 사용한 만큼 지불함.
- 구매, 설치에 비용이 들지 않음.
- "scalability"가 특징. 확장이 필요할 때, 오버해드나 보수 비용이 없이 확장 가능.
- 원격으로 인터넷을 통해 서비스를 제공함.
1.2 Scalable computing and Storage Services
비용은 시간 당, 월별로 책정되며, 이용자는 비용 옵션을 협상할 수 있다.
클라우드 리소스는 리모트 서비스.
기업의 비즈니스 모델과 방향성이 일치한다면, 컴퓨팅 서비스는 클라우드 인프라로 옮겨질 수 있다.
1.3 Distributed Computing for Performance and Reliability
사용자들은 언제 클라우드 서비스가 사용되는지 모르기도 함. 디스크, 네트워킹, 메모리 등 클라우드 서비스는 사용자에 보이지 않기 때문.
네이티브 데스크 탑에서 클라우드 서비스를 사용하면 컴퓨팅 자원을 많이 사용하게 됨.
클라우드 서비스는 가상화 방식으로 전달됨. 사용자 관점에선 가상화된 하드웨어는 물리적 하드웨어와 동일하게 정보를 처리함.
하이퍼바이저는 클라우드 공급자가 실행하는 프로덕트로, 각각의 인스턴스에 따라 서비스를 할당한다. 두가지 방식이 있음. 1) 하드웨어 위에서 바로 하이퍼바이저를 돌리거나 2) 하드웨어 위 os에서 하이퍼바이저를 실행.
하이퍼바이저란 호스트 컴퓨터 한대에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼.
type 1 hypervisor
호스트 하드웨어 위에 직접 설치하여 구동.
하드웨어를 제어하는 OS 역할과 VM 관리 역할을 모두 하이퍼바이저가 담당.
예시) Xen, IBM의 Power 하이퍼바이저, x86용 오라클 VM 서버, 마이크로소프트 하이퍼-V 등type 2 hypervisor
기존의 컴퓨터 환경을 그대로 사용하는 방식이므로 설치, 구성이 편리
다른 프로그램처럼 설치과정 거진 후 가상 이미지를 만들어 띄우면 됨
예시) VitualBox, VM웨어 워크스테이션, VM웨어 플레이어 등
다양한 서비스를 제공함. AI, analytics, blockchaine, databases ...
distributed computing 의 특징
- concurrency of components
- lack of a global clock
- independent failure of components
1.4 Managed Infrastructure
클라우드의 주요 분야
- SaaS(Software-as-a-Service)
- Paas(Platform-as-a-Service)
- IaaS(Infrastructure-as-a-Service)
SaaS
- 클라우드 공급자에 의해 소프트웨어 서비스가 공급됨
- 이용자는 구독하기만 하면, 소프트웨어의 유지나 보수는 클라우드 공급자가 담당
PaaS
- 네트워킹, 가상 서버, 스토리지, OS, 미들웨어 등을 제공함
- 개발 시스템을 설정하고 실행시키는 복잡함을 덜어줌
IaaS
- 기본적인 인프라를 제공
- 아웃소싱 인프라, 호스팅 서비스, 데이터베이스 서비스, 네트워킹 및 스토리지 서비스 등을 포함함
1.5 Azzure Services and APIs
인터페이스, 데브옵스 둘, 커맨드라인 인터페이스, API 등을 제공
2.1 IaaS(Infrastructure as a Service)
virtual server, desktops, security, networking 을 제공함
IaaS 도입 케이스
- 개발 및 테스트 환경: 균일한 환경을 제공, 가상화를 통해 일관성을 유지
- 애플리케이션 호스팅: 호스팅을 위한 가상 서버를 제공, 런타임 서버를 제공해 필요에 따라 스케일 업 할 수 있음
- 스토리지, 백업
장점
- 경영 환경에 따라 빠르게 대처할 수 있음
- 비즈니스 리소스를 코어 비즈니스에 계속 집중할 수 있음
- 기술 전문가와 컨설팅을 제공받을 수 있음
2.2 PaaS(Platform as a Service)
단순한 클라우드 기반 앱에서 정교한 클라우드 사용 엔터프라이즈 응용 프로그램에 이르기까지 모든 것을 제공할 수 있는 리소스가 포함되어 있으며 클라우드에서 제공되는 완전한 개발 및 배포 환경
서버, 저장소, 네트워킹 등의 인프라뿐만 아니라 미들웨어, 개발 도구, BI(비즈니스 인텔리전스) 서비스, 데이터베이스 관리 시스템 등도 포함
"Pay as you go" 모델로 사용한 만큼 지불함.
예시) Amazon Web Services, Elastic Beanstalk, Microsoft Azure, Heroku, Force.com, Google App Engine, and Apache Stratos
2.3 SaaS(Software as a Service)
기업의 소프트웨어를 구독제로 제공
소프트웨어를 설치, 호스트, 유지보수할 필요가 없음
예시) gmail, office 365, salesforce, paycom, quickbooks...
2.4 FaaS(Function as a Service)
- 마이크로서비스의 일환으로 애플리케이션 개발 환경을 제공
- PaaS와 다른 점은 컴퓨팅을 수요에 따라 동적으로 제공한다는 것
- 환경이 사용되는 시간에 대해 지불함. 즉, 사용하지 않는 시간은 지불하지 않음.
- 런타임 서비스로 제공하며, 데이터 프로세싱을 제공하며 데이터를 저장하지 않음
- 서버리스 컴퓨팅이라고 칭하기도 함
- 예시) AWS Lambda, Google Functions, Azure Functions...
- 리퀘스트가 생기거나 런타임 환경이 멈추면, (재)시동해야함
- 시동은 즉각적으로 이뤄지지 않으며, 몇초가 걸림
- 이에 따라 많은 요청이 생기거나 하는 경우 느려질 수 있음
Serverless! – BaaS 와 FaaS
Serverless, 즉 서버가 없다는 의미입니다. 이는 BaaS 와 FaaS, 이렇게 두가지로 나뉘어질 수있는데요, 서버가 없다는건, 그냥 표현일 뿐, 사실 작업을 처리하는 서버는 존재하긴 합니다. 다만, “서버의 존재”에 대해서 신경쓰지 않아도 됩니다. 서버가 어떤 사양으로 돌아가고있는지, 서버의 갯수를 늘려야 할지, 네트워크는 어떤걸 사용할지, 이런걸 설정할 필요가 없습니다.
FaaS (Function as a Service)
FaaS 는 프로젝트를 여러개의 함수로 쪼개서 (혹은 한개의 함수로 만들어서), 매우 거대하고 분산된 컴퓨팅 자원에 여러분이 준비해둔 함수를 등록하고, 이 함수들이 실행되는 횟수 (그리고 실행된 시간) 만큼 비용을 내는 방식을 말합니다.
우리가 등록한 함수는 특정 이벤트가 발생했을때 실행됩니다.
- 주기적으로 실행되게끔 설정 할 수 있습니다. 5분마다, 1시간마다, 하루마다 이런식으로 말이죠. 크롤링 작업, 주기적 처리를 할 때 좋습니다.
- 웹 요청을 처리 할 수도 있습니다. 예를 들어서 특정 URL 로 들어오면 어떠한 작업을 하게끔 할 수 있죠. 이를 통하여 백엔드 API 를 구성 할 수도 있습니다.
- 콘솔을 통하여 직접 호출 할 수도 있습니다.
PaaS 와의 주요 차이점
서버 시스템에 대해서 신경쓰지 않아도 된다는 점이 PaaS 와 유사하기도 한데요, 가장 중요한 차이점은, PaaS 의 경우엔, 전체 애플리케이션을 배포하며, 일단 어떠한 서버에서 당신의 애플리케이션이 24시간동안 계속 돌아가고 있다는 점 입니다.
반면 FaaS 는, 애플리케이션이 아닌 함수를 배포하며, 계속 실행되고 있는 것이 아닌, 특정 이벤트가 발생 했을 때 실행되며, 실행이 되었다가 작업을 마치면 (혹은 최대 타임아웃 시간을 지나면) 종료됩니다.
장점
- 비용절감
- 유연한 확장성(호출될 때마다 새로운 인스턴스 가동)
- 기능이 함수 단위로 개발되기 때문에 서비스를 빠르고 간단하게 출시
제약사항
- 함수 호출을 위해 컨테이너가 실행되는 대기시간(콜드스타트)가 존재해, 빠른 응답이 필요한 경우 부적합
- 무상태적(stateless) 기능으로 구현돼야. 함수들은 요청마다 새로 기동돼 호출되기 때문에, 전후 상태를 공유할 수 없음. 벤더에 따라 다르기는 하지만 일반적인 서버리스에선 변수와 데이터의 공유가 불가능하며, 데이터를 로컬 스토리지에서 읽고 쓸수 없음.
- 벤더가 제한을 두는 사항(최대 메모리, 최대 처리 가능 시간 등)을 그대로 수용해야. 따라서 큰 기능을 잘게 나눠 구현해야.
사용사례
- 배치, 자동화, 분석, 모니터링 , 챗봇기능에 적합
- 코카콜라가 아마존 웹 서비스(Amazon Web Service, 이하 AWS) EC2 인스턴스에서 운영 중이던 자판기 관리 시스템을 AWS Lambda로 이전하여 관리비용을 년 1만 3,000달러에서 4,500달러로 65%나 절감
- 넷플릭스는 동영상 업로드 시 파일의 인코딩과 검증, 태깅 이후에 공개되는 작업을 AWS Lambda를 통해 자동화
- 실시간 비디오 스트리밍 앱 개발사인 페리스코프(Periscope)도 동영상의 유해성 여부를 확인하는 기능을 Lambda에서 운영
클라우드 컴퓨팅의 단점
- 클라우드 공급자에 의존적
- 데이터가 클라우드 공급자의 통제 하에 있음
- 클라우드 공급자로부터 데이터를 옮기기 쉽지 않음