AWS 서비스 포트폴리오 - "필요한 만큼 원하는 서비스를 이용"

 

AWS의 컴퓨팅 / 데이터베이스 서비스

1. EC2

- 가상 서버 서비스 (서버 컴퓨터 1개를 나누어 사용)

- 재구성이 가능한 컴퓨터 리소스 (CPU, 메모리 사양을 조정할 수 있음)

- 쉽게 확장/축소되는 컴퓨팅 용량

- 고객 업무 영역에 따른 다양한 인스턴스 타입 제공

- 사용한 만큼만 과금 (pay as you go)

- 초 당 과금

- EC2의 과금 옵션

On-Demand - 약정없이 쓴 만큼만 지불

                 - 갑작스런 트래픽이나 예측하기 어려운 경우

Reserved - 1년 혹은 3년 약정 40% ~ 70%할인

             - 항상 사용 중인 안정화된 서버 자원을 위한 요금제

Spot - 남은자원에 대한 경매 방식, 80% ~ 90% 저렴

       - 단기적으로 수요가 많을 때 유리

 

2. Auto Scaling

- 서버 자동 확장 / 축소

- 피크를 위해 서버를 평소보다 많이 확장하여 구비하면 자원 낭비

- 평소만큼만 서버를 구축해놓으면 피크때 서비스 과부하

- 따라서 평소 때와 피크 때 모두 필요한 만큼만 컴퓨터 자원을 가져다 쓸 수 있다면 효율적

- 콘솔에서 cpu 사용량에 따라서 인스턴스의 증가 및 제거를 설정할 수 있음

 

3. Amazon RDS

- 관리형 관계형 DB 서비스

- DB 이중화 (Multi-AZ) - 다른 하나의 AZ에 DB를 백업해 놓음

- Read Replica - 병렬로 데이터를 빠르게 읽어옴

- 인스턴스 확장 가능

- 다양한 DB 엔진 제공 - PostgreSQL, Amazon Aurora, MySQL, MariaDB, ORACLE...

 

 

(아래의 글은 AWS 홈페이지의 설명에서 대부분 가져옴)

 

Cloud Computing 이란?

Private Computer   Cloud Computing
데이터 센터 구축
하드웨어 구매
필요할 때 언제나
높은 초기 투자 비용 사용한 만큼만 지불
한정된 용량
(구입한 만큼만 사용가능)
유연한 용량
많은 공수/소요 시간 적은 노력/ 소요 시간

정리하면,

"초기 투자나 장기 계약 없이,

인터넷을 통해 IT 리소스와 애플리케이션을,

원할 때 언제든지 (on-demand),

사용한 만큼만 요금을 내는 서비스"

 

클라우드 컴퓨팅의 6가지 이점

1. 초기 선투자 비용 없음 - 고정비용을 가변 비용으로 대체, 미리 서버를 구매할 필요가 없음

2. 운영 비용 절감 - 사용한 만큼만 지불하며 규모의 경제로 인한 지속적인 비용 절감

                         (피크를 대비하여, 더 큰 용량의 서버를 구축할 필요가 없음)

                         (전력, 항온항습, 운영 관리/인력, 라이센스, 향후 증설 비용 등이 절약됨)

3. 탄력적인 운영 및 확장 - 필요 용량에 대한 예측 불필요, 수요에 맞춘 유연한 확장 (Load Scaling)

                                   (트레픽의 수요에 맞춰, 필요한 컴퓨터 자원을 자동 증설 및 감소 할 수 있음)

                                   (이는 최적의 성능 및 안정성에 기여함)

4. 속도 및 민첩성 - 수 분 만에 인프라 구축 가능, 빠르게 변화에 대응

                         (실제로 EC2는 단 5분 안에 실행시킬 수 있다.)

                         (실패의 비용이 낮음, 서버를 없애고 다시 만들면 된다.)

5. 비즈니스에만 집중 가능 - 혁신을 위한 다양한 실험 가능, 불필요한 인프라 관리 업무 제거

                                     (소프트웨어, 하드웨어적인 노력 제거)

                                     (AirBnB의 경우, 사용자 1500만명에 EC2 인스턴스 1300대를 운용하며, 운영 인원은 5명)

6. 글로벌 확장 - 빠른 시간 내 글로벌 서비스 구현 가능 (넷플릭스의 빠른 한국 진출)

 

(리전 - AWS 서비스가 운영되는 지역, 복수 개의 데이터 센터들의 집합

가용 영역(AZ-Available Zone) - 리전 내 위치한 복수 개의 데이터 센터들로 각각 물리적으로 분리되어 있어, 고가용성/이중화 구성(한쪽에 문제가 생겨도 다른 쪽에서 처리)의 기본 요소가 됨

엣지 로케이션 - CloudFront 같은 엣지 서비스의 캐시 서버(pop)가 운영되는 데이터센터)

 

 

intro에서는 클라우드 컴퓨팅의 정의, 종류, 장단점, 특징을 알아보았다.

이 글에서는 그러한 클라우드 컴퓨팅을 가능하게 만든 기술들에 대해서 이야기하려 한다.

 

가상화 기술

- 하드웨어 리소스를 논리적으로 다룰 수 있게 만드는 메커니즘

- 하나의 물리 서버로 어러 개의 서버 환경을 구축

(각각의 환경에 OS와 애플리케이션을 실행할 수 있게 함)

- 서버 리소스를 최대한 활용

(아마존에서는 피크 시즌에는 컴퓨터 리소스를 모두 사용하다가 시즌이 끝나면 리소스를 대여)

- 각각의 가상 서버는 독립 상태라고 사용자가 인식

- 혹은 여러 대의 물리 서버를 하나의 서버 환경으로 통합

- 시스템 구성의 유연하고 빠른 변경 및 자동 리소스 추가

- 서버 가상화, 네트워크 가상화, 스토리지 가상화 등이 있음

(컴퓨터 아키텍처가 발전하면서 가능해짐)

 

가상화 기술의 종류

1. 하이퍼바이저형

구조 - 하나의 물리 서버 하드웨어에 하이퍼바이저라는 가상화 소프트웨어를 설치하고, 그 위에 guest OS(Linux, Windows...)와 애플리케이션 설치

(호스트 OS가 필요 없음)

하이퍼 바이저형은 OS환경을 통째로 가상화함

하이퍼 바이저의 소프트웨어 - VMwave vSphere, Hyper-V, Xen, KVM 등

 

2. 호스트 OS형

구조 - 하나의 물리 서버 하드웨어에 호스트 OS와 호스트형 가상화 소프트웨어가 설치되고, 그 위에 guest OS와 애플리케이션 설치

 

3. 컨테이너 형

- 하나의 OS황경에서 애플리케이션을 실행하기 위한 영역(컨테이너)을 여러 개로 나누어 사용

- 컨테이너는 하나의 process이고 application 실행 환경을 가상화한 것

- 다른 클라우드 서비스로 옮기기가 쉬움

- 빠르게 시작과 정지가 가능

(프로그램이 이미 깔려있는 것과 같음)

(ex. chrome, internet explorer)

- 하이퍼바이저 형이나 호스트 형보다 컴퓨터 리소스를 적게 사용해 성능의 저하가 거의 없음

- guest OS가 필요 없어서 디스크 사용량 절약 가능

(호스트 OS형과 하이퍼바이저 형의 guest OS의 자리에 컨테이너라는 실행 환경이 들어감)

- 1대의 물리 서버에 많은 수의 컨테이너 탑재 가능

- 컨테이너 형의 소프트웨어 - Docker

 

분산처리 기술

- 대량의 빅데이터를 여러 서버에 분산하여 동시에 병렬로 빠르고 효율적으로 처리하는 기술

- 클러스터링: 여러 개의 서버를 결합하여 하나의 컴퓨터로 보이게 함

- 분산처리 구현 소프트웨어

 1.Apache Hadoop

  • 1대의 master server와 여러 대의 slave server
  • 대용량 데이터 일괄처리

 2. Apache Spark

  • 메모리 안에서 대량 데이터를 병렬 분산 처리
  • 기계학습 같은 데이터를 반복하는 고급 데이터 분석을 빠르게 실행

데이터베이스 기술

1. RDB(Relational DataBase) - SQL

2. NoSQL(NOT Only SQL)

- 대량의 데이터를 분산시켜 고속으로 처리하는 분산 데이터베이스

- Key-value 형

- column 지향형

- document 지향형

- graph형

 

스토리지 기술

- Block Storage

  • 일정한 크기의 block(file보다 큰 단위)으로 나눈 logical volume을 block 단위로 액세스
  • 빠른 데이터 전송이 가능
  • 데이터베이스 서버

- File Storage

  • 파일 단위로 저장 액세스 가능
  • 파일 공유 기능
  • NFS(network file system) - 한대의 서버 컴퓨터에 파일을 올려두고 클라이언트 컴퓨터로 불러옴
  • NAS(network attached storage) - LAN으로 연결하는 외장하드
  • 파일 서버

- Object Storage

  • 데이터를 객체 단위로 처리 (json type) (json - JavaScript Object Notation)
  • OS, file system에 독립적으로 데이터를 저장
  • HTTP 프로토콜 기반의 REST 형식의 API 사용 (REST- Representational State Transfer)
  • 갱신 빈도가 적은 데이터, 대량의 데이터 저장/장기 보존

 

네트워크 가상화 기술

VPN(Virtual Private Network)

- 불특정 다수가 이용하는 네트워크에 가상으로 전용선과 같은 사설망을 연결하는 기술

 

API

- 프로그램이 가진 기능이나 리소스를 외부의 다른 프로그램이 호출하여 이용하기 위한 명령이나 함수, 데이터 형식 등을 정한 규약

- API를 통해 외부 프로그램으로 클라우드 서비스 조작 (EC2와 RDB 등 조작)

  • Command Line Interface (CLI) - 터미널을 통해 사용자와 컴퓨터가 상호작용
  • Software Development Kit (SDK) - 개발자가 응용 프로그램을 만들 수 있게 도와주는 도구들
  • API Gateway - 다양한 서비스의 기능을 중앙에서 관리할 수 있는 것

클라우드 네이티브 아키텍처

마이크로 서비스 아키텍처

  • 하나의 Application을 작은 서비스의 집합체로 구현하는 방법
  • 각각의 서비스를 API와 같은 간단한 방법으로 연계하여 동작
  • 컴포넌트별 개발로 개발의 신속성 도모
  • 컴포넌트의 추가와 교체 용이로 필요시 빠르게 대응 가능
  • Application 개발 : 클라우드 서비스의 컴포넌트(서비스 개발)를 개발 + API를 통해 연계(서비스들을 연결)

서버리스 아키텍처

  • Fully managed cloud service - 보안, 백업 등 제공
  • 사용자는 서버의 존재를 전혀 의식하지 않고 응용 프로그램을 실행
  • 클라우드 서비스의 각 컴포넌트와 연계, 개별 기능을 조합하여 서비스를 개발하는 방향

 

클라우드 컴퓨팅으로 가능해진 DevOPS

- Development 및 Operation이 함께 협력하여, 완성도 높은 소프트웨어를 더욱 신속하게 만들어내는 문화

- 개발팀과 운영팀을 통합

- 개발 방법: 서비스 전체 그림 안에서 결정된 부분을 먼저 개발, 배포하는 스피드 중시형

- 클라우드 컴퓨팅으로 쉬워진 코드 배포 또는 인프라 프로비저닝과 같이 작업을 독립적으로 수행

- 자동화를 통해 많은 수의 서버를 소규모 인원으로 운영 가능

 

Cloud Computing

- 초기 투자장기 계약 없이 인터넷을 통해 IT  리소스애플리케이션원할 때 언제든지 (on-demand) 사용한 만큼만 요금을 내는 서비스

- 서비스 제공자의 최소한의 관리 노력 또는 개입만으로도 신속하게 준비되어 사용할 수 있으며, 공유-조합할 수 있는 컴퓨터 자원(통신망, 서버, 저장소, 응용 프로그램, 서비스)에 유비쿼터스 하게, 편리하게, 필요에 따라 접속이 되도록 하는 모델이다.

 

위 말만 들었을 때는 이해가 가지 않을 수 있다.

아래의 설명을 보자.

 

https://www.salesforce.com/products/platform/best-practices/cloud-computing/

 

What is Cloud Computing? Beginner's Guide

Everyone is talking about “the cloud.” But what does it mean? A comprehensive guide to cloud computing for business.

www.salesforce.com

https://aws.amazon.com/ko/what-is-cloud-computing/

 

클라우드 컴퓨팅이란 | 클라우드 컴퓨팅 소개 | Amazon Web Services

제조 AWS를 활용한 Siemens의 에너지, 의료 서비스, 제조 분야 혁신 Siemens가 AWS를 사용하여 어떻게 문화를 바꾸고 혁신을 장려하며 비즈니스 성과를 창출했는지 알아보세요. 자세히 알아보기  업종

aws.amazon.com

https://azure.microsoft.com/ko-kr/overview/what-is-cloud-computing/#benefits

 

클라우드 컴퓨팅이란? 초보자 가이드 | Microsoft Azure

클라우드 컴퓨팅이란 무엇이며 클라우드 컴퓨팅은 어떻게 작동할까요? 클라우드 컴퓨팅의 이점을 알아보세요. 매일 온라인으로 클라우드 컴퓨팅 서비스를 사용하는 방법을 알아보세요.

azure.microsoft.com

https://www.ibm.com/cloud/learn/iaas-paas-saas

https://www.visma.com/blog/cloud-basics-deployment-models/

 

Cloud basics: Deployment models

What is the difference between public cloud, private cloud, community cloud and hybrid cloud? And what are the benefits of the different types?

www.visma.com

 

요약

 

클라우드 컴퓨팅은 무엇인가?

소프트웨어, 저장 공간, 컴퓨터 작업의 아웃소싱의 한 종류이고, 이것을 통해 사용자는 인터넷 연결이 가능한 어떠한 기기에서도 애플리케이션과 파일에 접근이 가능하다. 클라우드 컴퓨팅을 이용하면, 라이센스를 구입하지 않고 소프트웨어나 서비스 환경을 구축할 수 있고, 클라우드 컴퓨팅 사업자에 의해 애플리케이션과 보안의 업데이트가 이루어짐으로 이용자는 그 부분에 대해 신경 쓰지 않아도 된다. 또한 빌리는 컴퓨터의 용량은 비즈니스에서 필요할 때마다, 줄이거나 늘릴 수 있다. 실시간으로 위치에 상관없이 협업도 가능해진다.

 

클라우드 컴퓨팅이 생겨나고 난 후, 달라진 회사의 모습

Large servers - 회사들이 서버를 직접 가지고 있을 필요가 없어짐

Dedicated in-house IT support - 클라우드 컴퓨팅 사업자가 관리함으로 사내 IT 전담 직원이 많이는 필요없어짐

Data storage devices - 직원들이 일일이 데이터들을 백업할 필요가 없어짐

Limited geographic access - 지역과 시간에 업무가 구애받지 않는다.

Outdated off-the-shelf software - 로컬 환경을 구축하면 소프트웨어의 라이센스를 새 버전이 나올 때마다 구입해야 한다. 그리고 구입한 소프트웨어를 사내의 모든 기기에 설치해야 한다. 이러한 과정은 클라우드 컴퓨팅에서 필요 없다.

Information loss - 로컬에 저장된 데이터는 유실될 위험이 크지만, 클라우드에 저장된 데이터는 멀티 세이프가드가 있어 비교적 안전하다.

Duplicate versions of documents - 하나의 파일을 클라우드 환경에서 한 번에 수정함으로, 최신 버전을 만들어서 따로 이메일로 공유하는 과정을 거치지 않아도 된다.

 

클라우드 컴퓨팅이 왜 더 좋은가?

Accessible from anywhere - 데이터와 애플리케이션이 하나의 디바이스에 묶이지 않고, 어디에서 언제나 멀리 떨어진 팀끼리도 협업이 가능해진다.

Flexible and scalable -  클라우드 컴퓨팅 애플리케이션은 사용자의 요구 변화에 따라 전력, 스토리지, 대역폭을 쉽게 늘릴 수 있다.

Cost-effective - 월 구독료만 내면 되고, 어떠한 하드웨어를 구입하거나 혹은 전기세를 낼 필요가 없다.

Hassle-free updates - 웹 기반 소프트웨어는 지속적으로 업데이트되며, 공급업체는 유지 관리, 백업 및 문제 해결을 처리함.

Fast - 서비스는 최고의 효율과 성능을 위해 지속적으로 업데이트되는 데이터 보안 센터의 글로벌 네트워크망으로 전송된다.

Secure - 보안 프로토콜과 인프라는 새로운 위협을 해결하기 위해 지속적으로 분석 및 업데이트를 한다.

 

클라우드 컴퓨팅의 종류

어떤 클라우드 서비스 모델을 제공하는가 따른 구분

IaaS(Infrastructure as a service)

- 네트워크 보안과 저장공간 등 제공

- 사내의 개발자들이 필요한 개발환경을 스스로 구축하고, 클라우드에서 회사의 서비스를 테스트하거나 배포함 

- pay-as-you-go access

PaaS(Platform as a service)

- 백엔드적인 것은 클라우드 컴퓨팅 업체가 전담하고(infrastructure), 애플리케이션을 만들 수 있는 개발환경(cloud-based environment)을 개발자에게 제공

- 애플리케이션을 테스트, 개발, 배포할 수 있는 도구 제공

- 개발 및 테스트에 큰 처리 능력이 필요한 경우 사용

(로컬 환경에서 많은 고객이 쓰면 어떻게 될지 모르기 때문에 실험 불가)

- 자사에서 운영 중인 애플리케이션의 최대 부하를 분산 처리할 때 사용

서버리스 컴퓨팅

PaaS와 중첩된 서버리스 컴퓨팅은 필요한 서버와 인프라를 지속해서 관리하는 데 시간을 소비하지 않고 앱 기능을 빌드하는 데 추점을 맞춤. 확장성이 높으며, 이벤트를 기반으로 하여 특정 함수 또는 트리거가 발생하는 경우에만 리소스를 사용

(인프라 프로비저닝 및 관리와 관련된 작업이 개발자에게 보이지 않는다는 사실에서 붙여진 이름 - 서버리스)

SaaS(Software as a service)

- 사용자에게 완벽한 기능의 제품을 제공

(software/application 제공)

(ex. Microsoft Office 365 products, Google Apps, QuickBooks, Dropbox, Zendesk, and Slack)

- 사용자는 제품을 설치할 필요가 없음

- 사용자는 구독을 하고 web 또는 API를 통해 접근

On-premise

- 회사 내에 자체적으로 데이터 센터를 보유

- 시스템 구축, 운용까지 직접 수행하는 형태

 

클라우드 이용 모델에 따른 구분

프라이빗 클라우드

- 단일 비즈니스 또는 조직에서 독점적으로 사용되는 클라우드 컴퓨팅 리소스

- 회사 내에 배치할 수도 있고(on-premise private cloud), 클라우드 서비스 공급자에게 비용을 지급하고 호스트 하기도 함(hosted private cloud)

- on-premise private cloud - 자사 전용 클라우드 환경 구축, 운용 + 자체적인 보안정책으로 강력한 보완 환경 + 모든 비용 부담

- hosted private cloud - 클라우드 사업자가 기업 사용자별로 클라우드 환경 제공 + 청구되는 비용 지불

- 서비스와 인프라가 개인/기업 네트워크에서 유지 관리됨

- 퍼블릭 클라우드에 비해 규모의 경제를 잃음

커뮤니티 클라우드

- 공통의 목적을 가진 기업/조직들이 클라우드 시스템을 형성하여 데이터 센터에서 공동 운영하는 형태

퍼블릭 클라우드 (ex. AWS, Microsoft, Google)

- 인터넷을 통해 서버 및 스토리지 같은 컴퓨팅 리소스를 제공하는 클라우드 서비스 공급자가 소유하고 운영

- 모든 하드웨어, 소프트웨어 및 기타 지원 인프라를 클라우드 공급자가 소유하고 관리

- 네트워크를 통해 기업, 개인에게 서비스 제공

- 기업, 개인 방화벽 외부에 구축됨

하이브리드 클라우드

- 퍼블릭 클라우드와 프라이빗 클라우드, 커뮤니티 클라우드 간에 데이터와 애플리케이션을 공유할 수 있는 기술로 함께 바인딩됨

- 프라이빗 클라우드가 잃은 규모의 경제를 보존할 수 있는 방법

 

클라우드 컴퓨팅의 이점

비용 - 하드웨어, 소프트웨어 구입 및 데이터 센터 설치 및 운영 지출 절감

속도 - 주문형 셀프서비스로 제공됨으로, 많은 양의 컴퓨팅 리소스도 쉽고 빠르게 제공받을 수 있다. 기업에 많은 유연성 제공, 용량 계획 부담을 덜 수 있음.

뛰어난 확장성 - 필요한 때에 적절한 지리적 위치에서 대략적인 컴퓨팅 성능, 스토리지, 대역폭 등 적절한 양의 IT 리소스를 제공

생산성 - 클라우드 컴퓨팅을 사용하면, 개발환경 구축 및 관리에 들어가는 작업이 불필요해져 비즈니스 목표에 집중할 수 있음

성능 - 데이터 센터는 최신의 컴퓨팅 하드웨어로 정기적 업그레이드를 하고, 이것은 애플리케이션의 네트워크 대기 시간 단축으로 이어짐

안정성 - 클라우드의 여러 곳에 데이터를 백업시켜 놓을 수 있으므로, 데이터 복구가 쉽고 비용이 덜 들어감

보안 - 클라우드 공급자가 광범위한 정책 집합, 기술 및 컨트롤을 제공하여 앱 및 인프라를 잠재적인 위협으로부터 보호

 

클라우드 컴퓨팅의 단점

- 생각보다 비싼 비용

- 점점 커지는 클라우드 의존성

- 데이터 보관의 불안함

 

 

 

 

 

 

 

 

+ Recent posts