클라우드 컴퓨팅이란?

- 내 장치가 아닌 다른 제3의 공간인 클라우드에서 원하는 기능을 제공받는 것.
- 제3의 공간은 중앙집중화된 대형 데이터센터+관리 소프트웨어로 이루어져 있다.
- 이러한 기능은 IaaS, PaaS, SaaS 등이 있다.
- 이러한 기능들을 구매하거나 소유하지 않고, 필요한 만큼 사용료를 주고 쓰는 것.


WEB+DB 서버를 구축하는데 클라우드가 아닌, 직접 모두 구매해서 사용한다면?

이렇게 자체적으로 직접 하드웨어와 소프트웨어를 구축하는 방식을 온프레미스(On-premise 라고 한다. 클라우드가 아니므로, 모든 인프라 요소 (서버,스토리지,네트워크장비,케이블,공간,보안,공조,운영체제,미들웨어,유지보수) 등을 직접 해야한다. 이러한 내용을 나열해본다면 다음과 같을 것이다.

 

먼저 계획을 해야한다. 시스템 구축의 범위, 인프라에서 요구하는 사항들 정리, 예산 책정, 프로젝트 구체화, 기존 시스템 연계성 확인등을 수행하고, 이후 인프라를 설계한다. 인프라 아키텍쳐, 네트워크 토폴로지 설계, 장비(서버,스토리지,네트워크장치,케이블 등) 선택 및 조달, 운영체제 및 미들웨어 선택, 데이터센터 대여 또는 회사 내 서버실 구축(공조,보안,쿨링,소화설비등), 시스템 운용 설계 등을 수행한다. 이제 실제로 인프라를 구축한다. 네트워크 부설, 서버 설치, 운영체제 설치, 미들웨어 설치, 애플리케이션과 라이브러리 등의 환경 구축, 정상화 테스트 등. 모두 완료되면 이후에는 자원 모니터링, 데이터 정기 백업 및 하드웨어 유지보수(펌웨어 및 드라이버 업데이트), 운영체제 및 소프트웨어 유지보수(버전 업그레이드), 시스템 장애 대응, 사용자 문제 서포트 (헬프데스크) 등등등등 뭔가 할게 엄청나게 많다.


클라우드의 기능상 구분

IaaS (Infrsatructure as a Service)

– CPU, Memory, Storage, Network, IP, 등의 인프라 자원을 제공 
– 예시 : 상용 IaaS : AWS (AWS S3 스토리지), GCP, Azure 등 / 오픈소스 IaaS : 오픈스택 등 (오픈스택 SWIFT 스토리지)

 

SaaS (Software as A Service)

– 클라우드로 별도의 전용 소프트웨어를 제공. 사용자는 어플리케이션을 자신의 장비에 깔지 않아도 사용 가능. 즉 장비 사양을 무시할 수 있다. 클라우드 환경에서 동작하는 모든 어플리케이션을 SaaS라고 할 수 있다. 
– 예시 : 오피스365, 구글독스, 네이버 클라우드, 레드햇교육서버제공, 드랍박스나 원드라이브 , ERP 프로그램, 엔비디아 게임서비스 등

 

PaaS (Platform as a Service)

– 서비스를 개발할 수 있는 안정적인 환경과 그 환경을 이용하는 응용프로그램을 개발할 수 있는 API까지 제공. SaaS 개념을 개발 플랫폼으로 확장한 것으로 이해할 수 있다.
– 웹사이트를 구축하기 위해서 개발자는 DB서버와 웹서버가 있어야 한다. 이런것들은 개발자가 하는 게 아닌 인프라 엔지니어가 수행하는데, 그럴 필요 없이 개발자가 클라우드로 제공받는 것이다.
– 예시 : 클라우드에 올라간 대부분의 개발 소프트웨어/미들웨어. apache, DB 등. 또한 참조하는 API 서비스도 PaaS의 일부이다.

 

# 참고 : 미들웨어 종류
– 웹서버 : nginx, apache, apache tomkat 등
– 데이터 메시지 서버 : RabbitMQ, PostgreSQL, redis, mongoDB, mysql 등
– 웹 프레임워크 : django, mojollcious, spring, catalyst, Flask, Pyramid 등
– 개발 언어 : ActivePerl, java, ruby, nodejs, scala, php, python 등

 

# 참고 : PaaS 와 SaaS 구분
– PaaS와 SaaS의 개념은 어떻게 보면 비슷해 보인다. 
– 이러한 차이는 개발자(운영자)로서 또는 일반 사용자로서 클라우드에 소프트웨어를 사용하는지의 차이이다.


클라우드의 범위상 구분 

Public (공용 클라우드)
– 인터넷을 통해 클라우드 제공업체를 통해 클라우드 서비스를 제공받음. (AWS, Azure, GCP 등)

 

# 참고 : 멀티클라우드
– 공용 클라우드 업체가 많은데 각 업체의 강점을 적재적소에 활용하여 여러 공용 클라우드를 사용하는 것 (예를들어 기간 시스템은 AWS 가 적합하고 머신러닝은 GCP가 더 적합하다)

 

private (사설 클라우드)
– 외부서비스 목적이 아닌 사내에서 온프레미스를 구축하고 그것을 클라우드화한다. 보안을 확보하기 쉽고 독자적인 기능과 서비스를 추가하기 좋다.
– 직접 구축하므로 오픈소스를 사용하는 경우가 많다. 오픈스택 등

hybrid (하이브리드 클라우드)
– 공용과 사설 클라우드가 혼재하는 것. 예를 들어 금융권에서 인터넷뱅킹은 공용 클라우드로, 그외 내부에서 도는건 사설 클라우드로 운영하는 것
– 두 종류의 클라우드를 관리하기 위해 하이브리드 클라우드 관리 시스템이 필요하다. 이러한 시스템을 통해 공용이든 사설이든 인스턴스를 자유자재로 이동시킬 수도 있다.


클라우드의 장점

- 속도가 빠르다. 필요한 자원 및 어플리케이션을 적재적소에 빠른 시간에 배포할 수 있음. 
- 자원관리가 용이하다. 온프레미스는 필연적으로 자원이 낭비되거나 부족한데, 클라우드는 필요한 만큼 적절하게 자원을 사용하고 부족하거나 남는 경우 유동적으로 자원을 늘리고 줄일 수 있다. 
- 운영관리가 편하다. 운영 표준화를 스크립트나 템플릿으로 만들어 GIT 등으로 관리를 자동화하고 비효율적인 부수작업 (변경관리,버전관리, 패치검토,서버실관리,출입관리,환경관리 등)이 줄어든다. 
- 유지보수 부담이 적다. 복잡한 유지보수 (펌웨어 업데이트 등) 및 장애 유지보수 (부품수급, 교체작업 등) 를 신경 쓸 필요가 없고, 사람의 터치가 적어 실수 발생 가능성이 적고, 해당 유지보수를 위한 기술을 배울 필요가 없음. 
- 비용이 절감된다. 데이터 센터 대여(또는 공간 및 항온항습 유지), 하드웨어 및 소프트웨어 유지보수 계약, 관리자 인건비 등의 모든 비용들을 절감 
- 가용성이 확보된다. 클러스터 형식으로 높은 가용성을 제공


클라우드 사용 적합성 판단 

클라우드가 적합한 경우
– 자원 트래픽 변동을 예측하기 어려운 시스템 (AUTO SCALE 기능) 
– Disaster Recovery (DR) 
– 빠른 서비스 제공이 필요한 경우. (온프레미스는 구축이 오래걸림) 

온프레미스가 적합한 경우
– 높은 가용성이 필요한 경우. 클라우드 업체가 제공하는 가용성보다 더 확실하게 가용성을 보장하는 환경을 직접 만드는 경우. 
– 기밀성이 높은 데이터를 사용하는 경우. 
– 특수한 요구사항 (범용적이지 않은 장치, 특수한 플랫폼)

+ Recent posts