본문 바로가기
CS/클라우드 컴퓨팅

[클라우드] 1. Introduction to Cloud Computing

by J-rain 2024. 3. 21.

 

클라우드 컴퓨팅의 정의

인터넷을 통해 원격지( 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)와 같은 네트워크 보안, 데이터 규정/컴플라이언스 등을 관리해주는
      서비스
  • 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
    • 클라우드 사업자가 기업 사용자별로 클라우드 환경을 제공하여, 서버와 스토리지 같은 컴퓨팅 리소스를
    서비스로 제공하는 형태   => (클라우드 사업자는 퍼블릭 클라우드에서 리소스를 일부 떼서 할당) -> 데이터센터를 빌려 쓰는 느낌
    • 단기간에 전용 클라우드 환경을 구축하고 월 비용을 지불

 

이렇게만 보면 다 클라우드를 이용할것 같지만 그렇지 않다.

시간이 지날수록 자체시스템 보다 비용이 증가한다. (Lock-In 지점)

 

 

멀티 클라우드

  • 2곳 이상의 클라우드 사업자가 제공하는 2개 이상의 퍼블릭/프라이빗 클라우드로 구성된 형태

하나에 의존하는것 보다 의존성이 내려간다.

  •  높은 가용성
    • 여러 클라우드 사업자를 이용하기 때문에 가용성 향상
    • 만약 한 클라우드 서비스가 중단되어도, 다른 클라우드에서 제공되는 서비스를 이용할 수 있음
  • 비용 절감
    • 여러 클라우드 사업자를 이용하여 자원을 확보하기 때문에, 각 업체마다 제공하는 가장 저렴한 자원 구매 가능
  • 벤더 Lock-In 회피
    • 하나의 클라우드 제공자에  의존적인 Lock-In 현상을 회피 할 수 있음
  • 보안 강화
    • 멀티 클라우드를 통해 보안 위협을 분산시킬 수 있음
    • 각 클라우드 제공자의 다양한 보안 솔루션을 사용하여 보안 강화 가능
  • 지역별 규제 준수
    • 다양한 지역의 클라우드 제공자를 이용하여 지역별 규제 준수

 

하이브리드 클라우드

  • 퍼블릭 클라우드와 프라이빗 클라우드 서비스 + On-Premise 시스템 연계

  • 비용 절감
    • 필요에 따라 클라우드 서비스를 이용하여 자원을 확보하거나 자체 데이터센터에서 자원을 운영할 수 있음
    (인프라 운영 비용 절감)
  • 확장성
    • 클라우드 서비스에서 필요한 만큼 자원을 확보하고, 자체 데이터센터에서 필요한 만큼 자원 운영할 수 있음
  • 유연성
    • 클라우드 서비스에서 제공되는 기능과 자체 데이터센터에서 제공하는 기능을 조합하여 필요에 맞게
    인프라 구축 가능
  • 보안
    • 중요한 데이터와 애플리케이션을 자체 데이터센터에서 운영하고, 보안에 민감하지 않은 데이터와 애플리케이션을
    클라우드 서비스에 운영하여 보안 강화

 

 

클라우드 안전성과 신뢰성

 

클라우드 보안 위협

보안 취약점도 있지만 사용자의 실수가 많다

  • 서비스 중단
    • 클라우드 사업자의 하드웨어 장애로 인한 데이터 손실이나 서비스 중단
  • 데이터 유출
    • 악성코드 감염으로 인한 기업이나 개인의 민감한 데이터 유출
  • 계정 탈취 및 손상
    • 사용자 계정 관리 부실로 인한 시스템 오동작 유발 및 업무 방해
  • 자원 착취 및 손상
    • 클라우드 인프라 취약점 공격으로 인한 가상화폐 채굴 수단으로 자원 도용
  • 그 외 보안 위협
    • 네트워크 리스크로 통신 도청, 중간자 공격, 스푸핑 같은 통신 위협
    • 네트워크 관리 마비에 따른 시스템 다운 위협 등

 

"클라우드를 이용한다"

  • 기업이 보유한 정보의 관리와 처리를 클라우드 사업자에게 맡김
  • 즉, 보안 등의 리스크를 모두 통제 할 수 없음

"클라우드 보안 거버넌스 (Governance) "

  • 클라우드 환경에서의 적절한 운영과 관리를 위한 정책, 프로세스, 절차 및 책임을 정의하는 것
  • 클라우드 사업자와 이용자 간의 책임 분담을 명확히 확인해야함
    • 클라우드 사업자가 어디까지 책임을 지는가?
    • 사용자는 어디까지 책임을 저야 하는가?
    • 사용자의 책임 범위 안의 사항들은 사용자 자신이 판단하여 조치해야 함

책임 소재가 적다는 것은 vendor Lock-In 이 될 수 있다는 것 따라서 책임 소재가 많냐 VS vendor Lock-In 되더라도 책임소재가 적냐 차이

 

댓글