Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[마이크로서비스프로그래밍] Lecture02 - Cloud Computing & Infrastructure 본문

3학년 2학기 전공/마이크로서비스프로그래밍

[마이크로서비스프로그래밍] Lecture02 - Cloud Computing & Infrastructure

시데브 2024. 9. 12. 12:09
경희대학교 이성원 교수님의 마이크로서비스 프로그래밍 수업을 기반으로 정리한 글입니다.

 

Goals of Reading Articles 

  • What is cloud computing? + utility clouding & cloud computing economics
  • cloud computing의 구성요소 & service models
  • What are the issues of cloud computing?

 

Cloud Computing Concept

Cloud Computing 

  • Infrastructure: CPU, Storage, Network
  • Plaform: Database, Object Storage -> 개발자들이 사용하는 middleware, framework, ...
  • Application: youtube, netflix, khu email, ...
  • 언제 어디서든 접근할 수 있고, 사용하기 편리함, 필요할 때 필요한 만큼의 resources를 제공받음, 
  • 사용자가 필요한 computing infrastructure를 보유하지 않고, 빌려쓰는 개념

Cloud Computing에서 빌려쓰는 것

  • applications delivered as services
  • The hardwae & system software in the data centers
  • >> 이런 hardware와 software를 보유한 data center를 Cloud라 부름

Cloud Computing 3가지 장점

  • 수요에 따라 almost infinite computing resources를 사용할 수 있음
  • up-front commitment -> 사용하는 만큼만 지불하면 됨, 최소비용 문제 없음
  • pay for use of computing resources

 

Public Clouds vs Private Datacenters

  • 필요한 만큼 거의 무한정으로 computing resources를 제공받을 수 있음
  • 초기 지불 비용이 없음
  • 사용한 만큼만 비용 지불
  • 직업 infra를 가지고 있는 것보다 경제적
  • 전체가 가지고 있어야 할 컴퓨터의 개수가 줄어듦
  • resource virtualization을 통해서 operation 단순화 & 편의성 향상

 

Classes of Utility Computing

  • Uitility Computing, 즉 on-demand computing은 제공하는 cloud system software에서 어떤 요소들을 제공하는지에 따라 구별된다.
  • Amazon EC2: hardware(CPU, OS, ..) 제공
  • Google AppEngine: hardware(CPU, OS) + library, application 정도까지 제공
  • Amazon S3: Storage 제공

 

Cloud Computing Economics

  • rent하는 cpu, storage, network이 얼마만큼 필요할지 생각해야 함
  • service의 수요가 얼마나 지속될 것인가?
  • 사전에 얼마 만큼의 수요가 있을지 예측할 수 있는가?
  • 소유한 자원에 따라, 어떤 방식으로 서비스를 운영할지 생각해봐야 함
    • 비용적인 측면에서 여유로우나 시간이 촉박 -> 1000개의 컴퓨터로 1시간을 돌리는 방법
    • 시간은 여유로우나 비용적인 측면이 어려움 -> 1개의 컴퓨터로 1000시간을 돌리는 방법
    • 비즈니스의 경우, 대부분 시간이 훨씬 중요함

 

Components of Cloud Computing 

- Five essential characteristics

1. On-demand self-service -> 필요할 때 필요한 만큼 사용

  • 사람이 수작업으로 개입하는 부분이 없어야 한다. -> 자동화된 시스템
  • 시스템에 의해서 바로바로 이뤄져야 함

2. Broad network access -> 언제 어디서든 접근이 가능해야 함

  • data center 내부에 있는 deivces 사이를 연결하는 network는, 외부와 내부를 연결하는 network 보다 몇 배는 더 빨라야 함

3. Resource pooling -> 한정된 자원을 효율적으로 사용

  • Resources는 pooled together -> multiple customers에 의해 사용됨 -> multi-tenant model 
  • virtual & physical resources -> 수요에 따라 동적으로 할당/재할당 -> 사용하는 만큼 지불하기 때문에, 계획을 엄격하게 세워서 효율적으로 사용해야 함

4. Rapidly elastic -> 자원의 수요에 따라, 공급을 유동적으로 & 빠르게

  • 수요에 따라 quickly & automatically 자원이 조정돼야 함

5. Measured service -> 사용한 만큼 비용을 지불할 때, 비용을 책정하는 기준이 신뢰할 수 있어야 함

  • 얼마 만큼 사용했는지 automatocally monitoring
  • load를 확인하고 resource controll
  • 이 모든 정보를 기반으로 깔끔하고 정확하게 비용을 report 해야함

 

- Three service models

1. Software as a Service (SaaS)

 

2. Platform as a Service (PaaS)

-> 개발자가 개발하기 편하도록, 개발 환경을 빌려쓰는 형태

 

3. Infrastructure as a Service (IaaS)

 

- Four deployment models

1. Private Cloud

  • 집단 내부에서 cloud computing을 개발하여, source를 빌려주는 cloud 형식

2. Community Cloud

  • 집단 내부에서 개발한 private cloud를 뛰어넘는 성능이 필요할 때, 신뢰할 수 있는 다른 조직의 cloud computing을 빌려쓰는 형식
  • 서로 대가를 지불하지 않는 것이 일반적
  • ex) 국가 관공서

3. Public Cloud

  • 제 3자의 cloud를 빌려 쓰고, 비용을 지불하는 방식

4. Hybrid Cloud

  • private cloud + public cloud
  • 평상시에 private cloud를 사용하다가, 특정 시점에 public cloud를 빌려쓰는 것

 

Obstacles & Oppotunities

  1. 한 회사의 public cloud service만 믿고 사용할 수 있는가? -> 대안 마련
  2. 하나의 public cloud service에 너무 많은 기반을 두어, 다른 cloud로 옮길 때 이전 회사에 묶여버리는 현상 -> lock-in
  3. cloud의 보안을 믿을 수 있는가?
  4. 통신이 원할한가?
  5. 성능 예측이 가능한가?
  6. 저장 공간이 적재적소하게 확장/축소되는가?
  7. Bugs
  8. 용량 확장에 많은 시간이 걸림
  9. multiple users가 한 번에 사용할 때 -> 연쇄 반응
  10. software license fee

-> 단점을 보완하면서 사용