클라우드 컴퓨팅

컴퓨팅을 인프라를 하드웨어로 사용하는 것이 아니라 소프트웨어로 사용하는 방식이다.
데이터 센터를 물리적으로 구축하던 것을 인터넷을 통해 온디맨드로 사용하고 사용한 만큼의 비용을 지불하는 것을 말한다.

클라우드 컴퓨팅 모텔

IaaS(Infrastructure as a Service):
기본적인 요소만 갖추어, (네트워킹, 컴퓨팅, 스토리지)
마치 물리적인 장비인 것처럼 사용할 수 있는 것.

Paas(Platform as a Service):
윈도우나 DB와 같은 것들을 제공하는 상태의 서비스.
하드웨어나 운영체제를 관리할 필요 없이 실행할 수 있는 상태.

SaaS(Software as a Service):
내가 무언가를 준비하지 않아도 사용할 수 있는 상태.

클라우드 컴퓨팅 장점

인프라 구축에 들어가는 자산/시간의 비용을 줄일 수 있다는 장점이다.

  • 사용한만큼 금액을 지불해 초기 투자 비용이 없음.
  • 컴퓨터 환경에서 리소스 세팅 시간이 크게 감소.
  • 인프라 구축과 관리에 시간과 비용 낭비 x.
  • 필요한 경우 쉽게 추가/축소 가능.
  • 전 세계의 리전에 쉽게 배포가 가능.

AWS(Amazon Web Services)

AWS에는 스토리지, 컴퓨팅, 네트워킹, 데이터베이스, 어플리케이션과 개발 관리 도구 등의 서비스가 있다.

AWS의 서비스는 관리형/비관리형의 분리로 나뉜다.

비관리형 서비스:
AWS가 관리해주지 않는 서비스.
사용자가 확장, 내결함성 및 가용성을 관리한다.
오류가 발생하거나 리소스를 쓸 수 없을 때 서비스가 어떻게 할지를 사용자가 관리해야한다는 것이다.

  • ex) EC2의 경우 OS를 올려서 방화벽 등의 관리를 직접 해야 함.
  • 정교하게 제어할 수 있다는 장점 / 직접 제어해야한다는 단점

관리형 서비스:
AWS가 관리해주는 서비스.
일반적으로 확장, 내결함성 및 가용성이 서비스에 내장되어 있다.

  • ex) S3의 경우 사용자가 관리할 부분이 없음.

클라우드 배포 모델

올인 클라우드: 모든 서비스를 클라우드에 올려서 사용하는 것.
하이브리드: 구축되어 있는 인프라와 함께 사용하는 방식. data center를 보유하거나 등의 경우 클라우드와 같이 활용.

마이크로 서비스

모든 프로세스가 결합되어 단일 서비스로 진행되는 방식을 모놀리식 아키텍쳐라고 한다.
모놀리식 아키텍쳐는 단일 서비스이기 때문에 아래와 같은 단점을 갖는다.

  • 확장이 어려움. 서비스가 커질수록 업데이트 및 유지관리가 어려움. 새로운 기술 도입이 어려움.

이러한 방식은 서비스에 적합하지 않아, 서비스 지향 아키텍쳐의 일종으로 나온 것이 마이크로 서비스이다.
마이크로 서비스는 기능별로 별도의 어플리케이션을 가지고 독립적으로 기능을 수행하는 구조이다.
따라서 모놀리식의 단점을 해결하는 아래와 같은 장점을 갖는다.

장점:
각 서비스간에 다른 서비스에 영향을 주지 않아 확장이 쉽고 빠르다.
따라서, 새로운 기술의 도입과 테스트, 반영이 쉽다.
따라서, 서비스 마다 독립적으로 수요를 파악해 가용성을 조정할 수 있다.
따라서, 단일 서비스에서의 문제가 전체 서비스에 끼치는 영향이 줄어든다.

단점:
각 서비스 간 호출에 대한 처리 비용이 더 많이 든다.
테스트가 더 복잡할 수 있다.
구조적으로 너무 많은 서비스를 만들 수도 있다.

AWS의 MicroServices 참고.
AWS의 각 서비스는 마이크로 서비스 아키텍쳐를 지원하기 좋게 만들어져 있다.

서버리스

클라우드 컴퓨팅에서 본 클라우드 컴퓨팅의 장점을 넘어서 서버에 대한 고려를 아예 하지 않도록 하는 아키텍쳐.
서버에 대한 관리는 클라우드 사업자가 맡아서 하며, 필요한 기능을 함수로 구현하여 이를 서버에 별도 준비 없이 사용한다.
개발자는 함수 형태로 기능들을 구현하면, 서버리스 컴퓨팅 시 필요에 따라 event driven 방식으로 함수를 호출하여 사용하는 구조이다.

장점:
쉽게 안정적인 대용량 서버를 만들 수 있다.
따라서 개발 기간이 단축되고, 개발자가 서버 운영/관리에서 자유로워져 개발에 집중할 수 있다.

단점:
클라우드 업체를 바꾸기가 어려울 수 있다.
서버 인프라에 문제가 생길 경우 원인을 찾거나 해결하는데 어려움이 있다.

AWS에서는 S3, DynamoDB 등이 서버리스 서비스라고 할 수 있고
컴퓨팅 서비스에서는 Lambda가 서버리스를 지원한다.

AWS Infra

DC (데이터 센터):
단일 데이터 센터에서 수천 개의 서버를 운영한다.
모든 데이터 센터는 온라인으로 연결된다.

AZ (가용 영역):
AZ는 하나 이상의 DC로 이루어진다.
재해가 발생했을 때 다른 쪽에서 서비스 가능하도록하는 결함 분리 방식으로 설계되어 있다.
고속 프라이빗 링크를 통해 다른 AZ와 상호 연결된다.

Region:
두 개 이상의 AZ를 묶어 Region이라고 한다.

Region 선택

인스턴스를 시작할 때 AZ를 선택하거나 AWS가 AZ를 선택하도록 할 수 있다.
리전을 선택할 때는 아래와 같은 사항들을 고려해서 선택해야 한다.

  1. 법적 요구사항
    특정 데이터의 경우 한국에 있어야 한다면 서울 리전만 사용할 수 있음.
  2. 지연시간(근접성)
    클라이언트에게 가장 가깝고 빠르게 응답할 수 있는 위치.
    https://www.cloudping.info/ 에서 현 위치에서의 각 리전별 Latency를 확인할 수 있음.
  3. 사용 가능 서비스
    리전 별 사용가능 서비스가 다름.
  4. 비용 리전 별 비용이 다름.

서비스는 Region/AZ 기반 서비스로 나뉜다.

가용영역 중심 서비스:
하나의 AZ에서 죽었을 때 다른 곳에서 서비스가 가능하도록 직접 설계해야 한다.

리전 기반 서비스:
기본적으로 다른 AZ에 서비스를 복제하여 AZ에서 죽었을 때에 대한 고려를 하지 않아도 된다.