컴퓨터 네트워크 (10), Cloud Computing

2022. 6. 15. 02:43강의 내용 정리/컴퓨터 네트워크

728x90
반응형

Cloud Computing


1. Introduction to Cloud Computing

1) Cloud Computing이란?

(1) Cloud Computing의 기본 개념

- 구름처럼 실체가 존재하지만 정체가 드러나지 않는 것을 구름, 안개에 빗대어 설명한다. 다시말해 어딘가에서 서버와 네트워크가 존재하지만 어디에 위치한지는 잘 몰라도 사용할 수 있다. 단지 내가 필요할 때 필요한 만큼 사용하고 이에 대해 돈을 지불하는 것을 클라우드 컴퓨팅이라 한다.

- 구름에 작업을 요청하는 것이 우리의 어플리케이션 혹은 웹사이트이다. 실제 내가 디스크, 컴퓨터를 가지고 있지는 않지만 어딘가에 있을 컴퓨터에 필요한 양만큼 요청한다. 이에 따라 클라우드 컴퓨터는 일을 처리한 다음 끝난다는 메세지를 보낸다. 필요하다면 여기에 더불어 결과도 다운받을 수 있다. 

- Central server는 필요한만큼의 CPU, 네트워크, 작업 등을 활용해 요청받은 일을 수행한 뒤 이를 돌려보내준다. 이때 머신들은 CPU, 디스크, 네트워크 등이 될 수 있다. 

- 굉장히 오랜 기간동안 있어왔지만 클라우드 컴퓨팅이라는 고유 명사가 등장하고 일반인이 이를 사용하게 된지는 그리 오래되지 않았다.

 

(2) 왜 클라우드 컴퓨팅이라는 개념이 나왔을까?

- 회사 내에서는 나름대로 클라우드 컴퓨팅을 진행하기도 했었다. 이때 회사 내에서 자체적으로 만든 방법을 활용해 했다. ex) 회사 내 슈퍼 컴퓨터가 필요할 때마다 부서마다 예약을 해서 사용했다. 

- 그러나 수업 내에서 클라우드 컴퓨터는 빌려주는 회사와 사용자가 다른 것을 일반적인 형태로 잡는다.

- 왼쪽 그림의 x축은 시간, y축은 CPU의 사용량이다. 즉, 날짜별 CPU 사용률을 의미한다. CPU를 많이 사용하는 날짜는 3000개에 가깝게 사용하고, 사용하지 않는 경우에는 약 300개정도만 사용한다. ex) 경희대학교 수강신청 혹은 회사 컴퓨터의 사용

- 왼쪽 그림과 같이 컴퓨터 사용량이 떨어지는 경우에는 컴퓨터의 대수가 줄어도 일을 할 수 있지 않은가? 혹은 사용하지 않는 컴퓨터를 가지고 돈을 벌 수 있는 방법이 없는가? 하는 물음이 대두된다. 

- 오른쪽 그래프의 x축은 시간, y축은 필요한 컴퓨터의 대수로 봤을 때 처음에는 지지부진하지만 갑자기 인기를 얻게되면 예측할 수 없게 컴퓨터 사용량이 증가한다. 만약 조그만한 벤처 회사는 돈이 많지 않기도하고, 본인이 만든 서비스를 사람들이 얼마나 사용할 수 있을지도 알지 못한다. 또한 벤처 회사는 설비 투자를 할 수 있는 돈이 없기에 기반 시설이 약하다. 하지만 어느 순간 서비스가 폭증할 때 서비스가 중단될 여지가 있는데 누군가가 이때 컴퓨터를 빌려준다면 수요를 맞출 수 있다. 

- 왼쪽과 오른쪽 그래프의 니즈가 서로 맞아서 클라우드 컴퓨팅이 확산되었다. 또한 늘어난 데이터에 따라 빅데이터 분석 및 머신러닝, 딥러딩 분야는 클라우드 컴퓨팅 활성화에 따라 증가했다. 

- 특정시간에만 사용하기에 효율이 떨어지는 컴퓨터를 빌려주는 자, 이를 빌리는 자, 데이터의 증가는 2010년도에 클라우드 컴퓨팅이라는 카테고리가 맞물리기 시작했고, 클라우드 컴퓨팅은 급성장했다.

 

- 매년 2%에서 4%에 해당하는 서버가 자연스럽게 죽고, 1%에서 5% 디스크가 죽는다. 24시간동안 전자제품을 돌리면 전자제품이 망가질 수 있고, 데이터 센터를 전문적으로 운용할 수 있는 사람이 적다. 이에 따라 운용자의 실수로 약 20% 가량은 의도치 않은 결과가 나타나는 일이 있기에 컴퓨터를 빌려주는 의견이 아닌 컴퓨터의 대수를 줄이자는 의견이 대두되기도 한다. 이에 따라 대기업에서도 비용을 줄일 수 있다면 직접 컴퓨터를 사용하지 않고도 서비스를 할 수 있지 않을까?하는 입장이 등장한다.

 


2) Cloud Computing types

XaaS 

어느정도까지 서비스와 기술을 제공할 것인가


 

(1) IaaS (Infrastructures as a Service)

- Virtualized Instance는 가상 머신, Operating System은 게스트 OS라고 부르기도 한다.

- 하드웨어, 운영체제, 가상화된 인스턴스(혹은 가상 머신) 등등을 제공한다.

- 본인이 요청해서 사용하는 것을 물리적으로 원하는 것을 따와서 사용하는 것이 아닌 가상의 컴퓨터를 사용한다. 이에 따라 IaaS는 물리적인 하드웨어 위에서 가상의 컴퓨터가 돌고 이 위에서 운영체제가 돈다. 

- 즉, 컴퓨터와 운영체제를 제공하는 것을 IaaS라고 한다.

 

ex) Amazon Web Services (AWS)

 

(2) PaaS (Platform as a Service)

- 운영체제 이상의 확장 서비스나 미들웨어, 라이브러리 기타 등등 OS 위에 올라가서 제공되면 좋은 것들을 엮어서 제공하는 것을 PaaS라고 한다. 

 

ex) Microsoft Azure // Google App Engine

 

 

(3) SaaS (Software as a Service)

- 빌려쓰는 사람이 개발에 대한 지식이 없이 사용자 입장에서 서비스를 그대로 빌려서 사용하고자 하는 것을 SaaS라고 한다. ex) 경희대학교 gmail

- 빌려쓰는 사람은 아래에서 무슨 일이 있는지 알 필요가 없기에 layer는 User Application만 존재한다고 생각해면 된다.

 

ex) Microsoft Office Live // Microsoft Office Online // Google Apps

 


3) Build Type

빌려주는 자와 빌려쓰는 자의 관계에 의해 결정되는 것


 

(1) Public

- 아마존, 마이크로 소프트, 구글과 같이 빌려주는 회사가 있고, 빌려쓰는 사람은 그 회사 사람이 아닌 경우를 의미한다.

- 각각 회사마다 외부에 컴퓨터를 빌려주는 기술이 별도로 존재한다.

 

(2) Private

- 같은 기관 내에서 클라우드 컴퓨팅을 제공하여 빌려쓰는 경우를 의미한다.

- 클라우드 컴퓨팅을 하기 위한 인프라를 갖추고 필요한 곳에 이를 빌려주는 것을 의미하는 것이기에 내부 자체적으로 필요한만큼 부서간 빌려주는 것을 의미한다.

- 예를들어 Open Stack이 있다.

 

(3) Hybrid

- 우리 회사가 일반적인 경우에는 인프라를 필요한 부서끼리 공유해서 사용하면 문제가 없지만 특정 기간에 시스템이나 사용량이 폭증한 경우에는 문제가 발생할 여지가 있다. 이때 사용량이 폭증한 경우를 위해 컴퓨터를 산다면 매우 비효율적이다. 이때 필요할 때만 외부에서 CPU, 디스크 등을 빌려쓰면 더 효율적이다. 즉, 기본적으로는 Private을 사용하다가 필요할 때에는 Public을 사용하는 것을 의미한다. 이를 Hybrid라고 한다. 

- 개념 상으로는 쉽지만 구현하는 것은 어렵다. 각 기관마다 컴퓨터를 빌려쓰는 방법이 다르기 때문에 이를 고려해서 구현하기 어렵다. 더불어 IaaS는 회사가 지원하는 것이 비슷하지만 PaaS는 회사가 지원하는 것이 매우 다르다. 이에 따라 이를 구현하는 것은 상당히 어렵다.

 

 

 


2. Public Cloud Services

1) 아마존 웹 서비스 (AWS)

 

- IaaS에 가장 큰 핵심인 Compute, Disk, Storage도 존재한다. 이 뿐만 아니라 AR, VR, 고객관리, 스트리밍, 개발도구, 게임, IoT, 머신러닝, 네트워크, 로봇, 모바일, 위성, 보안 등등 여러 서비스를 지원한다.

- 아마존은 물건도 팔고, 음악도 팔고, 영화도 파는 실물/디지털 자산을 파는 판매기업이다. 이에 따라 직접 서비스를 하며 자체적으로 개발한 것들을 제공한다. 이는 PaaS에 해당되는 것들로 본인들이 잘해온 것을 남들에게 빌려준다. 이런 식으로 Public Clouding Computing 회사는 IaaS위에서 PaaS로 제공하는 방식이 많다.

 

- 각 분야별로도 다양한 종류의 서비스가 존재하는 것을 확인할 수 있다.

- 내가 짜는 소프트웨어가 어떤 기능을 제공하는지 확인하는 것도 중요하다. 이는 회사별로, 분야와 기능별로 다르기 때문이다.

 


2) Microsoft Azure

- 기업용 소프트웨어를 매우 잘한다. 핵심적인 것은 닷넷이다. IaaS에 해당하는 것을 제공함과 더불어 마이크로 소프트가 잘하는 것을 추가로 제공한다. 

- 개발도구 또한 이를 사용하기도 한다.

- 삼성전자와 더불어 국내회사가 해외에 진출해 서비스를 제공했을 때 마이크로소프트를 많이 사용한다.


3) Google

- 구글은 빅데이터, 머신러닝의 최강자로 서비스를 제공한다.

- 매우 많은 검색과 이를 분석하는 것, 구글이 가진 하드웨어 중 텐서플로를 잘 돌리는 텐서프로세서(TPU) 위에서 소프트웨어를 짤 수 있도록 돕는 서비스 등을 제공한다.

- 최근에는 게임 서버를 제공한다.

- 구글이 제공하는 구글 클라우드 플랫폼을 제대로 사용하는 것 중에 게임이다. 

- 5G 이동통신이 나오며 MMORPG 게임이 등장하기 시작한다. 

- 클라우드 컴퓨팅에서 게임에 많은 심혈을 기울리고 있다.

- 구글은 운영체제와 브라우저 등이 존재하기에 많은 장점을 가지고 있다. (안드로이드, 크롬 등)

- 게임 로직만 가져와서 그 외에 가입자를 받고, 돈을 받고, 분석하는 등의 것들은 확보할 수 있기에 매우 큰 장점이 있다.

 

- 구글은 데이터 분석 및 빅데이터 쿼리, 수많개의 데이터를 관리하고 트래픽을 제공하거나 서버가 잘 돌아가는 지에 대한 전반적인 유지관리 등은 구글의 소프트웨어를 이해하고 사용만하면 된다.

- 이에 따라 구글은 굉장히 많이 사용된다.

 

- 2016년도에 농사를 제대로 짓기 위해 텐서플로우를 사용해 오이의 사진을 이용해 머신러닝을 해서 작황을 늘리고자 했다.

- 아두이노 마이크로를 통해 지나가게하는 선반을 만들고 오리를 카메라로 찍을 수 있게 라즈베리파이로 장치를 만들었다. 이를 텐서플로우와 오픈소스를 통해 구글 클라우드에서 디장고를 통해 오이를 구분하고 이들에 대한 분석도 해보고 작황을 늘릴 수 있었다.

- 즉 구글은 민간인도 사용할 수 있을 만큼 간단하게 구현할 수 있고 소규모 회사에서도 이를 사용하기 쉽다.


4) Apple

- 각 회사의 비즈니스 모델을 외부 서비스로 제공하기에 PaaS는 기업마다 다르다. 

- Apple은 애플 디바이스를 통해 돈을 벌고, 음악과 게임 등을 제공해서 돈을 번다. 이에 따라서 애플은 디바이스를 통해 사용할 수 있는 클라우드를 원한다. 

- iCloud 이전에는 맥캔토시 케이블?을 통해서만 디바이스간 통신을 했었다. 따라서 전화 케이블을 통해 통신을 했다. 이때 아이폰으로 다운받은 것을 애플티비나 아이패드로 보고싶을 때 케이블을 꼈다 껐다 했는데 이는 비효율적이다. 이후 iCloud를 사용해서 애플 기기들 간에는 백업이나 컨텐츠를 공유하고자 했다. iCloud라고 불리는 애플의 클라우드는 돈을 받고 파는 것이 아닌 애플 비즈니스가 기기를 파는 것이 중요하기에 이를 위한 용도로 사용한다.

- 따라서 애플은 싱글 아이디를 사용한다. 결국 아이디를 통일하고, 동일한 아이디가 있으면 모든 다 되도록 한다. 그리고 개발자 입장에서 API가 풍성하기도 하다.

- 게임센터나 IChat을 섞으면 게임을 만들 때 알아서 디바이스를 연결해주는 등의 역할을 해주기도 한다. 단 cpu나 디스크 등을 빌려주는 것이 아닌 애플 기기를 사용하는 컨텐츠가 제대로 돌아가고 이를 만드는 사람을 위한 것이다. 

- 따라서 클라우드 컴퓨팅은 상당히 다양한 방법으로 제공된다.

 


3. Cloud Computing APIs

1) EC2

(1) EC2란?

- PaaS와는 다르게 IaaS는 어느 회사에 있는 것을 빌려도 비슷하다. 따라서 일반화되어서 어느 회사에 접속하더라도 대부분 동일하게 사용가능하다. 따라서 그나마 재활용 가능한 함수가 존재한다. 이들 중 유명한 것은 EC2와 S3이다. 아마존이 만든 EC2와 S3는 업계의 표준이 되었다.

- 계산할 수 있는 CPU를 빌려쓸 수 있다. 인터넷을 통해 필요한 양만큼 사용 가능하다. 대부분 인터넷 서비스를 목적으로 빌려쓴다.

- 대부분 CPU/디스크/장비 등을 어떤 것으로 쓸지, 어느 지역으로 설정해서 사용할지 등을 설정해야한다. 내가 원하는 곳에서 서비스를 지원하는 글로벌 회사를 사용할 수 있다.

- 아마존이 제공하는 컴퓨터의 타입을 정해서 이를 보내고, 어떤 네트워크를 사용할지 등도 정하게된다. 추가적으로 언제 살아나고, 언제 죽는지 등도 처리할 수 있다.

- 돈을 지불하기 전에 얼마나 사용했는지 확인하는 절차도 가능하다.

- 이를 할 수 있는 API 함수가 EC2이다.

 

(2) EC2의 특징

- EC2는 아마존이나 마이크로소프트나 구글이나 다들 비슷하다. 이 중 아마존은 EC2

- 언제 시작하고 언제 멈출지, 네트워크 I/O instances, 스토리지, CPU 컨피규레이션, 위치, IP 주소에 대한 부분, 용량이 부족하면 자체적으로 늘리는 기능 등등 가능하다.

- 이미지를 나름 커스터마이즈해놨다. 본인들의 클라우드 환경에 맞게 커스터마이즈해놔서 이를 사용할 수 있다. EC2는 CPU와 그 위에 올라갈 운영체제에 대한 것들이 될 수 있다.

 

2) S3

- 단순하게 스토리지를 관리하는 서비스

- REST, SOAP 등의 웹 서비스 인터페이스를 제공하거나 아마존이 사용해서 검증된 것들을 제공해준다.

- SLA(service-level agreement)도 작성해 얼마의 오류율을 보장할지 계약서를 써서 보장해준다.

 


4. Thin Client

1) Thin Client란?

 

- 생긴 것은 노트북이지만 살아나면 웹 브라우저만 띄울 수 있다. 그래서 실제로 컴퓨터의 스택을 보면 얇은 운영체제가 있어 웹 브라우저를 띄울 수 있다. 따라서 웹 브라우저 바깥에서 무언가를 쓰는 것은 금지되어있다. 그래서 돌아가는 어플리케이션은 웹 브라우저에 붙어서 해야해서 저장하는 것은 클라우드 디스크에서 해야한다. ex) 구글 닥스는 웹 브라우저에서 할 수 있다. 이를 타겟해서 만든 것이 Thin Client이다.

- 가장 유명한 예시는 구글 크로미움 프로젝트로 오픈소스 프로젝트이다. Chromebook은 크로미움 OS를 사용해서 구현할 수 있다. 제품별 가격은 싸면 15만원 수준으로 할 수 있다.

- 웹 상으로 서비스가 돌아가기에 강력한 하드웨어에 기반해 웹브라우저를 띄우는 것 외에는 그렇게 많은 작업을 하는 것은 아니다. 따라서 회사와 공공분야에서 많이 쓰인다. 

- 크롬 OS는 일부 수정을 거쳐서 웹 브라우저에서도 크롬북에 저장할 수 있도록 열어둔 것도 있다. 하지만 원래는 저장을 못하기에 보안에 좋다.


2) 대표적인 예시

(1) Google

- Chromium Projects

 

(2) Firefox

- Firefox OS Projects

 

(3) FlintOS

- 클라우드에서 소프트웨어를 받아 작업도 클라우드에서 하고, 보안을 굉장히 강화했다.


3) Eductaion

- 웹 브라우저에서도 돌릴 수 있다. 즉, 웹 브라우저의 수준이 매우 높아진 것을 알 수 있다.

- 보안도 좋다.

 


4) 예시

- POS System

- 네트워크 하에 신용카드를 읽기만하고, 사용자와 유저 인터페이스를 진행하고 포스가 해야하는 일은 서버에서 진행한다.

- 태블릿 장치에 웹 브라우저가 붙은 것이기에 비싼 장치였지만 Thin client화 되고 있다.

- Thin Client는 웹브라우저를 통해 어디에 붙는 거에서 시작해서 유저 인터페이스만 있고, 네트워크 통신을 통해 서버와의 통신을 하는 것으로 많이 확장되었다.

 


5. Private Cloud Solutions

1) OpenStack

- 2010년에 OpenStack 소프트웨어가 나타나고 2010년말에 정식으로 릴리즈되었다.

- 나사가 함께 했는데, 원래 클라우드 컴퓨팅이라는 고유명사를 쓰기 전에도 연구소와 같은 곳에서는 슈퍼컴퓨터를 사용하며 이와 비슷한 개념을 이미 절차상에 도입했다.

- 나사는 컴퓨터가 많이 필요함에도 불구하고 재정상 원활하게 사용하지 못하는 경우가 발생한다. 결국 내부적으로 사용했던 기술을 오픈하기 시작한다. 이에 따라 클라우드 컴퓨팅 사업이 커지니 나사도 이를 빌리고자 했다.

- 오픈스택 소프트웨어를 설치하면 회사 내에서 클라우드를 구현해서 회사 내에서 필요한 사람들에게 빌려줄 수 있고, 이를 기반으로 외부에 있는 사람들에게 빌려줄 수 있게되었다.

- 오픈스택 소프트웨어를 만든 언어는 파이썬이다. 오픈스택은 파이썬을 쓰고, 이를 확장하기 위해 파이썬을 사용해야한다. 파이썬은 이에 따라 기본 언어가 되었다.

- 클라우드 컴퓨팅은 가장 필요했던 사람들은 데이터 다루는 사람들이었고, 오픈스택은 파이썬으로 구현했으니 파이썬은 급격하게 성장했다. 이에 따라 클라우드 컴퓨팅과 파이썬은 궤적을 같이했다. 결국 데이터 싸이언스, 인공지능이 빠르게 퍼지는데 불을 지핀 것이 오픈스택이라고 할 수 있다.

 

- 개발자가 10만여명, 약 700여개 회사, 180여개 국가에서 사용하고, 코드 사이즈가 매우 많은 등 널리 사용된다.

- 이것을 본인의 회사에서 직접 구현할 수 있다.


2) Open Stack 흐름

- 컴퓨트, 네트워킹, 저장소 등을 원하는 사람이 사용할 수 있도록 API가 존재하고, 대쉬보드로 관리할 수 있다.

- 이를 기반으로 한 데이터 분석, 인공지능, 알고리즘 기타 등등이 확장되었다. 벤처 IT 업계도 매우 활황이되는데 기반이 되었다.

 


6. Beyond Cloud Computing

1) 기술의 종류

- 오픈스택은 2010년에 개발되었고, 디스크를 사용하는 Ceph은 2007년 이전에 개발되었다. 가상머신을 사용하는 KVM은 2007년 이전, 네트워크 기반의 Open vSwitch 2007년 쯤에 개발되었다. 인기가 있던 시점이 그리 오래되지 않았지만 개발 시기를 고려해보면 조금 오래되었다.

- 또한 퍼블릭 클라우드에서는 외부의 누군가에게 빌려주었다면 프라이빗 클라우드는 우리가 만든 인프라 위에 우리가 만든 소프트웨어가 올라가는 것이 특징이다. 


2) 가상 머신

- 대부분의 회사는 개발환경을 통일한다. 그렇다면 우리 회사에서 서비스를 돌리는 것의 상당량의 OS가 리눅스로 통일되었다면 데이터 센터, 클라우드 센터를 다른 것으로 만들 필요가 없다. 따라서 가상화를 할 때는 우리 회사에서 사용되는 리눅스를 올리고 가상 머신을 띄었을 때 또 리눅스를 올리게 된다. 이는 다소 비효율적인 구조가 된다. 이때 Apple이 성능이 30% 가량 날라간다고 코멘트를 날린다.

- 따라서 가상머신을 기반으로 만드는 것은 비효율적인 것 같다고 얘기한다. 이후 컨테이너 기술이 발전한다.

 

- 리눅스 오버 리눅스를 해결하기 위해서 컨테이너 기반의 데이터 센터 개발 및 운영 방법으로 전환된다.

- 이때부터 데이터센터라는 단어들이 일반화되었다.

 


 

3) 가상머신과 컨테이너

- 실제 물리적인 컴퓨터가 있지만 이 위에 가상 머신을 올리고 그 위에서 사용하고 싶은 운영체제가 올라가는 IaaS의 형태를 조금 구체적으로 그린 그림

- 왼쪽은 가상머신 혹은 IaaS이다. 

- 컨테이너 기술은 원래 리눅스를 기반으로 해서 오래전부터 있었지만 컨테이너 단위로 움직이기에 모두 하나로 묶어서 설치해야하고, 지울 때 모두 지우기에 일반화되지는 않았다. 필요한만큼만 쓰고 반납하고자하는 게 포인트이다. 가상머신은 가상으로 떨어져있기에 서로 영역을 침범하지 않았던 것처럼 컨테이너도 서로의 영역을 침범하지 않는다. 

- 컨테이너는 리눅스 오버 리눅스와 같이 성능을 줄이는 것을 하지 않고, 호스트 OS 위에 그냥 돌아간다. 따라서 가상 머신에 의한 오버헤드도 없고, 필요한 프로그램을 설치하고 지울 수 있다.

- 호스트의 OS를 사용하기에 가상 머신이 없고 상당히 가볍다. 사실은 전통적인 기법으로 서로 독립적으로 돌아간다. 이러한 컨테이너를 효과적으로 구현한 회사가 도커이다.


4) 도커

- OS위에 OS가 올라가는 것이 아닌 OS 레벨의 가상화이다. OS 레벨에서 컨테이너가 들어갔다 나오게 하는 것을 향상시켰다. 

- 이는 리눅스 위에서 돌아갔으나 윈도우즈나 맥OS 위에서도 도커를 사용하면 내가 원하는 소프트웨어를 컨테이너로 사용하고 지울 수 있다. 

- 2013년 3월에 나왔고, 도커가 고 랭귀지로 짜는 바람에 서버의 언어로 히트를 쳤다.

- 리눅스에서만 돌아갔던 컨테이너 기술을 윈도우즈와 맥OS에서도 쓸 수 있게 한 것이 가장 큰 인기를 끌게 된 것이다.

- 애플처럼 가상머신을 띄운 프라이빗 클라우드인 데이터 센터 기술을 잡아먹는다.

- 하지만 수천 수만개의 컴퓨터에도 돌아가게끔 만들지는 못했다. 도커를 가지고 개별 컴퓨터 위에서 이를 도입하는 것은 만족스러웠지만 수많은 컴퓨터에서는 사용하지 못해 이는 별도로 나왔다. 이는 쿠버네티스이다.


5) 쿠버네티스

 

- 많은 컴퓨터 위에서 관리하고 제어하고 운영하는 것은 쿠버네티스가 가능하다. 이는 구글이 만들었다. 

- 쿠버네티스는 수십만개의 소프트웨어가 서로다른 컴퓨터에서 돌아갈 때 유기적으로 돌아갈 수 있도록 관리해주는 오케스트레이션이 가능하다. 

- 오픈스택처럼 수천 수만개의 네트워크, CPU가 있다면 원할 때 퍼져나가고, 필요할 때 더 많은 CPU 사용, 적은 CPU 사용의 Scaling, 관리 등을 하게된다.

- 구글은 클라우드 네이티브 컴퓨팅 파운데이션에 헌정한다. 이는 리눅스 파운데이션 산하의 파운데이션이다.

- 파운데이션은 오픈 소스 소프트웨어들의 유지관리, 마케팅 등등을 한다. 클라우드 네이티브의 분야가 인기를 끌기 시작하고 확산되자 소프트웨어의 설계부터 수천, 수만개에 맞도록 했다. 워낙 이 분야가 커지다보니 리눅스 파운데이션이었지만 클라우드 네이티브 컴퓨팅 파운데이션으로 떼어 냈다.

- 개발자는 도커 컨테이너 위, 운영은 도커와 쿠버네티스 위에서 사용한다.

 

- 쿠버네티스가 관리하는 노드가 있고, 쿠버네티스는 이 위에서 돌리기 위해서 설치되어야한다. 이때 가상 머신이 아닌 팟이 한다.필요할 때 노드들에 내가 돌리고 싶은 팟을 돌린다. 쿠버네티스도 대장도 있어 마스터가 전체 소프트웨어에 대해 관리를 한다.

 

- 도커와 같은 컨테이너 기술을 사용한다. 컴퓨터는 노드라고 불린다. 이때 필요할 때 필요한 만큼 사용한다. 필요한 소프트웨어를 엮어서 팟이라는 개념으로 만든다. 예를 들어 하나의 팟은 웹서버는 프론트 엔드와 백엔드가 있을 수 있다. 추가적으로 정보가 저장되는 데이터 베이스가 있을 수 있는데 이렇게 의미있는 묶음을 팟으로 얘기한다. 쿠버네티스는 노드들에 필요한 만큼 팟을 띄우는 것이다. (필요로하는 프로그램의 집합?)

- 기반 기술은 노드들의 도커이다. 쿠버네티스는 도커가 아니더라도 여러 컨테이너 기술을 사용할 수 있다. 

- 오픈 스택 소프트웨어에 필요한만큼 달라고 요청하는데, CLI를 통해 서비스를 요청하는 사람은 쿠버네티스의 마스터에 요청하고 마스터는 누구에게 줘야할지 스케줄링하고, 컨트롤링, 노드 통신을 위한 API를 제공해주기도 한다.


5) Cloud Native 

 

- 컨테이너는 소프트웨어의 개발 및 운영은 굉장히 큰 변화를 맞이한다. 위와같이 거대한 파고가 만들어졌다.

- microservices:  프로그램을 잘게 쪼개서 실행파일을 잘게 쪼개진 것으로 돌리는 것을 의미한다. 이전에는 하나의 실행 파일 안에 모든 프로그램을 돌려서 매우 큰 용량을 가지게 되었다. 이를 모놀리틱이라고 한다. 심지어 요즘은 매우 작게 쪼개서 컴퓨터에 돌린다는 의미로 서버리스 Lambda 프로그래밍이 등장한다.

- Continuous Delivery: 또한 작게 함수를 쪼개기에 각각의 프로그램을 각자 짜게 된다. 이를 각자 최적의 언어로 개발하게 되었고, 설계부터 개발까지 매우 빨라졌다. 심한 경우에는 아침 -> 저녁에 릴리즈를 할 수 있게 되었다. 또한 자동화라는 툴이 되었다. 

- 위의 모든 것을 함축적으로 말하면 DevOps가 된다. 개발과 운영은 하나로 밀결합되고, 이에 맞춰 개발 환경 및 프로세스는 자동화되어야한다.

 

(2) Cloud Native Foundation

- 매우 많은 기업이 포함되어있고, 위의 소프트웨어를 유지보수, 관리, 운영하는 것은 클라우드 네이티브 파운데이션이다.

- 클라우드 네이티브가 큰 파고로서 서버, 데이터 센터의 환경/문화/개발 방법을 바꾸고 있다.

 

 

6) Edge Computing

StaringX

- 기존의 중앙집중형 데이터 센터가 아닌 조그마한 데이터 센터가 유저들 가까이에 들어간다. 

- 네트워크 서비스가 일반화된 현실 속에서 사용자 가까운 환경에서 서비스를 하는 것이다.

- 오픈 스택이 진화해서 StalingX라는 소프트웨어가 출시된다. One of Them 중 하나로 예시를 가져온 것이다. 

- 쿠버네티스와의 연동도 가능하다. 빌려주는 것은 어렵지 않다.

 

(2) Use Cases

 

- 지역에 맞는 어그멘티드 리얼리티 서비스이다. 이에 따라 지역에 가있으면 된다.

- 무인자동차는 지역에 민감하다 이에 따라 가까운 부분에 내린다.

 

- 사이즈가 큰 영상 데이터도 가까운 곳에 두고 사용하면 좋다.

 

- 무선랜, 이동 통신 등을 아우르는 넷이다.

- 인터렉티브하게 하기 위해 엣지단에 서버를 두는 것을 많은 고민을 한다. 이러한 부분은 게임 네트워크를 할 때 한번 더 언급이 된다.

 

단점

- 건물 안에 집어넣으면 보안 유지가 쉽다. 하지만 엣지 컴퓨터는 보안 문제가 발생할 수 있고, 소프트웨어도 작은 애가 가야한다. 또한 신뢰성이나 용량 확장 등의 에러가 있을 수 있다.

- 레이턴시를 줄이는 것에 최적화해야하고 각각에 맞는 관리 기법이나 라이프 사이클을 고려해야한다.

- 이는 찾아보고 있는 단계이다.

 

7) Software-Defined Car

 

- 자동차 내에 CPU 프로세서를 파는 ARM 회사는 밑에 수많은 하드웨어 장치를 붙이고 그 위에 가상 머신 레이어를 쌓는다. 가상머신 지원이 되는 환경이다. 밑에서 하드웨어가 존재하고 이를 소프트웨어가 제어할 때 클라우드 컴퓨팅에서 많이 해봤으니 ARM 기반의 프로세서로 이를 구현할 때 실질적인 디바이스 기술은 소프트웨어로 짜서 돌리고자 했다.

 

- 현재는 별도의 기기를 연동하는 자동차가 미래에는 소프트웨어화되어있는 자동차를 만날 수 있을 것이라고 한다.

728x90
반응형