본문으로 바로가기

클라우드 컴퓨팅과 API의 역할

category 인프라/클라우드 2020. 1. 28. 10:13

 글에 앞서

 앞으로 '그림으로 배우는 클라우드 인프라와 API 구조' 라는 책을 정리하며 글을 포스팅할 예정입니다.

 전 인턴 동료인 LSG에게 추천 받은 책인데 정말 좋더라구요, 여러분들께도 꼭 추천드리는 책이예요.

 

 관련 포스팅

 (추후 추가 예정)

 

1.1 클라우드 컴퓨팅

1.1.1 ) 클라우드 컴퓨팅의 탄생

- '06년 Google의 전 CEO, 에릭슈미트가 '클라우드 컴퓨팅'이라는 단어를 처음 사용했다고 알려져 있다.

- 인터넷 기반으로 한 각종 서비스를 '클라우드 컴퓨팅'이라 부른다.

 

정리 : 인터넷을 통해 필요한 IT 자원을 즉시 사용할 수 있는 환경을 바탕으로 클라우드 컴퓨팅을 실현하였으며, 이 중심에는 API가 있다.

 

1.1.2 ) 공용 클라우드와 사설 클라우드의 차이

사설클라우드(private cloud) : 특정 기업 내부에서 사용하는 기업 자체의 전용 클라우드 환경

  1. 해당 기업의 사용자만 접근할 수 있도록 통제
  2. 공간 임대료 발생하지 X (회사에서 부담)
  3. 전기 사용료는 회사 부담
  4. 상품 가격이 시중에 비해 상대적으로 싸다
  5. 하드웨어를 추가 증설할 때마다 단계적 비용 증가

공용클라우드(public cloud) : 여러 (기업의) 사용자가 함께 사용할 수 있는 클라우드

  1. '멀티 테넌트(multi-tenant)' : 겉으로는 자신만 사용하는 클라우드로 보이지만, 여러 다른 사용자도 자신만의 격리된 공간에서 같은 클라우드 환경을 사용
  2. 상대적으로 비싸다는 단점 -> 이 부분은 여러가지 부분을 고려하면 애매하다...
  3. 리소스 사용량에 따른 과금 (비용이 선형적)

선택기준

  1. 일정 규모로 리소스가 활용될 것이라고 예측된다면 : 사설 클라우드
  2. 리소스의 총량에 큰 변화가 예상되거나 수요 추이를 예측하기 어렵다면 : 공용 클라우드

1.1.3 ) IaaS, PaaS, SaaS 의 차이점

- 사용자에게 제공하는 IT 자원의 차이

(= SaaS/PaaS는 인프라가 반드시 가상화 되어 있지 않아도 된다. / IaaS는 테넌트별로 인프라 기능이 제공되며, 가상화된 인프라가 필요)

(IaaS 위에 PaaS가, PaaS 위에 SaaS가 만들어지는 것이 아니라는 것에 주의)

 

IaaS (Infrastructure as a Service)

- 시스템 인프라 (서버, 네트워크, 스토리지, OS)

- 가상화 된 인프라 제공

- 관리자가 시스템을 구축하거나 운영할 수 있는 환경

- 클라우드에서 제공되는 리소스가 물리적 환경과는 독립된 형태로 가상화되어 있다.

PaaS (Platform as a Service)

- 개발 및 운영 환경 제공 (미들웨어, 프레임워크)

- 개발자가 애플리케이션을 개발할 수 있는 환경

SaaS (Software as a Service)

- 애플리케이션 환경 제공

- 최종 사용자가 바로 사용한 애플리케이션이나 서비스 (CRM(Customer Relationship Management), 개인용 이메일 서비스)

 

- 클라우드 서비스는 SaaS 형태의 서비스에서 시작

- ASP(Application Service Provider)라는 이름으로 제공되다가 마케팅 전략으로 '클라우드 서비스'라고 불리게 됨

 

1.2 클라우드가 실현하는 인프라의 표준화

1.2.1 ) 클라우드에 의한 시스템 구축 절차의 표준화

- 장비를 도입할 때는 시스템의 규모에 맞춰 적절한 기능과 성능을 충족하도록 장비의 사양을 선택하는 과정이 선행

  • 오래된 기종은 기술 지원이 중단되거나 판매 중지가 될 수도 있다.
  • 하드웨어 벤더의 제품 판매 상황이나 최신 기종의 기능 및 성능을 검토

- 카탈로그를 이용해 제품을 비교

- 신제품 설명회를 참석

- 기능, 성능에 대한 PoC 수행 (+ 해당 제품의 전문가를 불러 사전 기술 검토)

 

- 서비스 형태로 표준화되고 추상화된 리소스를 활용해서 물리장비에 상관없이 같은 설계서, 작업 절차를 바탕으로 시스템 구축이 가능

 

1.2.2) 인프라의 표준화를 위한 컴포넌트의 추상화

- 시스템 구축 과정을 표준화할 수 있는 것은 시스템을 구성하는 컴포넌트들이 추상화되어 있기 때문

- 물리적인 환경에 의존적인 내용은 신경을 덜 쓰며, 시스템을 구성하기 위해 근본적으로 필요한 것이 무엇인지 좀 더 본질적인 고민과 설계에 집중할 수 있다.

- 클라우드 사용자는 서버 사양에 세부적인 수치에 집착하지 말고 시스템의 사용 목적이 무엇인지 좀 더 집중해야 한다.

 

1.2.3) API에 의한 제어 방법의 표준화

- IaaS형 클라우드에서는 추상화된 논리적인 컴포넌트들을 조함함으로써 표준화된 절차에 따라 시스템 구축 가능

- 클라우드 장점은 같은 시스템을 구축할 때 자동화를 하고 싶다. (쉐프(Chef), 퍼펫(Puppet), 엔서블(Ansible) :  구성관리 툴 사용)

- API를 사용한 제어 방식

  1. 웹 콘솔(GUI)를 통한 제어
  2. 클라이언트 툴이 제공하는 명령을 실행하여 제어
  3. 직접 개발한 프로그램이 클라우드 API 라이브러리를 활용해서 제어
  4. 클라우드 환경의 자동화 툴을 사용해서 제어

※ API(Application Program Interface) : 프로그램과 프로그램이 서로 명령을 주고 받기 위해 미리 약속해둔 일종의 규칙

 

웹 콘솔에서 API를 통해 관리 서버 제어하기

 

 

프로그램에서 API를 통해 클라우드 관리 서버 제어하기

1.3 클라우드 컴퓨팅의 활용

1.3.1 ) API 관련 기본개념 정리

- 클라우드 API는 각 클라우드의 단위 기능들과 연결됨

- API 목록이 곧 클라우드 기능 목록

  (추후에 EKS 관련 API를 보고 실습하는 글을 올릴 예정입니다.)

- 웹 콘솔에서는 모든 API를 사용하는 것은 아니다.

 

1.3.2) 정리

- 클라우드의 큰 장점은 시스템이 물리적인 환경을 의식하지 않고도 인프라 자원을 사용할 수 있는 점

- DR (Disaster Recovery)를 구축해 서로 다른 데이턴 센터에 가상 머신을 분산 배치하여 위험에 대비할 수 있다.

- 오픈스택(OpenStack)은 오픈소스이기 때문에 내부 구조가 모두 공개되어 있으므로 내부 동작을 추측하고 분석하면 클라우드를 보다 잘 홀용할 수 있다.


댓글을 달아 주세요