지난 포스팅에서는 클라우드 컴퓨팅이 무엇인지와 특징에 대해서 다루어 보았다. 이번에는 클라우드 컴퓨팅이 사람들에게 제공하는 서비스의 종류와, 어느 상황에서 클라우드 컴퓨팅을 사용하게 되는지에 대해서 알아보자.

 



클라우드 컴퓨팅의 서비스 종류





- IaaS : 

Infrastructure as a Service의 줄임말이다. 여기에서 Infrastructure(인프라)의 의미는 CPU, 메모리 등의 리소스 자체와 응용체제와 같은 기본적인 프로그램만 설치된 상태로 사용자에게 제공하는 것을 말한다.  즉, 클라우드 서비스를 제공하는 업체에서는 해당 리소스만 제공하고, 나머지는 사용자가 알아서 사용해야 하는 것이다.  사용자가 직접 자신이 원하는 환경을 설정해야해서 번거롭다는 단점이 있지만, 그만큼 자신의 환경에 최적화 되도록  환경을 설정할 수 있다는 장점 또한 가지고 있다. 

이것의 예로는 Windows Azure가 있다. 해당 서비스는 Intel CPU에 Windows 운영체제를 함께 제공하는 서비스이다. 



- SaaS : 

Software as a Service의 약자인 SaaS는 리소스를 제공해주는 쪽에서 단순히 CPU, 메모리 뿐아니라,  이 서비스를 직접 사용하는 사람(end User라고 한다.)이 필요한 소프트웨어를 제공해주는 것을 이야기 한다. 여기에서 소프트웨어란 사용자들이 직접 사용할 수 있는 여러 응용 프로그램을 의미한다고 보면 된다. 


- PaaS : 

Platform as a Service로 나머지 2개(SaaS와 IaaS)의 중간이라고 생각하면 쉽다. 그 중간 단계에서는 대부분, 하드웨어 리소스들과 그 위에 OS(운영체제)와 조금 더 부가적인 것들을 올려서 제공해주는 것을 의미한다.  이것에 대한 예로 Google Apps Engine이 있다. 이것은 클라우드 서비스 사용자들에게 리소스 위에 운영체제, 그리고,  Goolge에서 만든 Library를 제공한다. 만약 해당 도구가 자신들의 목적에 부합하다면, 사용자는 시간과 해당 라이브러리를  직접 만들고 수정하는 수고를 줄일 수 있다. 또한, Google 같은 대기업에서 만든 Library이기 때문에, 어느정도 신뢰성이 보장이 된다는 것 또한, 장점이다. 





클라우드 서비스를 이용할 때 고려해야 할 점 

 


항상 클라우드 서비스를 사용하기 전에 고려해야할 몇가지 사항들에 대해서 알아보자 

- 클라우드 서비스를 제공해주는 회사의 조건
(ex > 회사의 보안 문제, 통신 문제 등)

- 클라우드 서비스의 Quality
(ex > 버그등의 불안, 용량확장이 편리한가? 성능이 일정하게 유지될 수 있는가? 등)

- 저작권 문제 
(소프트웨어 라이센스, 법적인 요소들)





클라우드 서비스는 언제 사용해야 할까?



그렇다면, 항상 클라우드 컴퓨팅을 사용하는 것이 맞는 걸일까? (사실 소규모의 팀에서는 클라우드 서비스를 사용하는 것이 일반적이기는 하다.) 클라우드 서비스를 사용하기 전에 제공하려는 서비스에 따라서 직접 장비를 구비하여 서비스를 제공하는 On-Premises 방식과 CloudComputing 방식 사이에서 선택해야 한다. 


<On-Premises 방식을 사용하는 경우>


클라우드 서비스를 제공하는 업체의 보안이 불안하거나, 제공하는 보안보다 더 강도 높은 보안이 필요한 경우
혹은 사용자가 원하는 환경을 제공하는 클라우드 서비스가 존재하지 않는 경우에는 이 방법을 사용하는 방법 밖에 없다.  하지만, 여러가지를 직접 설정해야 하는 번거로운 문제가 있고, 고려할 요소가 굉장히 많아지게 된다. 


<Cloud Computing을 사용하는 경우>


해당 환경을 구축하는 것보다, 빠른 시일 내에 높은 수준의 Service를 제공하는데에 초점이 맞춰져 있는경우, 이미 구축되어 있는 환경을 이용하기 위해 클라우드 서비스를 이용하는 경우가 많다. 

 




Infrastructure as Code (IaC)


이것은 현재 많이 거론되는 도커(Docker)와 쿠버네티스(Kubernetes)의 기반철학이다.  이것이 의미하는 바는 "일반 코드처럼 CPU, Disk, Network... 등도 사용자가 작성한 코드대로 제공된다는 것이다. 

예를 들어, 프로그램 개발자가 '나는 CPU 100개가 필요해'라는 코드를 프로그램에 입력하게 된다면, 해당 서비스를 제공하는  회사의 데이터 센터에서 즉각적으로 개발자의 요구를 충족시켜 줄 수 있게 되었다는 것이다.

사람의 개입 없이 자동화된 형태로 필요할 때 필요한만큼 사양은 사용자의 요구대로 맞출수 있게 된다는 말이다.  이것은 단순히 개인이 비용을 지불한다면 많은 서버를 운영할 수 있구나!를 넘어서서 

소프트웨어의 전반적인 설계, 개발에 대한 관점을 바꾸고, 소프트웨어의 배포 방식 또한 완전히 바꿀 수 있는 엄청난 변화이다. 

 



IaC의 장점 

 

- Speed & Simple (빠르고 간결하게)
사람과 사람과의 대화를 통해서 서비스가 이루어지는 것이 아니라 코드를 통해서 이루어지기 때문에, 
원하는 때에 원하는 만큼 바로바로 서비스를 제공받을 수 있다.
 
- Configuration Consistency (설정의 일관성) 
엄청나게 많은 하드웨어 리소스, Middleware, Application을 제공받더라도, 동일한 환경을 가진 
리소스를 제공받는다. 

- Minimize Risk (위험의 최소화)
정확하게 수요만큼의 리소스를 제공받을 수 있고, 해당 리소스가 필요 없어지면 바로 반환할 수 있으므로,
서비스를 제공하는 입장에서는 최소한의 비용을 들여 자신의 프로그램을 유지할 수 있다. 

728x90
반응형

'컴퓨터 공학 > 클라우드 컴퓨팅' 카테고리의 다른 글

클라우드 컴퓨팅이란?  (0) 2020.09.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기