Cloud

[1028 from 클라우드컴퓨팅 by정재화] 02. 클라우드 컴퓨팅 서비스

 02. 클라우드 컴퓨팅 서비스
클라우드 컴퓨팅
특징
1. 정의
언제 어디서나 필요한 만큼의 컴퓨팅 리소스를 인터넷을 통하여 활용할 수 있는 컴퓨팅 방식.

=(by 일반적)
인터넷상에 존재하는 클라우드 사업자에 의해 서비스가 제공되는 컴퓨팅 기술
=(by 위키피디아)
인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드(인터넷)에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. 
=(by AWS)
클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용하는 만큼만 비용을 받는 것을 말한다. 
=(by NIST , 미국 국립 표준기술원) ** 가장많이 인용
The NIST Definition of cloud Computing
클라우드 컴퓨팅은 어디에서나 동작하고 편리하며, 최소한의 관리 노력이나 서비스 제공자와의 상호 작용을 통해 빠르게 제공하고 배포할 수 있는 구성 가능한 컴퓨팅 리소스(예: 네트워크나 서버, 저장소, 애플리케이션 및 서비스)의 공유 풀에 주문형 네트워크로 접근 가능한 모델. 
이 클라우드 모델은 5가지 본질적 특성과 3가지 서비스 모델, 그리고 4가지 배포 모델로 구성된다. 
5가지 본질적 특성 1. 온디맨드 셀프 서비스(on-demand self-service)
서버, 네트워크 장치, 저장 장치 등의 it리소스를 사용자가 전문가의 개입 없이 필요한만큼 자동적으로 확보해 사용할 수 있다는 특징. 

2. 광범위 네트워크 액세스
클라우드 컴퓨팅은 서버가 원격지에 가상으로 존재하여 네트워크로 연결되는 클라이언트-서버구조. 한 형태.  모바일, 노트북, pc 기종상관없이 웹 인터페이스를 통하여 서비스에 접근할 수 있는환경 제공. 
클라이언트-서버 모델: 클라이언트, 서버간 작업 분리해주는 분산 애플리케이션 구조, 네트워크 아키텍쳐
1) 팻 클라이언트 (fat Client) : 중앙 서버와 독립하여 풍부한 컴퓨팅 기능 보유한 클라이언트-서버 구조나 네트워크 클라이언트 
2) 씬 클라이언트 (Thin Client) :  자신의 컴퓨팅 역할을 충족시키기 위해 다른 일부 컴퓨터(서버) 에 크게 의존하는 컴퓨터나 네트워크 클라이언트

3. 리소스 풀링
멀티테넌트 모델을 기반, 사용자는 요구에 따라 물리 가상의 리소스를 동적으로 할당 받을수 있다. 
하드웨어 통합은 물리적으로 모아 배치하는 위치통합(co-location)이 아닌, 복수의 서버를 단일 플랫폼으로 구성하여 풀링
여러 컴퓨터의 기능을 단일 서버에서 하나의 시스템으로 통합할 때 더 적은 IT 리소스로 더 많은 작업을 할 수 있다. 
- 풀링 : pooling: 저장소인 풀(pool)에서 객체를 관리하고 필요한 사용자에게 할당하여 사용, 사용 후에는 풀로 반환하는 기법. 
- 테넌트 : tenant :  (by 일반적)공동주택에 거주하는 입주자, 
(by 컴퓨팅 환경)단위화 랄 수 있는 한 조직의 인프라 또는 서비스
- 멀티테넌트 모델(다중 소유 모델) : 하나의 서비스를 여러 태넌트가 함께 사용하지만 논리적으로 분리되어 있는 소프트웨어 아키텍처 
- 멀티 태넌시 : multi-tenancy:  논리적으로 분리된 영역 내에서 다중의 사용자에게 개별 프로그램 인스턴스를 제공하여 각 사용자가 독립적으로 사용하게 하는 소프트웨어 프로그램. 
- 싱글 테넌트 : 각 유저마다 독립적으로 분리된 가상화된 환경 사용. 

4. 신속한 탄력성
사용자의 요구에 따라 IT 리소스를 무한대로 확장할 수 있고, 언제든지 축소할 수 있다. 그리고 이러한 작업은 수분 이내로 처리된다.  사용자는 추가 리소스 사용량에 대한 비용만을 추가적으로 부담하여 가용 컴퓨팅 리소스와 요금 측면에서 탄력성을 갖는다. 

5. 서비스 사용량 측정
저장장치, cpu, 네트워크 대역폭 등 다양한 리소스 사용량을 미터링(metering) 하여 클라우드 사용자에게 보고해 투명성 제공, 추가협약에 따른 사용량 제어, 최적화 수행 
장애허용(fault tolerant) 시스템을 구축하여 장애가 발생하여도 클라우드 사용자가 서비스를 지속적으로 받을 수 있는 환경 제공.
ex) Azure의 경우  가상 서버에 대해 시간당 사용료를 책정, 사용하려는 서버의cpu 코어 갯수 , 메모리, 저장장치 용량, 저장장치의 종류등에 따라 사용료가 다르다.
- 장애 발생시
한국 클라우드산업협회 클라우드 표준계약서작성. 
ex) Azure의 경우 SLA의 성능 목표에 따른 가동 중지 시간 명시  99.999% 작동시간 제공. 
DB 10밀리초 미만 대기시간 
*SLA : Service Level Agreement : 측정 지표와 목표등에 대한 협약서. cpu 가동시간, 응답시간, 헬프 데스크 응답시간, 서비스 완료시간 포함. 
3가지 서비스 모델 1. SaaS : Software as a service
클라이언트 사용자에게 소프트웨어를 가상화 하여 제공,
웹브라우저를 통해 실행, 다운로드 설치를 필요로 하지 않음.
- 데이터 센터, 네트워킹 방화벽, 보안, 서버 및 저장소, 운영제체, 개발도구, DB관리, 비지니스 분석, 호스팅 된 응용프로그램 앱 제공. 

-SaaS의 주요서비스
1)ERP: 전사적 자원관리 클라우드 제공서비스
2)CRM: 고객관리 소프트웨어 클라우드 제공서비스
3)SCM: 공급망 관리를 클라우드 제공서비스
4)문서편집 : 문서편집 기능을 클라우드 제공서비스
5)그룹웨어: 메신저, 메일, 전자결재 등 기업 내 또는 기업간 필수 커뮤니케이션 기능 협업기능 클라우드 제공서비스
6) 문서관리 : 기업 효율적 문서관리, 그에 관련된 S/W 클라우드 제공서비스
ex) 구글 앱스.  Notion

2. PaaS : Platform as a Service
사용자가 직접 특정 소프트웨어 자체개발 애플리케이션을 위해 클라우드 제공자로부터 기반 환경 , 플렛폼 제공받는 모델. 
제공자는 물리적 컴퓨팅 리소스 라이브러리, API 등을 제공 및 관리 장애 발생시 복구 및 유지보수에 대한 모든 책임. 
DBaaS : Database as a service 
- 데이터 센터, 네트워킹 방화벽, 보안, 서버 및 저장소, 운영제체, 개발도구, DB관리, 비지니스 분석
ex) 구글 App Engine: 애플리케이션을 빌드하고 배포 가능한 플랫폼 환경 제공
    모바일 게임의 경우 MsSQL 서버 기반의 데이터베이스를 기반으로 플레이어의 데이터 관리

3. IaaS : Infrastructure as a Service
사용자가 운영하고자 하는 서비스에 요구되는 프로세서, 스토리지 용량, 메모리 등의 하드웨어를 상세하게 명시하고 제공, 다른 클라우드 서비스 모델과 다르게 사용자가 가상 인프라와 관련된 컴퓨팅 리소스와 물리적 컴퓨팅 리소스에 대해 고수준의 관리 및 제어 권한을 갖는다. 
- 데이터 센터, 네트워킹 방화벽, 보안, 서버 및 저장소,
ex) 넷플릭스 . 온프레미스환경에서 aws로 이동,  자체적인 스트리밍 기술 보유, 컴퓨팅 리소스에대한 일정수준제어권한만 필요.  시청증가 대응. 

4. 기타 클라우드 서비스 모델 예시
FaaS : Functions as a Service
: 큰 시스템을 구성하는 개별 기능, 비즈니스 로직, 혹은 함수를 클라우드에 등록하고 연산에 처리되는 컴퓨팅 리소스를 클라우드 제공자 측에서 관리
Paas와 유사하게 보일 수 있지만 함수 호출이 요청될때만 연산을 수행하며 요청이 없을 시에는 컴퓨팅 리소스를 사용하지 않는 것이 주요특징 = 과금의 모델도 함수 호출횟수만큼지불
ex) AWS 람다(Lambda), 구글의 클라우드 펑션(Cloud Functions), 그리고 마이크로 소프트의 Azure의 펑션(Functions)
FaaS는 서버리스(Serverless)라고 불리지만, 실제 서버가 없는 것이 아니라, 특정작업(함수)을 실행하기 위해 물리적 컴퓨팅 리소스를 가상화하여 서버로 사용하지 않는 측면에서 서버리스라고 불린다. 
FaaS의 활용으로는 주기적으로 웹 페이지의 데이터를 수집하는 크롤링 작업, 넷플릭스의 경우 동영상을 업로드했을 때 이를 인코딩, 검증, 태깅, 공개하는 작업들과 백업관련 잡업 Lambda를 통해 처리. 

CaaS : Container as a Service 
사용자가 컨테이너 및 클러스터를 구동하기위한 컴퓨팅 리소스 및 그에 따른 기술. 
컨테이너 : 애플리케이션과 이를 실행하기 위해 요구되는 라이브러리, 바이너리, 구성 파일과 같이 운영체제를 제외한 모든 소프트웨어 자원을 묶은 패키지 
일반적으로 개발자가 작성한 애플리케이션을 개인 환경에서 테스트 환경으로 그리고 운영환경으로 이전할 때마다 많은 오류과 시행착오를 겪게 되는데, 이는 각 환경마다 네트워킹, 보안, 스토리지 등등 프레임워크 계층 구성이 다르기 때문 이에대한 기술
ex) AWS의 ECS(Elastic Container Service), Azure Kubernetes Service(AKS)
컨테이너관리 플랫폼 Docker(컨테이너엔진)가 호스트 운영체제의 커널을 통하여 컨테이너를 실행, 따로 가상 머신 이미지 생성하고 그안에 운영체제를 설치하여 리소스를 관리하지 않기 때문에 실행가볍고, 호수트 운영체제를 공유하기 때문에 성능도 호스트환경에서 실행하는 것과 유사하게 나오는장점. 이식성높다. 
ex) GoPro 사 페타바이트 단위의 데이터를 처리하며 이를 위해 수만개 API 요청을 받음 EC2를 사용했으나 ECS로 변경했고 리소스 70%절감했다. 

복합서비스 
VDI :Virtual Desktop Infrastructure 
:소프트웨어를 사용하여 데스크탑을 가상화하고 이를 중앙장치에서 네트워크를 통해 사용자에게 제공하는 서비스. 
OS, 사용자 정보 및 데이터는 IT관리자가 중앙에서 관리하는 서버에서 실행, 저장되고 사용자는 사용자 단말(VDI 이미지의 원격 액세스를 위한 네트워크 연결기기)을 이용해 접근

CDN : Contents Delivery Network
: 게임 동영상 , 애플리케이션 등의 콘텐츠를 글로벌 서버를 구축하여 네트워크 상황과 기기에 맞춰 최적의 속도로 제공하는 서비스.  
4가지 배포모델 1. 프라이빗 클라우드
하나의 기업, 조직, 독립적으로 컴퓨팅 리소스를 소유하는 형태의 배포모델
2. 커뮤니티 클라우드
정책, 혹은 내규에 따른 공통된 보안 요구사항이 있는 여러기업 및 조직 내 구성원들의 커뮤니티가 독점적으로 사용될 수 있도록 컴퓨팅 리소스를 관리하는 형태의 클라우드. 
커뮤니티 자체적으로 온프레미스 환경에서 운영하거나 클라우드 서비스 업체에 의해 제공 받을 수 있다.  
ex)뉴욕 증권거래소 의 자산내역 민감데이터
3. 퍼블릭 클라우드
클라우드 제공자가 소유. 네트워크를 통하여 사용자가 이용할수 있도록 운영. 
데이터에 따라 요구되는 보안정책수준이 다르기 때문에 추가적인 보안 옵션이 필요할 경우 퍼블릭 클라우드를 사용할 수 없게 된다. 
4. 하이브리드 클라우드
퍼블릭클라우드+프라이빗클라우드+온프레미스 결합 배포모델, 데이터, 어플리케이션 공유환경
다양한 클라우드 배포모델 연계, 상황에 적합한 데이터 관리작업. 
보안-> 프라이빗 클라우드
일반사용자& 서비스제공자-> 퍼블릭클라우드
- 클라우드 버스팅 기술: cloud bursting
플라이빗 클라우드 내 사용량 급증시 it리소스 추가 투입할때 퍼블릭클라우드 리소스를 추가하여 사용하는 기술 . 관리책임 분리 등의 이유로 구축관리는 어려움.
- 멀티클라우드 관리 플랫폼
멀티클라우드(여러 서비스 제공자로부터 퍼블릭 클라우드 병행하여 사용하는 모델)관리하는 플랫폼 제안되고 있음. 
클라우드 컴퓨팅 특징 1. 접속용이성 : 시간 장소 상관없이 인터넷통해,  표준화된 접속을 통해 다양한 기기 서비스이용
2. 유연성 : 갑작스런 이용량 증가, 이용자수 변화 중단없이 유연하게 대응
3. 주문형 셀프서비스 : 이용자는 서비스 제공자와 직접 상호작용 거치지 않고, 자율적으로 자신이 원하는 클라우드 서비스 이용가능
4. 가상화와 분산처리 :  컴퓨팅 리소스의 사용성 최적화, 방대한 작업 분산처리로 시스템 과부화 최소화 
5. 사용량 기반 과금제 : 사용량에대해서만 비용지불