- toc {:toc}
Cloud Computing
-
클라우드 컴퓨팅의 탄생 배경
-
AWS에서 온라인 쇼핑몰을 위한 퍼블릭 클라우드로 방대한 리소스를 보유하고 사용하나, 쇼핑을 많이 하지 않는 시간대의 경우 노는 리소스들이 많았다. 이를 활용하는 방식으로 가상 서버를 임대하는 방식을 생각해냈고, 이를 통해 클라우드 컴퓨팅이 탄생했다.
-
제공하는 자의 입장에서는 사용하지 않는 리소스를 통해 수익을 얻을 수 있다.
-
나사 - 클라우드 기술을 만들어서 오픈소스로 공개한 이유? → 컴퓨터가 필요하지만 예산은 적고, 결국 컴퓨터를 빌려 사용하기 위함.
-
클라우드 컴퓨팅(Cloud Computing) : 어딘가에 있는 CPU, 디스크, 네트워크를 필요한 만큼 대가를 지불하여 사용하고, 반납할 수 있는 형태의 기술
- 누군가가 대규모로 하드웨어, 소프트웨어를 가지고 있고, 해당 하드웨어를 통신을 통해 접근한다.
- 사용자들은 어떤 곳에 하드웨어가 위치하고 있는지 알 필요가 없다.
- 필요할 때 즉각 요청할 수 있고 가능한 한 빠르게 제공한다. (On-demand)
- 다른 사람들과 공유해서 사용한다. (Shared Pool)
-
클라우드 컴퓨팅의 두 분류
- 인터넷에 대한 서비스를 사용한다.
- 내가 사용하는 하드웨어와 소프트웨어들을 사용한다.
- 3가지 측면
- 필요한 만큼 요청을 하면 대부분 수용할 수 있다.
- 사용하지 않으면 비용을 지불할 필요 없다.
- 사용한 만큼만 비용을 지불하면 된다.
Public Cloud
-
구글, 아마존과 같이 대형 기업의 데이터 센터의 클라우드를 빌려 사용하는 형태를 말한다.
-
장점
- 구글, 아마존 같이 대기업의 경우 큰 데이터 센터를 지니고 있기 때문에 제한 없이 빌려 사용해 필요할 때 필요한 만큼 사용할 수 있다.
- 클라우드 사용자의 입장에서 유지 보수 비용이 필요하지 않는다.
- 개인마다 하나씩 컴퓨터를 사용하는 것이 아닌, 한 곳에 하드웨어를 모아둠으로써 공유하면서 사용할 수 있다.
- 리소스 가상화를 통해 이용성을 증가시킬 수 있다.
- 리눅스 운영체제 장치 1만 대가 있고 윈도우 100대가 필요한 경우 굳이 윈도우 100대를 만들 필요 없이 리눅스 운영체제 위에 윈도우를 올린 100대 이상을 제공하여 사용한다.
-
결론
- 하나의 공통된 환경을 통해 운영, 장비 관리, 효율적인 측면에서 장점이 되기 때문에 Public Cloud를 구성한다.
-
클라우드 컴퓨팅 고려사항
- 고려해야 할 조건
- 시간에 따라 필요한 서비스는 달라진다.
- 미리 필요한 만큼을 정확히 알 수 없다.
- 컴퓨터 한 대를 1000시간을 두는 것이 맞는지, 1000대의 컴퓨터를 1시간 사용하는 것이 좋은지를 고려해봐야 한다.
- 고려해야 할 조건
-
클라우드 컴퓨팅 특징
- On-Demand Self-Service : 필요로 할 때 사람의 개입없이 자동적으로 자원을 사용할 수 있다.
- Broad Network Access : 기본적인 장치들로 네트워크 통신을 통해 접근할 수 있다.
- Resource Pooling : 굉장히 큰 자원을 필요한 만큼 사용하면서 함께 리소스를 사용한다.
- Rapidly Elasticity : 수요에 따라 리소스를 언제나 제한되지 않는 양을 자동적으로 빠르게 제공한다.
- Measured Service : 자원을 사용을 자동으로 모니터링, 컨트롤, 리포트한다.
-
클라우드 컴퓨팅 서비스 제공 종류
- Physical Hardware
- EC2(Elastic Computing). 하드웨어를 사용하거나 운영체제 정도까지만 사용하는 경우
- Application
- Google AppEngine과 같이 API같은 기업마다의 각각의 차별화된 서비스를 제공한다.
- Physical Hardware
클라우드 컴퓨팅 서비스 모델
-
Software as a Service (SaaS)
- SaaS : 소프트웨어를 필요할 때 필요한 만큼 제공한다.
- 개발자가 아닌 사용자의 입장에서 Gmail, 구글 독스, 유튜브 등 소프트웨어를 필요할 때 비용을 제공하고 이용하거나 광고를 보고 사용하는 방식으로 사용한다.
- 사용자는 네트워크, 서버, 운영체제, 스토리지 등이 무엇인지 전혀 다룰 필요가 없다.
-
Platform as a Service (PaaS)
- 개발자가 CPU, 디스크, 운영체제 외의 API, 플랫폼을 사용하여 보다 더 쉬운 개발을 하고 싶은 상황.
- Google Apps Engine과 같이 클라우드 제공자에 의해 라이브러리, 툴들이 제공되는 플랫폼을 서비스로 제공하는 형태
- 개발, 배포하고자 하는 어플에 대한 설정만 다루고 네트워크, 서버, 운영체제 등은 다루지 않는다.
- ex) Container as a Service(도커, 쿠버네티스), Function as a Service(AWS 람다, 구글 클라우드 플랫폼), BigData processing(하둡)
-
Infrastructure as a Service (IaaS)
- 기초적인 컴퓨팅 자원을 제공하고 스스로 제어해서 사용하는 방식.
- ex) Amazon EC2, Amazon S3, Windows Azure
- 네트워크, 스토리지와 같은 기본적인 컴퓨팅 리소스들을 제공 받고 사용자는 원하는 소프트웨어를 개발한다.
- 가상화를 사용하여 호스트 OS 위에 사용자가 원하는 가상화 OS를 올려 제공하는 경우가 대부분이기 때문에 사용자는 근본적인 클라우드 인프라구조(호스트 OS 등)에 대해서는 다루지 않는다.
- 사용자는 근본적인 인프라구조 위의 운영체제, 스토리지, 개발 프로그램 등에 대해 다룬다.
클라우드 컴퓨팅 배포 모델
-
Private Cloud
- 클라우드를 다수의 사용자들로 구성된 조직이 소유하고 조직 내에서 사용하는 형태.
- ex) 삼성에서 클라우드를 만들어서 조직원들에게 제공하는 형태
- 조직에 의해 소유, 관리, 작동된다.
-
Community Cloud
- Private Cloud를 통해 작업을 하다가도 소유한 클라우드의 리소스를 뛰어넘는 리소스를 사용해야 할 경우가 있다.
- 공동의 관심사를 가진 신뢰할 수 있는 조직끼리 합친 클라우드를 만들어 사용하는 형태.
- 서로 대가를 지불하지 않는 경우가 일반적이다.
- ex) 관공서, 국가 클라우드 센터.
-
Public Cloud
- 구글, 아마존과 같이 제 3자의 클라우드를 빌려 쓰고 대가를 지불한다.
-
Hybrid Cloud
- Private, Public의 중간의 경우.
- 대학의 경우
- 수강신청 기간에 보유 리소스보다 더 많은 리소스가 필요.
- 보유 클라우드 + 외부 클라우드 사용.
- 즉, Private와 Public 클라우드가 함께 사용되는 것을 말한다.
Issue
- Security
- Reliability
- Privacy
- Legal
- Migration from legacy systems
- Disaster recovery