Notice
Recent Posts
Recent Comments
«   2024/06   »
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
Archives
Today
Total
관리 메뉴

채록채록

[CloudComputing] Review_A View of Cloud ComputingReview 본문

Cloud Computing

[CloudComputing] Review_A View of Cloud ComputingReview

김책은 2024. 3. 22. 21:12
  1. 클라우드의 기본이 되는 IaaS에서의 클라우드 서비스 종류는 구성 및 서비스 성격에 따라 Public cloud, Private Cloud, Hybrid Cloud로 나누어진다. 그런데 private cloud가 internal data center를 지칭하기 위해 사용되는 용어라면 전통적인 onpremise 방식의 인프라 내에서 내부망으로 연결된 서버를 이용하는 것과 어떤 차이가 있는지 궁금해졌다. Private cloud를 쓰는 목적이 단순히 general public에게 개방되지 않게 하기 위함일 것이기 때문이라고 생각했기 때문이다. 
    1. 그 둘의 주요 차이점은 인프라 위치이다.
      1. Private cloud는 onpremise datacenter와 동일한 기능을 제공하는 가상화된 환경이다. 즉, 동일한 기능을 하기 위해 원격 인프라에서 호스팅 되며 인터넷 연결을 통해 엑세스 할 수 있는 것이 private cloud이다.
    2. onpremise data center는 사용자 정의 및 완벽한 제어를 가능하게 하지만, private cloud는 확장성과 비용 효율성에 초점이 맞추어져있다.
      1. private cloud는 조직의 IT팀이나 타사 서비스 제공업체가 관리할 수 있다. 따라서 cloud서비스를 이용하는 회사는 하나부터 열까지 시스템을 다 구축할 필요가 없다. 예를 들면, 조직은 전용 하드웨어를 보유하고 있지 않아도 리소스를 provisioning하고 관리할 수 있다.
    3. 의외로 내부망으로 연결된 서버가 확장성과 보안 측면에서 더 제한적이라는 것
      1. 만약 외부 공격자가 내부망에 침투한다면?
      2. 내부망은 외부와의 네트워크 분리가 상대적으로 제한될 수 있다는 것 (내부 시스템과 인터넷 간의 트래픽 처리)
      3. 내부망으로 연결된 서버는 조직이 직접 보안 업데이트 및 관리를 담당해야 한다는 것.
  2. 이러한 장점들과 차이에도 불구하고 cloud computing이 항상 정답이 될 수 없다는 것이 인상깊다.
    1. 그 예시로 ISP에서 호스팅 되는 public-facing internet과 internal enterprise data center whose applications are modified only with significant advance notice to administrators를 비교했다.
    2. 대규모로 부하가 급증한다면 pay-as-you-go의 특징을 가진 클라우드 컴퓨팅 특성상 세분화된 과금을 조직이 감당하지 못할 가능성이 크기 때문이다.
    3. 그럼 재정적 이득을 얻기 위해 사용하는 클라우드 컴퓨팅의 본질을 살리지 못하게 된다.
    4. 실제로 국내 동영상 서비스를 해외 클라우드 서비스로 런칭한 업체는 TCP 연결의 문제로 인하여 잦은 끊김과 장애로 국내로 서버를 이전하고 CDN을 사용하는 등의 대응을 조치했으나 결국 서비스를 종료했다는 것을 본적이 있다.
  3. 네트워킹 관련 과목을 수강하면서 statiscal multiplexing(통계적 다중화)를 이용하여 대역폭을 나누어 여러 장치를 하나의 링크로 연결하여 네트워크 문제를 해결하는 방법에 대해 배웠다. 그런데 마침 해당 article에서도 statiscal multiplexing을 통해 elascity(탄력성)를 달성한다는 말이 나왔다. 이를 통해 수요에 따라 리소스의 효율성을 극대화하는 방법이 겹치는 것이 신기했었다.
    1. 그도 그럴것이 애초에 클라우드 컴퓨팅이라는 것이 외부에 있는 컴퓨터를 이용하는 것인데 네트워크 용어가 등장하지 않을 리 없었다.
  4. AWS EC2, Microsoft Azure, Google AppEngine에 대해 알게되었다.
    1. Cloud computing에서 가상화하여 서비스로 제공하는 대상은 server, platform, software이고 이는 IaaS, PaaS, saaS로 나눠질 수 있다.
    2. Google App Engine은 완전히 관리되는 플랫폼으로, 개발자가 인프라를 거의 신경쓰지 않고 애플리케이션을 개발하고 배포할 수 있도록 지원한다. (application domain-specific platforms)
      1. enforcing an application structure of clean separation between a stateless computation tier and a stateful storage tier.
      2. application frameworks
    3. AWS EC2는 가상머신을 제공하는 인프라 서비스로, 사용자가 가상 서버를 설정하고 관리해야 한다.
      1. EC2 instance looks much like physical hardware, and user can control nearly the entire software stack.
      2. hardware virtual machines
    4. Microsoft Azure는 관리형 플랫폼과 인프라 서비스를 모두 제공한다.
      1. Applications for Microsoft’s Azure are written using the .NET libraries, and compiled to the Common Language Runtime, a language-independent managed environment. The framework is significantly more flexible than AppEngine’s, but still constrains the user’s choice of storage model and application structure.
      2. intermediate between application frameworks and hardware virtual machines
  5. utility computing은 elasticity 측면에서 막강하다.
    1. 단순히 비용을 줄여줄 뿐만아니라, 시간을 절약해주기도 한다.
      1. overprovisioning하면 구축하는데 쓸데없이 미리 시간을 낭비한 것이고,
      2. underprovisioning하면 그걸 감당하려고 확장하는 사이 혹은 slow response하는 사이 고객들을 포함한 잠재적 기회들을 더 잃을 것이다.
      3. 근데 peak load가 잘 예상되었어도, nonpeak times에 낭비되는 자원이 발생하기 마련이다. 
        1. 그래서 사실 elasticity는 더이상 단순한 cost optimization의 여러 방법들 중 하나가 아니라 operational requirement이다.전공연수에서 들었던 수업에서 대기업들에게 스타트업보다 부족한 자원은 ‘시간’이라고 했다.
  6. Business Continuity and Service Availabilty 문제
    1. 독립적인 소프트웨어들을 여러 Cloud Providers를 사용하여 가용성을 최대한 확보한다.
    2. 모놀리틱 구조에서 마이크로서비스 구조로 바뀌어가는 추세가 나오게 된 배경 중 하나일 것이라고 연결지어 생각하게 되었다.
      1. ISP가 여러 network providers를 사용함으로써 회사 하나의 실패로부터의 영향을 최소화하는 전략을 취했던 것과 같은 해결책이다.
      2. 여기서도 네트워크가 등장하는 것 보면 클라우드 컴퓨팅은 통신 분야와 정말 밀접한 관계인 것 같다.
  7. Data Lock-In 문제
    1. 사실 여러 Cloud provider를 사용하여 독립적인 소프트웨어를 구성하는 것은 플랫폼 간 상호 운용성을 필요로 한다.
    2. 그래서 한 플랫폼에 너무 의존적이면 data나 programs를 다른 곳에 옮기는 것이 어려워지고, 그럼 price increasement, reliablity problems, providers going out of business 문제에 취약해진다.
    3. 이는 SaaS 개발자가 API를 표준화함으로써 여러 cloud computing providers에 걸쳐 서비스와 데이터를 배포할 수 있게 하는 것으로 해결할 수 있다.
      1. 소프트웨어가 해결책이 되는 사례
      2. API를 표준화한다는 것은 응용 프로그램 인터페이스를 표준화한다는 것.
        1. 벤더 종속성을 줄이고
        2. cloud computing providers 간의 경쟁을 촉진시키고
        3. 고객은 더 많은 다양성과 선택권, 솔루션의 기회를 가질 수 있다.
      3. 개발자는 빅테크 기업에 종속적이라고 생각했는데 오히려 기업의 경쟁을 촉진시키는 역할을 할 수 있다는 점이 인상깊다.
        1. 이러한 소프트웨어적 발전이 cloud computing 시장을 활성화 시켜 new usage model인 hybrid cloud computing과 surge computing을 가능하게 했고, 그것은 또 꼬리에 꼬리를 물고 시장을 확장시킨다.
        2. 이것 역시 다 resource를 동적으로 조절하기 위함이다.
  8. Data Confidentiality/Auditabilty 문제
    1. 앞에서 내가 생각했던 것처럼 외부의 컴퓨터를 이용한다고 하니 보안이 우려되는 사용자가 있었던 것 같다.
    2. 보안 문제를 가상화로 해결한다는 점이 인상깊다.
      1. virtual machine이 real machine보다 성능이 떨어지고 버그 문제 등 때문에 안정하지 못할 것이라는 고정관념을 갖고 있었기 때문이다.
      2. 그런데 오히려 resource, network를 격리한다면 보안 문제의 향상에 도움이 된다는 관점을 얻을 수 있었다.
    3. 또 무조건 기술적으로 해결하려하기보다는 사용자나 외부적 제제(정책 등)으로 해결한다.
      1. 넓은 시야를 가진 융합형 인재가 이래서 중요한걸까 싶었다.
      2. 사용자에게 보안 문제를 해결할 수 있게끔 한다는 것이 블록체인 기술을 떠올리게 하기도 했다.

이 그래프 보긴 참 많이봤는데 직접 내 말로 정리하면서 이해하니 더 와닿는다.