[Lecture] Cloud Computing

HEEJOON MOON·2021년 11월 30일
0

컴퓨터 네트워크

목록 보기
11/12

< Basic Idea >
필요할 때 필요만큼 CPU/Disk/Network를 사용하고 댓가를 지불하는 것이 기본적인 아이디어다. Program이 실행되지만, CPU, Disk, Network가 어디에 있는지 모른다.

< 등장배경 >

  • Cloud Provider(컴퓨터를 많이 가진 쪽)의 관점에서는, 컴퓨터가 많지만 사용 효율이 떨어지는 문제가 발생하게 되었고, 이에 따라 놀고 있는 컴퓨터들을 빌려주거나 컴퓨터 갯수가 실제로 많이 필요한지 의문을 가지는 사람들로 구분되었다.

  • Cloud Customer(컴퓨터가 부족한 쪽)의 관점을 살펴보면, 높은 설비 투자 비용으로 인하여 컴퓨터가 적은 상황에서 갑자기 서비스 수용가 폭증 시에, 이러한 수요에 대응가능하기 위해 cloud computing을 통해 필요한 만큼 CPU/Disk를 빌릴 수 있다. 스타트업의 경우 이러한 상황을 많이 직면한다.

  • 전자제품들을 24시간 동안 일년 내내 사용하게 되면, 물리적 한계로 인해 망가지며, 사람의 잘못으로 인해 의도치 않은 하드웨어의 손상이 발생하게 된다. 이러한 배경들은 컴퓨터 갯수를 많이 필요한지 의문을 갖는 사람들에게 적용되어, cloud computing의 등장 배경이 되었다.

Cloud Computing Types

IaaS

가장 근본적이고 물리적인 것을 제공한다. 즉, 운영체제와 컴퓨터 장비들을 제공하는 것을 IaaS라 한다. Hardware, Virtual Instance(virtual machine), OS(Guest OS)를 포함한다.

PaaS

IaaS보다 OS위에 더 많은 확장 services, 라이브러리가 올라가 있다. 또한 OS 위에 올라가서 제공될 뻔한 좋은 것들(Framework) 역시 올라가 있다. 플랫폼을 제공하는 것이여서 구현이 필요하므로, 주로 개발자들이 가져다 쓴다.

SaaS

빌려쓰는 사람이 서비스 자체를 빌려쓰고 돈을 지불하는 것이다. 즉, 기술적인 관여 없이 서비스 자체만을 그대로 빌려쓰는 것이다. 예를 들어 경희대학교 Gmail 시스템은 구글이 제공하는 서비스 그대로 빌려서 사용하며, 돈을 지불한다.

Build Types

"빌려쓰는 자와 빌려주는 자와의 문제이다"

Public cloud computing solutions

회사(기관) 밖의 사람들에게 컴퓨터를 빌려주는 개념이다.

Private cloud computing solutions

컴퓨터를 빌리는 사람과 빌려주는 곳이 같은 기관인 개념이다

Hybrid

기본적으로 내부 컴퓨터를 사용하되(private cloud), 추가적으로 필요시에만 public에서 빌려쓰는 개념을 hybrid라 한다. 기술적으로 hybrid는 어려운데, IaaS는 회사별로 비슷하나 PaaS가 매우 다르기 때문이다.

Public Cloud Services

각 회사별로 강점이 있는 서비스를 제공한다.
1) AWS : IaaS에 해당.
2) MS Azure : 기업용 sw를 잘 제공한다. 개발자 도구가 잘 되어있다.
3) Google : 구글은 텐서플로, 알파고등을 개발하며 빅데이터 처리에 강점을 보여서 이와 관련 서비스를 제공한다. 또한 게임 서버 및 개발 도구들도 제공한다

< Different Approach >
Apple은 device를 팔아 수익을 챙기게 되므로, device위에서 영상과 음악들이 잘 돌아가고, 기기간 연결성이 뛰어나 cloud(i-cloud)에 초점을 맞춘다.

Cloud Computing APIs

IaaS는 회사마다 거의 비슷하고, 일반적으로 사용되는 함수가 공통적으로 있다. PaaS는 하지만 회사마다 차이가 너무 심하다.

EC2

: Cloud provider에게 CPU를 빌려쓰는 것에 대한 기술적 규격, 시점, 유지 관리를 위한 API이다. 컴퓨터를 빌리는 인터페이스로, 아마존이 만들었으머, 사실상 업계의 표준처럼 자리잡았다. 애시당초의 목적은 아마존 컴퓨터들의 CPU/Network/운영체제를 돌리기 위한 것이었으며, 다른 회사들에서도 사용되어 회사마다의 차이점이 거의 없다.

S3

: 저장 서비스 관리를 위한 API이다. EC2와 마찬가지로 아마존에 의해 만들어져 표준처럼 사용되며, 아마존이 사용하는 기술을 그대로 사용할 수 있어 신뢰성이 보장된다는 장점이 있다.

Thin Client

운영체제서 하는 일을 웹 브라우져에서 하도록 하는 개념이다. 대부분의 서비스들이 웹상에서 가능하기 때문에 가능하며, 구글 chromium OS의 경우 컴퓨터의 운영체제가 없고 크롬 브라우저만 돌아가게 되는 대표적인 예가 있다. Compute, Storage 노드들은 클라우드 위에 있게 되며, 원래는 web-browser 외에서, native OS에서는 저장이 불가능했어서 보안상의 장점도 있다.

Private Cloud Solutions

OpenStack SW

NASA가 openStack에 관여하였는데, 컴퓨터가 많이 필요하지만 재정문제로 인해 못사용하는 연구소 등에 빌려쓸 수 있게 NASA가 컴퓨터를 빌려주기 시작하였다. OpenStack sw를 통해서 사내/외부에 컴퓨터를 빌려주는 것이 가능해졌다. openStack은 파이썬으로 구현되었고, 과학/공학/데이터 처리하는 사람들은 대규모의 컴퓨터들이 필요하였으므로, 이들을 OpenStack을 사용하기 시작함으로써 이들 중심으로 급격하게 퍼져나갔고, 파이썬도 마찬가지로 퍼져나가기 시작하였다. Cloud co mputing과 Python은 이렇게 같이 퍼져나가기 시작하였다.

Beyond Cloud Computing

Non-Virtual Machine Approach

IaaS에서 Virtual Machine을 사용하는 경우에 만약 host OS와 Guest OS가 같은 계열(보통 linux)의 운영체제이면 굳이 Guest OS를 두어야 하는가 의문을 품기 시작하였다.(Linux over Linux) 이로 인해 성능저하 문제가 발생하였다.

Container technology는 이러한 문제를 해결하고자, 필요시 OS위에 패키지로 프로그램과 프로그램에 필요한 라이브러리를 같이 설치하고, 불필요시 Container를 싹 지워버리는 기술이다. 예전부터 리눅스에 존재하던 전통적인 기술였다. VM이 없어서 가볍고 성능 개선등의 장점이 있으나, 제거시에 Container를 들어버내리지만 OS위에 찌꺼기가 남는다는 단점이 있다.

Docker

Container technology 기반의 OS위에 OS가 올라가는 것이 아닌, Linux container 기술을 향상 시킨 것이다. 또한 리눅스에서만 뿐만 아니라, 윈도우 위에서도 작동이 가능하다는 큰 장점이 있다.

Kubernetes

쿠버네티스는 docker와 같은 conatiner를 관리하는 SW이다. Computer위에서 돌아가는 container가 docker, 이것을 엄청나게 많은 컴퓨터에서 관리, 제어, 운영하는 것이 쿠버네티스다. 즉, 쿠버네티스는 container-orchestration system이다. 이것은 cloud-native 재단에 의해 유지되는데, 애시당초 sw 설계시 수많은 CPU를 사용가능하도록 한다. 쿠버네티스는 container의 묶음인 pod들을 실행시키는 것인데, 관리하는 노드들을 모니터링 후 필요한 곳에 필요한 만큼의 pod들을 띄우는(뿌리는) 것이다.

Cloud Native

클라우드 환경의 등장에 따라 sw 개발과 운영에 큰 변화가 발생하였다. Cloud Native는 프로그램을 잘개 쪼개어서, 각자 따로 개발하고 돌리는 방향으로 개발하며, 서비는 쪼개진 작은 서비스들로 돌아간다.(micro-service) Micro-service을 통해 프로그램을 각자 따로(각자 다른 언어상에서도) 만들 수 있게 되었으며, 실행파일 1개의 크기가 매우 작아졌고, 개발 속도가 매우 빨라지게 되었다. 여기에 자동화된 기법들이 더해져서 DevOps가 등장하게 되었다.

Edge computing

조그만 데이터센터(서버)들이 user와 가까운 곳에서 안정적으로 서비스를 제공하는 개념이다. 중앙집중형과 달리, device들이 해주는 일을 user와 가까운 곳에서 제공하는 것이다.

profile
Robotics, 3D-Vision, Deep-Learning에 관심이 있습니다

0개의 댓글