- toc {:toc}
Notice
Computer Networks 글은 경희대학교 소프트웨어융합대학 이성원 교수님의 [컴퓨터 네트워크 CSE302] 수업을 기반으로 정리한 내용입니다.
Cloud Computing
-
비약적인 네트워크의 발전 2010년부터 시작.
-
필요한 만큼 CPU, 디스크, 네트워크를 사용하고 사용이 끝났다면 반납하는 형태.
-
사용한 만큼 비용을 지불하는 것
-
어딘가에 컴퓨터, 디스크, 네트워크가 있는 것. 연결을 해봐야 존재함을 알 수 있다.
-
왜 클라우드 컴퓨팅을 제공?
-
아마존 - 쇼핑몰을 운영하면서 사용하는 자원들 밤에는 잘 사용하지 않는다. 사용하지 않을 때 남는 자원들 다른 사람들에게 제공하자.
-
벤처 회사 - CPU를 사용하고 싶은데 구매하기에는 얼마나 필요한지 예측도 힘들고 비용도 부족하기 때문에 필요한 만큼 사용하고 사용한 만큼 비용을 지불하기를 원함.
-
수요와 공급이 맞아 떨어져 사용한다.
-
하드웨어와 소프트웨어에 대한 신뢰성
-
20%는 사람의 실수로 인해서 발생하고, 기계에 의해 발생하는 비율은 5%이내이다.
-
즉, 사람이 직접 서버를 구축하는 방식보다 기계가 구축하는 방식, 제공해주는 방식으로 변화했다.
XaaS
- 얼마만큼 빌려서 사용할 것인가?
- Infrastructure as a Service (IaaS) : 하드웨어를 제공해준다.
- Platform as a Service (PaaS) : 개발자들이 원활하게 개발할 수 있도록 라이브러리를 제공
- Software as a Service (SaaS) : 사용할 수 있는 서비스를 제공
Build Types
- Public cloud computing
- 글로벌 IT 기업이 큰 규모의 CPU/디스크를 호스팅하는 것
- 기업만의 기술을 갖는다.
- Private cloud computing
- 개인 회사가 자신만의 클라우드 구축을 해서 스스로 호스팅하는 것
- 오픈소스가 널리 사용된다.
- Hybrid
- 기업에서 자신만의 데이터 센터를 구축하고 있다가 추가적인 공간이 필요한 경우 외부 기업의 서비스를 사용하는 것을 말한다.
- Private Cloud의 보안과 기술을 갖지만 초과한 데이터를 수요에 따라 Public Cloud에 저장할 수 있다.
Public Cloud Computing Services
-
AWS
-
Microsoft Azure
-
Google : CPU, 디스크, 네트워크, 빅데이터
- 게임 서버 도구 강화
- Smart Farming : 딥러닝, 텐서플로우 이용한 농사 자동화.
-
Apple - Differenct Approach
-
애플의 사업 아이디어는 물건, 기기를 판매하는 것.
-
클라우드 서비스를 하지 않는다.
-
클라우드를 이용해서 모든 기기를 동기화시키는 다른 시각으로 클라우드를 사용
-
Single ID - 여러 기기에 대해 하나의 ID를 만들어 공유한다.
Cloud Computing APIs
EC2(Amazon Elastic Compute Cloud)
- Concept
- 사용자가 Virtual Computer를 빌려 사용자가 원하는 어플을 구동할 수 있도록 한다.
- AMI(Amazon Machine Image)를 부팅할 수 있는 웹 서비스를 제공함으로써 확장 가능한 배포를 할 수 있도록 한다.
S3 (Amazon Simple Storage Service)
- 웹 서비스 인터페이스를 통해서 스토리지를 제공한다.
- Service-level agreement (SLA) 오류가 나지 않을 확률 매달 99.9% 보장
Thin Client
- 입력과 출력 → 클라이언트 (크롬 브라우저)
- 실질적인 처리 논리 → 서버
- Pos 시스템 → 태블릿으로는 입력 출력만, 서버에서 연산해서 제공하는 방식
Container
-
Virtualization tax : 호스트 OS가 존재하고 호스트 OS 위해 VM을 위에 올리면서 OS가 중복적으로 설치하게 되는 문제
-
Guest OS over Host OS : 회사 내에서 사용하는 경우 private cloud computing → 호스트 OS 위에 동일한 OS를 다시 올려 중복적인 비용이 발생한다.
-
호스트의 OS를 공유하여 가볍다.
-
Docker : 리눅스에서 사용했던 컨테이너 가상화 방식을 윈도우즈, 맥OS에서 사용할 수 있도록 한다.
-
Kubernetes : 컨테이너를 자동으로 배포, 스케일링, 운영하기 위한 오픈소스
-
Microservice 개념의 장점
-
기술적 : 100개의 기능이 있다고 한다면 과거 하나의 프로그램, 하나의 언어로 제작하는 방식과 다르게 부분적으로 10개씩 묶어 해당 기능에 알맞는 언어로 따로 제작할 수 있다.
-
비기술적 : 소규모의 구조로 나누어 각각이 선호하는 언어로 작업하는 방식. 설계와 개발의 패러다임이 변경됐다.
-
이전에는 하나의 큰 프로그램이기 때문에 통합도 힘들고 유지 보수도 비용이 많이 들었으나, 마이크로서비스를 통해서 컨테이너를 자동화, 통합 등을 하는 DevOps 개념이 나오면서 이점을 갖게 되었다.