훤히 보이는 클라우드 컴퓨팅 - 3

김재현·2022년 12월 12일
0

프로그래밍 개념

목록 보기
6/6
  • 클라우드 컴퓨팅에 대한 전체적인 이해가 필요했고, 책 하나 읽어보자 하는 생각에 도서관 가서 고른 책.
  • 선택 이유는 쉬워 보였고 총론을 다루는 책이었다고 생각했기 때문이었다. 그리고 대충 맞았고.
  • 아쉬운 점이라면 2008~2009년에 쓰여진 책이어서 22년인 지금 접목하기에는 기술 격차가 좀 많이 심하다는 것. DevOps나 클라우드 컴퓨팅을 대표하는 기술이 된 Docker, 쿠버네티스 등의 기술이 나오지 않는다는 것이 그렇다.
    그래도 역사나 개요를 익히기에는 무리가 없었던 것 같다.

1장

  • 1장에서는 컴퓨터와 네트워크가 어떻게 발전해왔는지를 개괄적으로 다루고 클라우드 컴퓨팅은 이전에 있었던 기술들과 어떻게 다른지를 설명한다.
  • 아주 거대했던 (물리적인 의미로) 메인프레임 컴퓨팅 시대를 넘어 서비스 제공자와 사용자를 분리한 클라이언트-서버 시스템이 정착되고 인터넷 기반 컴퓨팅 시대를 넘어 클라우드 컴퓨팅에 오기까지의 역사를 개괄적으로 설명한다.
  • 또한 클라우드의 범주인 개인(Private) 공공(Public) 혼합(Hybrid) 클라우드에 대한 설명도 제공한다.
  • 이전의 인터넷 기반 컴퓨팅 개념인 그리드/유틸리티/서버 기반 컴퓨팅 등과 클라우드 컴퓨팅이 다른 점에 대하여 설명한다.
    • 그리드 컴퓨팅은 흩어져 있는 컴퓨팅 자원을 연결해 클라우드 컴퓨팅과 유사하지만,
      그리드 컴퓨팅이 인터넷의 모든 IT 자원을 연결해 남은 리소스를 사용하는 것과 다르게 클라우드는 서비스 제공자가 제공하는 사유화된 컴퓨팅 자원을 사용한다는 점에서 다르다.
    • 유틸리티 컴퓨팅은 사용자가 컴퓨팅 자원을 필요할 때 연결해 사용하고 사용량에 대한 대가를 지불하는 과금 모델이라는 점에서 유사하지만,
      유틸리티 컴퓨팅이 단순 과금 모델을 나타내는데 반해, 클라우드 컴퓨팅은 과금 방식을 포함해 포괄적인 개념이다.
    • 서버 기반 컴퓨팅의 경우 모든 처리가 서버에서 이루어지고 사용자의 단말기는 입출력만을 처리하며, 클라우드 컴퓨팅 역시 사양이 낮은 단말기로도 서버에서 처리되는 높은 수준의 서비스를 이용할 수 있다는 점에서 유사하지만,
      서버기반 컴퓨팅이 물리적 서버를 제공하는데 비해 클라우드 컴퓨팅은 가상화된 서버 네트워크를 제공받을 뿐 물리 서버에 대한 정보나 권한을 갖지 못하다는 점이 다르다.

2장

  • 2장에서는 클라우드에서 제공받을 수 있는 서비스의 형태에 대해 설명한다. 크게 IaaS, PaaS, SaaS가 있다.

  • IaaS는 업무 처리에 필요한 서버, 데스크톱 컴퓨터, 스토리지 같은 IT 하드웨어 자원을 클라우드 서비스로 빌려쓰는 형태이다. IT 인프라 자원을 서비스로 제공하며 스토리지와 컴퓨팅 능력을 표준화된 서비스 형태로 제공하는 수단으로, 하드웨어를 판매하는 것이 아닌 하드웨어가 제공하는 컴퓨팅 파워를 서비스하는 형태이다.
    그림에서는 OS가 빠져 있지만, 포함되어 설치되는 경우도 많다.
    • 기존 데이터센터 대여와 다른 점은 IaaS는 사용자가 특별한 준비를 할 필요 없이 필요한 컴퓨팅 자원을 사용하고 요금만 지불하면 된다는 점이다.
  • PaaS는 소프트웨어 개발환경을 클라우드에서 제공받는 것이다. 제품 공장을 빌려주는 것과 비슷하다고 볼 수 있으며, 이렇게 대여된 공장에서 개발을 하면 된다. 개발에 필요한 요소는 모두 클라우드 사업자가 제공한다.
    • 프로그래밍 언어, 미들웨어, 데이터베이스 관리 시스템, 소프트웨어 서버와 파일 시스템, 등등. 제공되는 IT 자원을 활용해 소프트웨어를 개발하고 시험할 수 있다.
  • SaaS는 소프트웨어를 통째로 서비스 사업자에게 빌려 쓰는 것이다. 사업자는 소프트웨어를 제공하고, 사용자가 원격으로 접속해 소프트웨어를 활용할 수 있다.
    ASP와 비슷한 개념이긴 하지만, 기술적 측면에서 SaaS가 훨씬 우월하다.
  • 대표적 예시 제품들
    • IaaS : Amazon EC2, S3, SQS 등
    • PaaS : Google AppEngine, OpenShift 등
    • SaaS : 웹 메일, 클라우드 스토리지 서비스, MS Office 365 등
  • 다음으로는 클라우드 사용 예시를 설명한다. 일반 기업, 소프트웨어 개발 기업, 공공 기관, 개인의 측면에서 설명되어있다.
  • 클라우드는 안전한지에 대한 보안 측면에서의 논의도 있다. 나의 데이터를 남이 소유하는 하드웨어에 보관하는 것에 대한 불안감은 언제든 발생할 수 있는 것이나, 클라우드 기업 역시 이것을 알고 심혈을 기울여 보안을 구성하기 때문에 어느 정도 안심할수는 있을 것이다.
  • 클라우드를 선택할 때 고려해야하는 7가지 기준에 대해 말한다.
    • 접근 권한이 있는 관리자에 대한 감시
    • 법적 책임의 준수
    • 데이터의 위치 : 데이터는 물리적으로 어느 국가에 저장되고 있는지. 함부로 다른 나라에 있는 서버에 저장했다가 큰 일 날수도 있다.
    • 철저한 데이터 분리 여부 파악 : 여러 고객사의 데이터가 안전히 분리되어 감시되고 있는지.
    • 데이터 복원 가능성
    • 불법 행위 등에 대한 조사
    • 기업의 지속성

3장

  • 3장에서는 클라우드 컴퓨팅이 실제 사용환경을 어떻게 바꿔놓을지에 다루고 있다.
  • 근데 시대가 변해서 굉장히 많은 서비스가 새로 출시됐을 것 같다.

4장

  • 이 책을 보는 핵심적인 이유가 되는 장이라고 할 수 있다.
    클라우드 컴퓨팅에 필요한 여러 개념과 기능을 담고 있다.
  • 클라우드 시스템을 위한 기술적 요소
    • 확장성 : 언제든지 원하는 만큼의 컴퓨팅 자원을 서비스받을 수 있다. 컴퓨팅 서비스를 계약했다 하더라도 사용자들은 수시로 적절한 용량을 추가하거나 반납할 수 있다.
      온프레미스와 가장 다른 점으로 온프레미스의 경우 컴퓨팅 자원을 유연하게 관리할 수 없지만, 클라우드를 이용하면 탄력적으로 관리할 수 있다.
    • 가용성 : 서비스를 제공하는 시스템은 항상 서비스할 수 있는 상태여야 한다. 짧은 시간이라도 서비스를 공급받지 못하면 업무가 마비되고 큰 손실이 발생할 수 있기 때문이다.
    • 보안성 : 가장 예민하고 핵심적인 요소로, 데이터의 보안성을 확보해야 클라우드 서비스가 의미를 가지게되며 신뢰가 구축되지 않으면 누구도 이용하지 않으려 할 것.
      현실적으로 클라우드 사용자는 자신의 데이터가 어디에 위치하거나 어디로 가는지 통제할 수 없고, 자신의 데이터가 위험에 빠지더라도 할 수 있는 조치가 업시 때문에 서비스 제공업체는 더욱 보안에 신경써줘야 한다.
    • 신뢰성 : 소중한 데이터를 맡기는 것이기 때문에 신뢰할 수 있어야한다. 자동 백업, 데이터 싱크 기능, 복구 기능 등을 제공해야한다.
    • 활용률 : 비용 절감 효과를 거두기 위해서는 IT 자원의 활용률을 높이는 기술이 필요하다. 여러 작업들을 한 시스템에 모으고 남은 자원들을 반납하면 리소스 낭비를 줄이고 비용을 절감하며 에너지 절약도 가능하는 등 여러 장점이 있다.
    • 중앙 집중 형태로 데이터 저장 : 여러 사람이 데이터를 공유하고 협업으로 업무를 진행할 수 있게 된다. 데이터 뿐 아니라 작업도 공유.
    • 이동성 보장 : 클라우드 접근 장소에는 제한이 없어야하며, 어떤 단말기에서도 동일 작업을 할 수 있어야한다.
  • 클라우드 컴퓨팅의 구조
    클라우드 컴퓨팅은 논리적으로 여러 계층으로 나뉘어져 각자의 역할을 수행한다.
    • 하드웨어 계층 : 실제 형태를 갖는 다양한 물리적 계층
      서버 - 컴퓨팅 능력. 스토리지 - 데이터 저장. 네트워크 장치 - 통신 지원
    • 가상화 계층 : 물리적 자원을 가상화해 유연하게 사용할 수 있도록 한다.
      서버/스토리지/네트워크 가상화로 나눌 수 있다.
    • 클러스터 관리 계층 : 가상화된 자원을 통합해 활용하고, 관리하고, 모니터링하기 위한 계층
      • 자원을 적합한 형태로 제공하는 프로비저닝
    • 분산 시스템 계층 : 분산 데이터 관리 및 분산 파일 시스템
      언제든지 확장 가능하고 고성능이 저장을 제공하기 위해 여러 컴퓨팅 노드들로 구성된 분산 형태를 취하고 있다.
  • 가상화 기술
    • 소프트웨어 기술을 활용해 물리적 자원을 논리적으로 추상화해 원하는 형태로 해당 자원을 분리, 통합할 수 있게 하는 기술이다.
      하나를 분리하거나, 분리된 것을 하나로 합치는 것도 가능하며, 물리적 실체는 변하지 않지만 논리적으로 변한 것처럼 만드는 것으로 클라우드 컴퓨팅에서 가장 중요하고 필수적인 기술 중 하나.
    • 장점 : 경제적
      • 총소유비용 감소
      • IT 자원 운영과 관리 효율성 극대화
    • 장점 : 관리 측면
      • 시스템 구축이 비교적 쉽고, 설치나 관리 부하를 줄일 수 있다.
      • 가상화의 시스템 이전 기능을 통해 비교적 쉽게 전체 서비스 가용성을 높일 수 있다.
      • 소프트웨어 개발환경에 큰 도움이 된다.
      • 여러 개의 서버를 하나로 합쳐 공간을 확보하고 유지 소요도 줄일 수 있다.
    • 서버 가상화
      • 하드웨어 가상화
        여러 운영 체제를 실행할 수 있는 환경을 제공.
        서버 가상화에서는 하드웨어와 운영 체제 사이에 하이퍼바이저가 위치해 하드웨어 가상화 기능을 운영체제에 제공한다.
      • 운영체제 가상화
        하드웨어에서 운영체제로, 가상화 단계를 한 단계 올린 것이다.
        운영체제를 가상화하면 운영 체제와 프로그램 사이에 가상화 계층이 존재, 상위 프로그램과 상관없는 독립적 실행 환경을 제공한다.
    • 스토리지 가상화
      스토리지 가상화를 통해 스토리지를 유연하게 관리할 수 있다. 백업 속도와 장애 복구 난이도를 개선할 수 있고, 데이터 마이그레이션 성능을 향상시킬 수 있다. 데이터 스트라이핑하여 데이터 입출력 성능을 향상시킬 수 있고, 데이터 미러링/복제를 통해 데이터 손상을 최소화 할 수 있다.
    • 네트워크 가상화
      네트워크 자원을 가상화하고 서버의 가상화 역량을 보완하는 데에도 필요하다. 회선을 가상화해 여러 회선의 결합/분할 등을 가능하게하고 최소 비용으로 네트워크 장비의 활용을 극대화할 수 있다.
  • 클러스터 관리
    • 컴퓨터 클러스터 : 많은 양의 계산을 하거나 데이터를 저장하기 위해 여러 대의 컴퓨팅 자원을 하나로 묶어놓은 시스템으로 논리적으로 엮여있기 때문에 사용자 입장에서는 하나의 시스템을 사용하는 것과 같은 효과를 얻을 수 있다.

0개의 댓글