클라우드 컴퓨팅의 정의
인터넷을 통해 원격지( remote ) 에서 제공하는 확장성이 있는 자원의 사용 모델을 도입한 분산 컴퓨팅의 특수한 형태
클라우드가 보급된 배경
• 대부분의 기업들이 자체 데이터센터 구축 및 운영
• 비용이 비싸고 복잡한 작업 요구
• 대부분의 자원이 낭비
클라우드 컴퓨팅이 인기를 얻게 된 이유
• 접근성 – 인터넷에 연결된 장치는 어디에서나 접근 가능
• 확장성 – 기업이 필요에 따라 자원을 확장/축소 가능, 비즈니스 요구사항에 맞게 IT 인프라 조정 가능
• 유연성 – 다양한 운영체제와 애플리케이션 호스팅 가능
• 비용절감 – 필요한 만큼 자원을 사용하고 비율을 지불, 초기 인프라 구축 비용 절감
금융권은 그럼에도 클라우드로 잘 못 넘어오는 이유?
1. 개인 정보 보안 문제
2. 자체적인 서버를 가져야 안전하기 때문
3. 특정 컴퓨터에서만 들어가는 경우 => 그래서 특정 드라이버를 최적화하여 성능을 높이는 방향으로 감
클라우드의 특징
- 주문형 셀프 서비스
• 사업자와 직접 상호 작용하지 않고, 개별 관리화면을 통해 서비스 이용 - 광범위한 네트워크 접속
• 모바일 기기 등의 다양한 디바이스를 통해 서비스에 접속 - 리소스 공유
• 사업자의 컴퓨팅 리소스를 여러 사용자가 공유하는 형태로 이용
• 사용자는 자신이 사용하는 리소스의 정확한 위치를 알 수 없음 - 신속한 확장성
• 필요에 따라 필요한 만큼 리소스 확장/축소 - 측정 가능한 서비스
• 이용한 만큼 요금이 부가되는 종량제
클라우드로 넘어가는 것이 좋지만 기존환경(세팅)을 버릴 수가 없는 곳들이 많다.
클라우드 컴퓨팅을 하면 값싸게 리소스를 쓸 수 있다는 생각은 "어플리케이션 입장에서 그냥 동작을 손쉽게 할 수 있다" 라는 관점이다. 책임소재가 줄었다? => 할 수 있는게 별로 없다.
수평적 확장 (horizontal scaling) / Scale Out
- 같은 형태의 IT 자원의 할당이나 배포
- 자원의 수평적 할당 -> 외부로의 확장을 의미
- 자원의 수평적 배포 -> 내부로의 확장을 의미
수직적 확장 (vertical scaling) / Scale Up
- IT 자원이 더 높거나 낮은 사양의 다른 자원으로 교체
- 더 높은 사양의 IT 자원으로 교체하는 것을 상향 확장
- 더 낮은 사양의 IT 자원으로 교체하는 것을 하향 확장
교체가 일어날 때 다운 타임이 발생하기 때문에 클라우드 환경에서 수직적 확장은 일반적이지 않다. => 수평적 확장으로 갯수를 늘림
자체 시스템 구축 (On-Premise) VS 클라우드
자체 시스템 구축 | 클라우드 | |
경제성 | -사전에시스템이용피크타임을예측,그만큼의장비와 소프트웨어준비 -피크타임이외에는리소스낭비발생 |
- 사용하고자하는기능을,사용하고자하는기간만사용 하므로낭비없음 - 소프트웨어및데이터를클라우드로통합관리함으로써, 소프트웨어의업데이트작업및데이터의관리를 효율적으로할수있으므로비용절약 |
유연성 | - 서버구축과시스템확장에는고도의기술과엄청난 비용발생,구축된시스템을가볍게확장/축소할수없음 |
- 컴퓨팅리소스를떼어서팔기때문에,필요할때필요한 만큼시스템을확장,필요가없어지면간단히축소 |
가용성 | - 서버의장애조치가필요한경우,시스템의이중화및 백업등의조치필요 |
- 재해를대비한데이터센터를이용하거나,장애에 대비한시스템을구성하여시스템의가용성을높였기 때문에자체시스템보다신뢰성이높은경우도있음 - 사업자가가용성에대해계약하는 *SLA를공개하고있음 |
구축속도 | - 시스템설계후,하드웨어와소프트웨어를조달하고 배치하는데시간이걸림 |
-클라우드사업자가준비한인프라를활용하여신속하게 시스템구축에착수 |
*(SLA = Service Level Agreement(서비스 수준 협약서) => 돈을 줄테니 가용성을 보장해라! 아니면 책임져라!
클라우드 서비스 모델
IaaS (Infrastructure as a Service)
- 클라우드 인프라를 서비스로 제공
- 가상화된 컴퓨팅 리소스, 스토리지, 네트워크, 운영체제 등 제공
- 사용자는 이러한 리소스를 필요에 따라 확장/축소하여 사용
클라우드 쪽으로 넘어오면서 '자동화' (핵심키워드)
-> IaC (Infrastructure as Code) 코드를 통해 인프라를 관리하고 *프로비저닝 한다.
*프로비저닝: IT 인프라를 생성하고 설정하는 프로세서
PaaS (Platform as a Service)
- 애플리케이션 개발 및 배포를 위한 플랫폼을 제공
ex) 자바환경, DB 구축할 필요없이 그런환경까지 제공한다.
SaaS (Software as a Service)
- 클라우드 애플리케이션(소프트웨어)를 서비스로 제공
결국 우리가 만든 서비스들 ex) 쇼핑물, 서비스들 등등
IaaS
- CPU나 하드웨어 등의 컴퓨팅 리소스를 네트워크를 통해 서비스로 제공하는 모델
- 대표적인 IaaS 서비스로는 가상 머신 및 온라인 스토리지 서비스
• 가상 머신: 클라우드 사업자가 보유하는 물리적 서버의 CPU와 메모리, 스토리지 등의 하드웨어 자원을
소프트웨어적으로 나누어 사용자에게 제공하는 것
- OS에 설치되는 데이터베이스와 미들웨어, 응용 프로그램 등의 소프트웨어를 자유롭게 설치/운영
• 단, 스스로 설치하고 관리해야 함
- 많은 클라우드 서비스에서 사용량에 따른 종량제 혹은 월 정액제를 채택하고 있음
- (회사 입장에서 한번에계산 -> 디스카운트 발생)
• 일부 사업자의 경우, 데이터 업로드/다운로드에 의한 데이터 전송량에 따라 요금 부과
- (회사 입장에서 한번에계산 -> 디스카운트 발생)
- 활용 예시) 웹 사이트
- 프로모션 이벤트 용으로 웹 사이트 개설
- 단기간에 엄청난 접속자가 몰릴 수 있음
- 프로모션을 진행하는 동안만 일시적으로 컴퓨팅 리소스를 많이 빌려서 사용하고, 종료되면 리소스를 감축
- 활용 예시) ERP (전사적 자원 관리) Enterprise Resource Planing
- 기업의 업무 통합 패키지
- 대표적인 IaaS 서비스
- Amazon Elastic Compute Cloud (EC2)
ERP => 왜 IaaS 일까?
클라우드 이전부터 사용하고 있었던 플랫폼일 것이다.
따라서 이 플랫폼이 요즘 많이 쓰이는 마이크로 서비스의 구조는 아닐 것이다.
그래서 IaaS 기준으로 사용하여 VM 만들어놓고 ERP 플랫폼을 돌리기 위한것들만 세팅하고 머신만 빌려쓰는 정도
PaaS
- 애플리케이션 실행 환경 및 개발 환경을 서비스로 제공하는 모델
- Java, Ruby, Python 등의 프로그래밍 언어를 지원하는 애플리케이션 실행 환경이나 DB 등을 미리 마련
• 따로 인프라를 구축하거나 운용 보수하지 않아도 그 기반을 사용하여, 단기간에 응용 프로그램을 개발하여
서비스를 제공할 수 있음
- 서버, 네트워크, 보안 부분을 클라우드 사업자에게 위임
• 단, 서버 및 미들웨어의 상세한 설정을 할 수 없으며, 특정 PaaS 환경에 대한 *의존도가 높아져 다른 환경으로의
마이그레이션이 어려움
*의존도 -> Lock-In 효과 (다른 서비스로 옮기기 어려워 서비스를 계속 이용하게 되는 효과)
왜 IaaS 에서 PaaS 라는 개념이 넘어왔을까?
개발환경과 운영환경이 다를 수 있다.
예를들어 개발을 3년동안 해서 릴리즈 하려 운영환경을 세팅 했는데 운영환경은 최신버전인데 개발환경은 옛날 버전이여서 환경차이가 발생한다. 그래서 해소하기위해 PaaS가 등장 => 버전관리, 환경세팅을 클라우드 프로바이더의 몫으로
- 대표적인 도구와 서비스
개발 도구 부속 서비스 |
API 서비스 | 인증/과금, 알림, 분석 등의 부가 서비스 |
SDK | 모바일용 소프트웨어 개발도구 등 | |
개발 프레임워크 | Ruby on Rails, Sinatra, Spring, Node.js, Eclipse 등 | |
핵심 기능 | 프로그래밍 언어 | Ruby, Java, Python, PHP 등 |
애플리케이션 서버 | Apache Tomcat, Jboss 등 | |
데이터베이스 서비스 |
MySQL, PostgreSQL, MongoDB, Amazon RDS, Oracle DB, Microsoft SQL Server 등 |
|
메시징 미들웨어 | RabbitMQ, Amazon SQS 등 | |
기타 | 애플리케이션/데이터 통합, 포털, 보안, 테스트 환경 등 |
- 대표적인 PaaS 서비스
- Amazon Elastic Beanstalk, Google App Engine
SaaS
- 업무에서 사용하는 소프트웨어의 기능을, 인터넷 등의 네트워크를 통해 필요한 만큼 서비스로
이용할 수 있도록 제공하는 형태
- 하나의 서버를 여러 기업에서 공유하는 것을 전제한 *Multi-tenant 방식 서비스를 제공
• 데이터는 기업 사용자별로 분리되도록 설계하여 보안성 확보
*Multi-tenant: 소프트웨어 애플리케이션의 단일 인스턴스가 여러 고객에게 서비스를 제공하는 아키텍처
- 서비스 계약 후 사용자 계정을 마련하면 서비스를 바로 이용 가능
- 대표적인 SaaS 서비스
• 마이크로소프트 Office 365, 구글 G Suite
XaaS (EveryThing/AnyThing as a Service)
- FaaS (Function as a Service)
- 애플리케이션의 기능의 개발, 실행 및 관리 등을 제공하는 서비스
- SaaS (Security as a Service)
- MSSP (Managed Security Service Provider)와 같은 네트워크 보안, 데이터 규정/컴플라이언스 등을 관리해주는
서비스
- MSSP (Managed Security Service Provider)와 같은 네트워크 보안, 데이터 규정/컴플라이언스 등을 관리해주는
- AIaaS (AI as a Service)
- AI를 실험하고 다양한 머신 러닝 알고리즘을 테스트 할 수 있는 서비스
- DaaS (Desktop as a Service)
- 클라우드 기반의 가상 데스크탑 업무 환경을 제공하는 서비스
• c.f., Virtual Desktop Infrastructure (VDI)
- 클라우드 기반의 가상 데스크탑 업무 환경을 제공하는 서비스
클라우드 이용/배포 모델
퍼블릭 클라우드
- 클라우드 사업자가 시스템을 구축하고, 인터넷망 등의 네트워크를 통해 불특정 다수의 기업과 개인에게
서비스를 제공하는 형태 - 클라우드 시스템은 기업 또는 개인의 방화벽 외부에 구축
- 필요한 컴퓨팅 자원을 단기간에 저비용으로 마련할 수 있고, 운용 관리 부담이 적음
ex) 아마존, 구글
프라이빗 클라우드
- 클라우드 서비스의 사용자 또는 사업자의 데이터센터에 클라우드 관련 기술이 활용된 자사 전용 환경을
구축하여 컴퓨팅 리소스를 유연하게 이용할 수 있는 형태 - 가상화, 자동화와 같은 클라우드 관련 기술의 활용으로 인해 시스템의 성능과 비용이 최적화되므로,
유연한 사용자 정의가 가능
ex) Vm ware
- On-Premise Private Cloud
• 기업 사용자 스스로 클라우드 기반 소프트웨어 등을 이용하고, 자체적으로 구입한 서버 및 스토리지,
하드웨어 리소스를 기업 안에 설치, 자사 전용 클라우드 환경을 구축해서 운용하는 형태
• 기업 사용자 스스로가 시스템을 설계하고 운용/관리하기 때문에, 자사의 시스템 요구사항에 맞춘 유연한
시스템 설계 가능
• 자체적인 보안 정책에 따른 강력한 보안 환경을 구축해서 운용 가능
- Hosted Private Cloud
• 클라우드 사업자가 기업 사용자별로 클라우드 환경을 제공하여, 서버와 스토리지 같은 컴퓨팅 리소스를
서비스로 제공하는 형태 => (클라우드 사업자는 퍼블릭 클라우드에서 리소스를 일부 떼서 할당) -> 데이터센터를 빌려 쓰는 느낌
• 단기간에 전용 클라우드 환경을 구축하고 월 비용을 지불
이렇게만 보면 다 클라우드를 이용할것 같지만 그렇지 않다.
멀티 클라우드
- 2곳 이상의 클라우드 사업자가 제공하는 2개 이상의 퍼블릭/프라이빗 클라우드로 구성된 형태
- 높은 가용성
• 여러 클라우드 사업자를 이용하기 때문에 가용성 향상
• 만약 한 클라우드 서비스가 중단되어도, 다른 클라우드에서 제공되는 서비스를 이용할 수 있음 - 비용 절감
• 여러 클라우드 사업자를 이용하여 자원을 확보하기 때문에, 각 업체마다 제공하는 가장 저렴한 자원 구매 가능 - 벤더 Lock-In 회피
• 하나의 클라우드 제공자에 의존적인 Lock-In 현상을 회피 할 수 있음 - 보안 강화
• 멀티 클라우드를 통해 보안 위협을 분산시킬 수 있음
• 각 클라우드 제공자의 다양한 보안 솔루션을 사용하여 보안 강화 가능 - 지역별 규제 준수
• 다양한 지역의 클라우드 제공자를 이용하여 지역별 규제 준수
하이브리드 클라우드
- 퍼블릭 클라우드와 프라이빗 클라우드 서비스 + On-Premise 시스템 연계
- 비용 절감
• 필요에 따라 클라우드 서비스를 이용하여 자원을 확보하거나 자체 데이터센터에서 자원을 운영할 수 있음
(인프라 운영 비용 절감) - 확장성
• 클라우드 서비스에서 필요한 만큼 자원을 확보하고, 자체 데이터센터에서 필요한 만큼 자원 운영할 수 있음 - 유연성
• 클라우드 서비스에서 제공되는 기능과 자체 데이터센터에서 제공하는 기능을 조합하여 필요에 맞게
인프라 구축 가능 - 보안
• 중요한 데이터와 애플리케이션을 자체 데이터센터에서 운영하고, 보안에 민감하지 않은 데이터와 애플리케이션을
클라우드 서비스에 운영하여 보안 강화
클라우드 안전성과 신뢰성
클라우드 보안 위협
- 서비스 중단
• 클라우드 사업자의 하드웨어 장애로 인한 데이터 손실이나 서비스 중단 - 데이터 유출
• 악성코드 감염으로 인한 기업이나 개인의 민감한 데이터 유출 - 계정 탈취 및 손상
• 사용자 계정 관리 부실로 인한 시스템 오동작 유발 및 업무 방해 - 자원 착취 및 손상
• 클라우드 인프라 취약점 공격으로 인한 가상화폐 채굴 수단으로 자원 도용 - 그 외 보안 위협
• 네트워크 리스크로 통신 도청, 중간자 공격, 스푸핑 같은 통신 위협
• 네트워크 관리 마비에 따른 시스템 다운 위협 등
"클라우드를 이용한다"
- 기업이 보유한 정보의 관리와 처리를 클라우드 사업자에게 맡김
- 즉, 보안 등의 리스크를 모두 통제 할 수 없음
"클라우드 보안 거버넌스 (Governance) "
- 클라우드 환경에서의 적절한 운영과 관리를 위한 정책, 프로세스, 절차 및 책임을 정의하는 것
- 클라우드 사업자와 이용자 간의 책임 분담을 명확히 확인해야함
- 클라우드 사업자가 어디까지 책임을 지는가?
- 사용자는 어디까지 책임을 저야 하는가?
- 사용자의 책임 범위 안의 사항들은 사용자 자신이 판단하여 조치해야 함
'CS > 클라우드 컴퓨팅' 카테고리의 다른 글
[클라우드] 6. Kubernetes (쿠버네티스) (0) | 2024.04.17 |
---|---|
[클라우드] 5. 네크워크 가상화(Network Virtualization) (0) | 2024.04.04 |
[클라우드] 4. Container (Docker) (0) | 2024.03.21 |
[클라우드] 3. 서버 가상화(Server Virtualization) (0) | 2024.03.21 |
[클라우드] 2. Cloud Services and Technologies (2) | 2024.03.21 |
댓글