이번달 부터 Cloud, Docker, k8s에 데하여 공부를 해보려고 합니다.. 첫 글이에요!
Cloud Computing 개요
클라우드는 인프라에 사용되는 서버, 저장소, DB, 네트워크, SW, Data 분석등 사용자가 언제든지 인터넷, 모바일등을 통해 IT서비스를 제공받을수 있는 컴퓨팅 기술입니다.
Agile 방법론을 통해 민첩 서비스 도입 & 탄력적인 확장, 축소, 자동화된 서비스 유지관리를 통해 운영비용을 낮추고, 비즈니스 요구사항에 변화를 빠르게 적용할 수 있는 환경을 제공한다는 것이 특징입니다.
What is Cloud Computing?
미국의 정보기술 연구 & 자문회사 Gartner(가트너)는 클라우드 컴퓨팅 기술을 다음과 같이 정의 했습니다.
인터넷 기술을 이용해서 다수의 사용자에게 하나의 서비스로서 방대한 IT 능력을 제공하는 컴퓨팅 방식.
(A style of computing in which massively scalable IT-enabled capabilities are delivered as a service to multiple customer using internet technologies)
그러면 클라우드는 신기술일까요? 한번 클라우드가 어떠한 컴퓨팅 모델을 근간으로 하는지 한번 알아보겠습니다.
시작은 바로 유틸리티 컴퓨팅(utility computing)입니다. 이것은 기업 내의 IT 부서나 외부의 서비스 제공자(provider)가 고객에게 컴퓨팅에 사용되는 여러 자원과 기반 시설 등의 관리를 제공하는 형태로, 정확히 사용량에 따라 요금을 부과하는 종량제 방식입니다.
쉽게 생각해서 우리가 전기나 수도 요금을 사용한 만큼만 지불하는 방식으로, IT 서비스의 각 요소를 유틸리티(도구로) 인식하는 것입니다.
이 기술의 주요 기능으로는 클러스터(cluster), 가상화(virtualization), 분할(partitioning), 프로비저닝(provisioning), 자율 컴퓨팅(autonomic computing), 그리고 컴퓨팅 그리드(grid computing) 등이 있습니다. 이러한 기능의 특징은 자원 활용의 효율성을 높이고 관련 비용을 최소화하는 것입니다.
‘클라우드 컴퓨팅’ = 그리드 컴퓨팅 + 유틸리티 컴퓨팅
기술 기반 | 설명 |
그리드 컴퓨팅 | 가상 네트워크를 이용하여 분산된 컴퓨팅 자원을 공유하도록 하는 기술 방식(인터넷의 유휴 자원을 활용) |
유틸리티 컴퓨팅 | 다양한 컴퓨팅 자원에 대한 사용량에 따라 요금을 부과하는 종량제 방식의 기술 기반으로, 필요할 때 가져다 쓴다는 온-디맨드(on-demand) 컴퓨팅 방식(기업 중심의 서비스) |
클라우드 컴퓨팅 | 기술적으로는 그리드 컴퓨팅을 따르며, 비용적으로는 유틸리티 컴퓨팅을 혼합한 포괄적인 패러다임이다. 위의 차이점은 다음과 같다. - 기업과 개인이 모두 사용 가능한 서비스 - 클라우드 서비스를 제공하는 사업자의 컴퓨팅 자원 이용 |
클라우드 컴퓨팅은 다음과 같은 특징을 가집니다.
- 주문형 셀프서비스(on-demand self-service): 고객이 IT 서비스 제공자의 개입 없이 원하는 시점에 바로 서비스를 사용할 수 있음.
- 광대역 네트워크 접근(broad network access): 각 클라우드 서비스 업체(Cloud Service Provider, CSP)가 제공하는 광대역 네트워크를 이용하여 다양한 클라이언트 플랫폼이 빠르게 접속할 수 있다.
- 신속한 탄력성 및 확장성(rapid elasticity and scalability): 자동 조정(auto-scaling) 기능을 통해 몇 분 안에 신속한 확장과 축소를 조정할 수 있다.
- 자원의 공동관리(resource pooling): 물리적 및 가상화된 자원을 풀(pool)로 관리하며, 탄력적으로 (업무 상황에 맞게) 사용자의 요구에 따라 동적으로 할당 또는 재할당된다.
- 측정 가능한 서비스(measured service): 자원 사용량이 실시간으로 수집되는 요금산정(metering) 기능을 통해 비용이 발생한다.
이와 같은 특징을 갖는 클라우드 컴퓨팅을 도입함으로써 기업 및 사용자(고객) 요구사항에 최적화된 클라우드 환경을 만들 수 있습니다.
이를 위해서는 일반적인 클라우드 컴퓨팅 구조와 제공되는 서비스 방식에 대한 이해가 선행되어야 합니다.
Cloud Computing 구조
클라우드 컴퓨팅 구조(cloud computing architecture)는 최하위 계층으로 자원 활용과 관련된 물리적 시스템 계층, 가상화 계층, 프로비저닝 계층이 있고, 클라우드 서비스와 관련된 클라우드 서비스 관리 계층, 클라우드 서비스 계층으로 구분합니다.
그 위로는 사용자와 관련된 클라우드 접속 계층과 사용자 역할에 따른 연결성 구분을 설정할 수 있습니다.
클라우드 컴퓨팅의 물리적 시스템 계층은 여러 형태의 서버 계열을 활용하여 서버에 탑재된 수평적으로 확장 가능한 스토리지 및 네트워크 등의 물리적 요소를 의미합니다.
이를 기반으로 서버, 스토리지, 네트워크 가상화는 클라우드의 주요 이점 중 하나인 민첩성(agility)을 제공하고, 이를 통해 IT 서비스 공급자는 클라우드 서버 프로비저닝 또는 프로비저닝 해제를 신속히 수행하여 서비스 사용자들의 요구를 충족하게 됩니다.
클라우드 컴퓨팅 서비스 관리 계층은 물리적 시스템 계층에서 제공되는 자원에 대한 전반적인 라이프사이클 관리와 모니터링을 지원합니다. 따라서 안정적인 클라우드 서비스를 위한 성능 및 고가용성, 소프트웨어 라이선스와 패치 관리, 사용량 요금 산정을 통한 과금 관리, 기본적인 클라우드 보안 관리 요소가 결합되어 있습니다.
Cloud Computing 방식 제공 & Cloud Service 종류
온프레미스
클라우드 개념이 도입되기 전에는 대부분의 기업이 자체 데이터 및 솔루션 등을 저장하기 위해 자사에 데이터 센터를 구축하여 IT 서비스를 수행했는데, 이를 온프레미스(on-premise)라고 합니다.
하지만 이 방식은 하드웨어부터 모든 자원(CPU, 메모리, 디스크, OS, 네트워크, 라이선스 등)에 대한 초기 투자 비용과 탄력적이지 않은 제한된 용량으로 인해 지속적 관리 비용이 증가하는 단점이 있습니다. 물론, 기업에 내재화된 서비스를 통해 품질 및 보안에 대한 신뢰도는 높이 평가됩니다.
최근 많은 기업이 온프레미스 방식에서 벗어나 클라우드 서비스 전환을 고민하고 있습니다. 그 이유는 높은 초기 도입 비용과 운영에 따른 추가 비용 때문입니다. 온프레미스 방식으로 설계 시 자원 사용량은 가급적 최대 사용량을 근거로 하고, 네트워크 트래픽 또한 최대 순간 트래픽(peak traffic)을 가정하기 때문에 고비용의 설계를 하게 됩니다. 또한, 증설에 따른 시간적, 인적 비용도 무시할 수 없습니다.
따라서 많은 경우 어느 시점부터는 클라우드 비용이 더 저렴할 수 있습니다. 클라우드 도입은 비용 측면보다는 서비스의 가용성과 품질을 높여서 기업의 이익을 높일 수 있다는 장점이 있습니다.
Public Cloud
퍼블릭 클라우드(public cloud 또는 external cloud) 방식은 인터넷을 통해 다수의 사용자에게 서버 및 스토리지 등의 클라우드 자원을 AWS, GCP, Azure와 같은 클라우드 서비스 공급자로부터 제공받는 방식입니다.
앞서 언급한 유틸리티 컴퓨팅 방식으로서 사용량에 따라 비용을 지불하는 요금산정 방식을 사용합니다.
사용자가 다수인 퍼블릭 클라우드는 IaaS, PaaS, SaaS의 대표적인 서비스 형태로 제공된다는 특징이 있습니다.
Private Cloud
프라이빗 클라우드(private cloud 또는 internal cloud) 방식은 제한된 네트워크에서 특정 사용자나 기업만을 대상으로 하는 클라우드 서비스 방식으로, 클라우드 자원과 데이터는 기업 내부에 저장되고 유지 관리에 대한 책임 또한 기업이 갖습니다. 인터넷이 아닌 인트라넷(intranet) 방식으로 서비스에 접근해 보안성이 높습니다.
Hybrid Cloud
하이브리드 클라우드(hybrid cloud) 방식은 퍼블릭 클라우드와 프라이빗 클라우드를 네트워크를 통해 결합하여 두 가지 서비스의 장점을 활용할 수 있도록 만든 클라우드 서비스 방식 입니다.
서로 다른 클라우드 간의 데이터와 애플리케이션의 공유 및 이동이 유연하게 처리되며, 특정한 용도에 맞는 서비스를 구현합니다. 최근에는 퍼블릭과 프라이빗 클라우드의 결합 형태로 사용됩니다.
Cloud Service의 종류
클라우드 서비스는 언제 어디서나 별도의 소프트웨어를 설치하지 않고 인터넷 접속을 통해 저장해 놓은 데이터에 접근하여 사용할 수 있는 서비스입니다.
사용자는 이러한 데이터를 간단한 조작 & 클릭 만으로도 쉽게 공유 및 전달 할 수 있습니다. 또한 동시에 여러 사용자가 자료를 공유하면서 작업을 진행 할 수도 있습니다. 대표적으로는 IaaS, PaaS, SaaS 등이 있으며, 각 서비스는 하드웨어 자원부터 애플리케이션까지 다양한 범위에서 제공됩니다.
위의 그림은 대표적인 클라우드 서비스 입니다다. 서비스 별로 묶여 있는건 클라우드에서 제공하는 것을 의미합니다.
예를 들어 laaS에서는 하드웨어와 가상화를 클라우드에서 제공하고 나머지는 관리자, 개발자에게 직접 제공합니다.
서비스로서의 인프라스트럭처 (Infrastructure as a Service, IaaS)
서버, 스토리지, 네트워크와 같은 인프라 하드웨어 자원을 가상화하여 사용자 요구에 따라 인프라 자원을 사용할 수 있게 제공하는 클라우드 서비스 방식입니다. IaaS는 자동화되고 신속한 확장성을 갖고 있는 IT 인프라를 의미하며, 비용은 사용량에 따라 지불하는 방식입니다.
대표적으로 국내의 KT, LG U+ 등의 서비스와 외국의 AWS(아마존), GCP(구글), Azure(마이크로소프트), 오라클 클라우드 플랫폼 등에서 IaaS를 제공합니다.
서비스로서의 인프라스트럭처의 개념도 중요하지만, 물리적으로 인프라에 사용되는 각각의 자원(CPU, 메모리, 디스크, 네트워크 등)의 특징에 대한 지식이 유지관리 차원에서 반드시 필요합니다. 서버 관리자가 아니라면 실제 정확한 지식이 부족할 것입니다.
예로, 기존의 온프레미스를 AWS로 이관하는 작업을 수행하는 과정 중 AWS 네트워크 subnet 구성이 필요할 수 있습니다. 이때 subnet이라는 네트워크 기능이 정확히 무엇인지 모른다면 아무리 잘 만들어진 AWS를 사용하더라도 정확하고 정교한 설정에 어려움을 겪게 될 것입니다.
서비스로서의 플랫폼 (Platform as a Service, PaaS)
서비스 개발자가 애플리케이션 개발, 실행, 관리 등을 할 수 있도록 안정적인 플랫폼(환경) 또는 프레임워크를 제공하는 클라우드 서비스 방식입니다. 따라서 개발자가 서비스 개발을 위한 복잡한 설치 과정이나 환경 설정을 하지 않고 완성된 개발 소스만 제공하면 바로 서비스를 올릴 수 있는 플랫폼 서비스를 말합니다. 대표적으로 네이버 클라우드 플랫폼과 IaaS를 제공하는 AWS, GCP, Azure 등의 대표적인 클라우드 공급자가 있습니다.
서비스로서의 소프트웨어 (Software as a Service, SaaS)
소프트웨어의 사용자가 자신의 컴퓨터에 소프트웨어를 설치하지 않고 인터넷을 통해 클라우드에 접속하여 클라우드 기반 소프트웨어의 기능을 사용할 수 있게 해주는 클라우드 서비스 방식입니다. 소프트웨어 버전업, 패치, 재설치 등의 작업 없이도 해당 기능을 사용할 수 있습니다. 대표적으로 이메일, CRM(Customer Relationship Management) 소프트웨어, 구글(Google) 앱 서비스 등이 있습니다.
'☁️ Cloud' 카테고리의 다른 글
[Cloud] Docker Installation Check (도커 설치 확인) (0) | 2024.10.11 |
---|---|
[Cloud] Ubuntu에 Docker Community Edition (CE) 설치 (0) | 2024.10.08 |
[Cloud] Docker Install (도커 설치 with UTM, Ubuntu install) (0) | 2024.10.07 |
[Cloud] Kubernetes(쿠버네티스) & DevOps(데브옵스) Intro (0) | 2024.10.05 |
[Cloud] Virtualization(가상화), Container 기술 & Docker (0) | 2024.10.04 |