0부터 시작하는 Docker 공부 - 클라우드 컴퓨팅이란

Jaehong Lee·2022년 8월 16일
2
post-thumbnail

1. 클라우드 컴퓨팅이란

클라우드는 인프라에 사용되는 서버, 저장소, 소프트웨어 등을 포함해 사용자가 언제든지 인터넷과 모바일 등을 통해 IT 서비스를 제공 받을 수 있도록 하는 컴퓨팅 기술

  • 에자일 방법론을 통해 민첩한 서비스 도입 / 탄력적인 확장과 축소 / 자동화된 서비스 유지관리를 통해 운영 비용을 절감하고, 비즈니스 요구사항의 변화를 빠르게 적용할 수 있는 환경을 제공
    • 과거에는 동시 작업이 어려워 모놀로식 방법이었지만, 컨테이너 의 등장으로 동시 작업이 가능해져, 동시 작업 후 결합하는 에자일 방법론을 사용한다

클라우드 컴퓨팅 : 그리드 컴퓨팅 ( 자원 공유 ) + 유틸리티 컴퓨팅 ( 과금 )

  • 기술적으로는 그리드 컴퓨팅 & 비용적으로는 유틸리티 컴퓨팅
    • 그리드 컴퓨팅 : 남아도는 자원을 외부에 제공
    • 유틸리티 컴퓨팅 : 온 디맨드 컴퓨팅 방식으로 자원 사용량에 따라 요금을 부과하는 기술

2. 클라우드 컴퓨팅의 제공 방식

온 프레미스

  • 클라우드와 달리 자체 데이터 센터를 운영하는 것으로, 자체 솔루션등을 적용할 수 있어 보안상 , 효율성 면에서는 우수하다고 할 수 있다. 단, 현재는 온 프레미스 환경에서 이를 클라우드로 전환하는 케이스가 늘고 있다

  • 현재는 온 프레미스 환경을 사설 클라우드로 변환하는 경우가 많다

  • 클라우드가 무조건 온 프레미스보다 비용이 낮은 것은 아니다. 동일 사양으로 다년간의 고정적 비용을 따져본다면, 어느 시점부터는 클라우드 비용이 더 커질 수 있다

사설 클라우드

  • 제한된 네트워크에서 특정 사용자나 기업을 대상으로 하는 클라우드 서비스 방식으로, 클라우드 자원과 데이터는 기업 내부에 저장된다. 보안성이 높다

  • 대기업 / 금융권 등의 서버를 자체 데이터 센터에서 클라우드를 구축하고, 이를 활용하는 방법

  • openstack , cloudstack , vmware 을 통해 구축 가능하다

Public 클라우드

  • 인터넷을 통해 다수의 사용자에게 서버 및 스토리지 등의 클라우드 자원을 AWS , GCP , AZURE 와 같은 클라우드 서비스 공급자로부터 제공받는 방식

  • aws , azure , gcp , ncp 등을 통해 구축 가능하다

하이브리드 클라우드

  • 퍼블릭 클라우드와 프라이빗 클라우드를 네트워크를 통해 결합하여, 프라이빗 클라우드의 보안적 장점과 퍼블릭 클라우드의 관리적 장점을 활용할 수 있는 클라우드 서비스 방식이다

  • 예를 들어, 웹서버는 AWS 에서 제공하고, 데이터 보안 서비스는 사설 클라우드를 활용하는 방법으로 사용할 수 있다

3. 클라우드 컴퓨팅의 특징

  1. ON-DEMAND : 원하는 시점에 바로 서비스 사용 가능

    • 과거에는 Data Center 에서 사용자의 주문에 대해 자원을 준비하는 시간이 필요했다. 허나, 클라우드의 등장으로 사용자가 주문하면 즉시 서비스 제공이 가능하게 됬다
  2. 광대역 네트워크 접근 : CSP ( 클라우드 서비스 업체 ) 가 제공하는 광대역 네트워크를 이용하여, 인터넷 접속이 가능하다면 위치에 상관없이 24시간 온라인을 유지 가능하며, 서비스 이용이 가능하다

  3. 탄력성 / 확장성 : Auto scale 을 통해 탄력적으로 서비스의 확장과 축소가 가능하다. 예를 들면, 인스턴스의 개수를 늘리거나, 디스크의 용량을 늘리는 것 등이 있다

    • 이는 수평적으로 늘리는 것 ( 개수 ) & 수직적으로 늘리는 것 ( 성능 ) 이 있다
      • 서버의 자원 ( cpu , rem , disk 등 ) 을 늘리는 것 - scale up
      • 동일한 서버를 늘리는 것 - scale out
    • 일반적으로 클라우드에서 탄력적 / 확장성을 얘기할 때에는 scale out 을 지칭한다
    • 특정 상황이 되면 자동으로 스케일을 확장하도록 설정할 수 있다 -> Auto Scaling
  4. 자원의 공동 관리 : 자원 관리를 Pool 에 담아서 일괄적으로 처리할 수 있다. 이를 위해선 자원의 클러스터화가 가능 해야 한다

    • 물리적으로 떨어져있는 자원들을 클러스터화하여 하나의 Pool 에 담아서 통합하여 처리한다
  5. 측정 가능한 서비스 : 자원 사용의 모니터링이 가능 해야 한다. 이는 과금 서비스와 연계하여 사용될 수 있다

  6. 24 시간 온라인을 유지할 수 있는 애플리케이션

    • 과거에는 서비스를 제공하는 물리 서버에 대해 점검 및 업그레이드를 하면, 서비스가 중단되는 Down Time 이 많았다. 허나, 클라우드의 등장으로 live migration 이 가능해지면서 이러한 Down Time 을 없앨 수 있게 되었다
    • 가상 머신 등의 지역간 이동을 통해 구현 가능하게 됬다

4. 클라우드 컴퓨팅 구조

클라우트 컴퓨팅 구조 : 물리적 시스템 계층 - 가상화 계층 - 프로비저닝 계층 - 클라우드 서비스 관리 계층 - 클라우드 서비스 계층

  • 가상화 계층 : 서버 가상화 / 스토리지 가상화 / 네트워크 가상화

    • 서버 가상화 : KVM 와 같은 Hyper Visor 를 이용하여 가상 서버 형태로 서버를 제공하는 방법
    • 스토리지 가상화 : 적은 양의 다수의 스토리지를 묶어 하나의 큰 자원 풀로 활용하는 것도 스토리지 가상화의 일종이다
    • 네트워크 가상화 : Vlan , Vxlan , VPC ( Virtual Private Cloud ) , VRF ( Virtaul Routing Forwarding - 각 고객사 별로 별도의 라우팅 테이블을 제공 )
      • VRF : 하나의 라우터 안에 가상으로 라우터를 만들어, 별도의 라우팅 테이블을 생성하여 각 고객사 별로 제공해줄 수 있다
  • 프로비저닝 ( Provisioning ) : 시스템을 즉시 사용할 수 있는 준비 상태로 대기하는 것으로 서비스를 제공하기까지 준비한 과정을 통틀어 의미한다. 즉, 사용자 혹은 비지니스 요구사항에 맞게 할당, 배치, 배포하여 시스템을 사용가능하도록 준비하는 절차

    • 만약, 가상 서버 / 네트워크 준비 / 볼륨 준비 등을 일일이 처리한다면 이는 오랜 시간이 걸릴 것 이다. 이를 일괄적으로 처리할 수 있는 프로비저닝 도구가 있다. 대표적으로 ansible , chef , puppet , vagrant 등이 있다. 도구를 사용하지 않으면, 일일이 명령을 통해 구현하지만, 프로비저닝 도구는 일반적으로 코드를 이용하여 배포한다
    • 프로비저닝 도구를 통해 일괄 생성도 가능하지만, 일괄 삭제도 가능하다
  • 배포 ( Deployment ) : 애플리케이션을 즉시 사용할 수 있는 준비 상태로 대기하는 것

  • 오케스트레이션 : 시스템 or 애플리케이션의 묶음을 일괄적으로 배포 / 프로비저닝 할 수 있으며, 이를 회수하는 것. 즉, 묶음에 대한 전체 관리를 한다. 일반적으로는 애플리케이션 또는 컨테이너의 관리에 주로 사용하는 용어이며, 특히 컨테이너와 관련하여 대표적인 오케스트레이션 도구로는 " K8S " 가 있다

5. 클라우드의 구분

  • NIST 에서 최초 규정한 클라우드의 구분은 아래와 같다

IaaS

  • 서버 / 네트워크 / 방화벽과 같이 서비스 제공을 위한 인프라 환경을 제공하는 것 ( openstack , ec2 , kvm 등을 인스턴스 형태로 제공한다 )

PaaS

  • 개발 환경을 제공 ( 데이터 베이스 , 개발 언어 , IDLE 등을 동일한 버전등으로 제공 가능 )

  • 컨테이너를 통한 app 배포 도 paas 에 포함된다. auto scaling 을 통해 컨테이너를 수평적으로 늘릴 수 있다

SaaS

  • 소프트웨어를 제공
profile
멋진 엔지니어가 될 때까지

0개의 댓글