Cloud Computing

    Computing at scale

    Big data는 많은 processing을 요구하므로 특별한 알고리즘이나 하드웨어, 도구들을 동반한다.Cluster는 우리가 필요한 resource를 제공하는데, 문제는 scale이다. 규모가 커지게 되면 당연히 power가 많이 필요하게 되고 (power는 여기서는 전력, 전기 정도로 생각하면 된다), 그에 따라 열이 많이 방출되므로 cooling system도 해결해야 하는 주요 이슈가 될 것이다.

     

    Scale-up

    • 성능이나 용량 증강을 목적으로 하나의 서버에 디스크를 추가하거나 CPU나 메모리를 업그레이드시키는 것으로 기존의 하드웨어를 보다 높은 사양으로 업그레이드하는 것
    • 추가적인 네트워크 연결 없이 용량을 증강할 수 있고, 추가되는 용량이나 업그레이드 비용만 부가되기에 비용적인 증강이 스케일아웃에 비해 낮고 설계가 쉬움
    • 하지만 서버 한 대에 모든 부하가 집중되어 장애 시 서버가 복구될 때까지 서비스를 중단해야 하는 상황이 발생
    • 만약 하나의 컴퓨터로 충분X .. 성능이 더 좋은(biggest) 컴퓨터를 사자 → 그럼에도 충분하지 않다면 컴퓨터를 여러 대 사자! (클러스터의 개념으로 확장)

     

    Clusters

     

    Rack

    • 내부에 국제 표준 규격의 장비(rack 서버, 통신장비 등)를 설치하여 시스템 구성에 필요한 환경을 제공하고 장비의 보호 등의 기능을 수행하는 장비
    • 만약 비싼 서버 장비를 네트워크 스위치에 연결되어 있는 통신케이블이 정리되지 않은 상태로 너저분하게 바닥에 깔려 있다고 상상해보자 → ?!?!?
    • 결국 Rack은 케이블을 연결하고, 전원을 공급하고 유지하며 장비에서 발생하는 열을 외부로 배출하여 적정 온도가 유지되는 환경, 장비를 외부의 충격에서 보호하는 등의 환경을 제공해 주는 장비

     

    Network Switch

    • rack의 맨 위에 위치하고 있어서 서로의 node를 이어주는 역할을 함

     

     

    Rack vs. Blade

    데이터 센터 업계에서 가장 일반적으로 사용되는 두 서버는 블레이드 서버와 랙 서버이므로 둘을 비교해볼 것이다.

    rack server blade server
    자신만의 전력 공급, 쿨링 시스템, LAN 케이블을 가지고 있음
    → 독자적 사용 / 독립 실행
    전력 공급, 쿨링 시스템, LAN 케이블 등을 공유해서 사용하는 시스템
    설치가 어려움
    → network switch, rack, storage등에 대한 지식이 필요함
    상대적으로 특별한 전문지식을 필요로 하지 않음
    → 블레이드 서버는 각 서버에 대해 개별 케이블을 실행하는 대신 섀시에 연결된 하나의 케이블을 가질 수 있으므로 총 케이블 요구 사항이 줄어들기 때문
    hot swap 불가 hot swap 가능 → 장비를 오프라인으로 전환하지 않고도 구성 요소를 교체할 수 있도록 함으로써 신속한 서비스 가능성을 제공 → enterprise용
    규격만 맞으면 다양한 공급자들이 제공하는
    component를 사용할 수 있다.
    여러 공급업체의 구성 요소를 혼합하고 일치시키는 기능을 제한
    내부 팬이 장착되어 있기 때문에 랙에 배치하면 공기 흐름이 증가 shared infrastructure이므로 cooling system의 한계가 존재

     

    Problem of Cooling System

    • 일반적으로 클러스터는 많은 양의 전력(power)을 필요로 하며, 클러스터가 클수록 대규모의 cooling system을 요구함
    • cooling이 주요 이슈인 이유는 전력의 대부분이 열로써 방출되기 때문임 (열이 많이 난다는 것은 전력 낭비가 일어난다는 것)
    • 데이터 센터에서 cooling system의 문제는 3가지로 요약 가능한데 , 이는 (1) 차가운 공기의 부족 (2) rack에 공기 흐름이 충분X (3) 공기 흐름이 균일X

     

    * hot aisle / cold aisle approach

    • 서버 랙의 전면은 전면끼리 후면은 후면끼리 서로 마주하도록 방향을 지정하는 방식
    • 앞에서 찬 공기를 받아들여서 rack server를 지나 더운 공기를 뒤로 뿜어내고, 모아둔 더운 공기를 CRAC(HVAC)으로 보냄
    • CRAC(HVAC)은 일종의 air conditioner라고 생각하면 됨
    • 에어컨 장비에서 밀어내는 공기가 통과할 수 있도록 바닥을 1.5피트 정도 띄우며, cold aisle에는 구멍을 뚫은 타일을 깔아 차가운 공기가 들어갈 수 있도록 함
    • cold aisle과 hot aisle은 물리적인 벽으로 구분해 뜨거운 공기와 찬 공기가 섞이는 것을 방지함



    그런데 랙(및 서버)의 전면이 모두 같은 방향을 향하도록 서버가 논리적으로 행에 배치한다면..??

     

     

    첫 번째 랙 열의 뜨거운 공기는 두 번째 랙 열의 차가운 공기 흡입구로 빨려 들어가게 되는데, 각 행에서 뜨거운 공기가 서버의 한 행에서 다음 행으로 전달됨에 따라 공기 온도가 증가한다. 즉, 여러 개의 평행한 랙 열을 동일한 방향으로 배치하면 상당한 효율성 문제가 발생 하므로 우리는 hot/cold aisle approach를 사용!!

     

    Problem 1 : Different Load

    → Provisioning이 어렵다!

    • provisioning이란, 사용자의 요구에 맞게 자원을 할당, 배치, 배포해두었다가 필요할 때 즉시 쓸 수 있도록 준비하는 것
    • Peak load의 경우 평균보다 2배에서 많게는 10배 높기 때문에 peak load에 맞추면 예산 낭비가 발생하고 평균에 맞추게 되면 customer의 만족x
    • 결국 resource를 낭비할 것인지, 아니면 customer을 잃을 것인지 딜레마에 빠지게 됨

     

    Problem 2 : Expensive

    • 데이터 센터를 짓는 데에 투자 비용이 크고, 아무리 작은 cluster라도 많은 비용이 듦
    • 대규모의 cluster를 세팅하는 것이 어렵기 때문에 전문가들이 필요
    • 유지보수를 위한 비용 또한 많이 듦 (faulty 하드웨어를 교체하고, 소프트웨어를 업그레이드하고, 유저 계정을 업데이트하는 등....)

     

    Problem 3 : Difficult to scale

    • cluster의 scale을 키우면 새로운 머신을 구매, 설치하고, 기존의 것과 통합하는 데에 많은 시간을 소요함
    • scale down마저도 어렵다 → idle hardware더라도 peak일 때는 60%의 power를 사용하므로 많은 고정 비용이 있음

     

    What is Cloud Computing?

    클라우드 컴퓨팅은 5가지 특징으로 요약 가능하다.

    • On-demand self service : 필요할 때 요청하여 resource를 받을 수 있음 → provisioning
    • Broad network access : 사용자가 클라우드 서비스에 액세스 하려면 컴퓨터, 운영체제 및 인터넷에 연결된 네트워크만 있으면 됨
    • rapid elasticity : 필요에 의해 유동적으로 capacity를 유지하기 때문에!

    • Resource pooling : pool형태의 resource를 가지고 있고 그것을 1/n해서 나눔 →네트워크 전반에서 스케일할 수 있는 리소스를 추상화, 풀링, 공유하는 환경
    • Measured service : 사용자는 쓴 만큼만 비용을 지불하면 됨

     

    Cloud: everything as a service

     

    분류 기준 1: cloud computing이 어떠한 서비스를 제공하는가?

     

    • SaaS (Software as a service)
      • 클라우드 애플리케이션 기본 IT 인프라 및 플랫폼을 사용자에게 제공하는 클라우드 컴퓨팅 형태
      • 서비스 제공업체가 관리하는 애플리케이션을 주로 웹 브라우저를 통해 사용자에게 제공하는 서비스 (따로 설치할 필요 없음)
      • 업체가 사용자를 대신해 소프트웨어 업데이트, 버그 수정 및 기타 일반 소프트웨어 유지관리 작업을 처리
      • 개별 사용자의 로컬 컴퓨터에 애플리케이션을 설치할 필요가 없으므로 그룹 또는 팀 단위로 소프트웨어에 액세스할 때 유리한 방법

     

    • PaaS (Platform as a service)
      • 외부 서비스 제공업체가 하드웨어와 애플리케이션-소프트웨어 플랫폼을 제공하고 관리하고 사용자는 실제 애플리케이션과 데이터를 맡음
      • 개발자와 프로그래머는 PaaS를 통해 코드를 동기화하고 제공업체의 하드웨어 및 소프트웨어를 사용하여 애플리케이션을 실행할 수 있으며, 유지관리와 최신 업데이트 유지를 수행할 필요가 없습니다. 이를 통해 개발과 혁신에 보다 집중할 수 있으며 인프라 구축 및 코딩 업무량이 감소함

     

    • IaaS (Infrastructure as a service)
      • 클라우드는 원시적인 컴퓨팅 리소스만 제공 (ex. 가상머신, 하드디스크 등)
      • 사용자가 애플리케이션, 데이터, 운영 체제 등을 다룸
      • IaaS는 유연한 클라우드 모델이므로, 향후 요구 사항을 예측하고 비용을 미리 지불할 필요 없이 훨씬 더 수월하게 확장, 업그레이드하고 클라우드 스토리지와 같은 리소스도 추가할 수 있음



    분류 기준 2: cloud service를 사용하는 사람이 누구인가?

     

    • Public cloud
      • 누구나 다 사용할 수 있는 commercial한 cloud service
      • 사용자 입장에서는 적은 비용, 유지비용X
      • 또한 비용만 지불하면 여러 대의 서버를 제공해주므로 scability에 한계X
      • 전문업체가 관리해주므로 높은 reliability

     

    • Private cloud
      • 회사 내에서 사용하는 exclusive한 클라우드 시스템 (ex. 데이터센터, 정부기관)
      • 내부적으로만 사용하므로 flexibility가 좋고 보안이 좋다

     

    • Hybrid cloud
      • private cloud와 public cloud를 혼합한 형태
      • privacy가 중요한 데이터는 private를, 용량이 크고 중요하지 않은 데이터는 public cloud를 이용
      • 그러므로 control, flexibility가 장점

     

    댓글