이동준1
아웃풋 공부
이동준1
전체 방문자
오늘
어제
  • 분류 전체보기 (85)
    • airflow (8)
    • sql (23)
    • aws (12)
    • python (3)
    • 네트워크 (12)
    • 알고리즘 (2)
    • 짧은서평 (25)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 유연함의힘
  • 퓨처셀프
  • AWS
  • Network
  • 고통의비밀
  • 고통의 비밀
  • regexp
  • 서평
  • 네트워크

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
이동준1

아웃풋 공부

[AWS] Other Compute
aws

[AWS] Other Compute

2023. 1. 2. 11:39

Docker

Docker는 앱배포를 위한 소프트웨어 개발 플랫폼이다. Docker는 컨테이너에 앱을 패키징하는데, 컨테이너를 이용하면 앱을 모든 O/S에서 쉽게 실행할 수 있다는 장점이 있다. 도커를 이용하면 위치에 상관없이 앱이 매번 같은 방식으로 실행된다. 이로인해 호환성 문제가 사라지고, 동작 예측이 가능해지며, 작업량이 감소하며, 그리고 유지보수와 배포가 쉬워진다. 즉, 어플리케이션 배포에 있어서 도커가 강력한 도구로 부상했다.

 

아래의 그림처럼, 도커 컨테이너에 어플리케이션을 패키징하기만 한다면 같은 instance에 다양한 종류의 Docker가 존재할 수 있다.

 

Docker vs. Virtual Machines

도커는 가상머신과 달리, 하나의 서버에 여러 컨테이너를 두는 것이 가능하다. 우측 그림을 보면 Daemon위에 여러 컨테이너를 올려놓고 실행하는것이 표현되어 있다. 이런 방식을 이용하면 좀더 다용도로 활용이 가능하며, 스케일링이나 실행이 쉽다.

LEFT: Virtual Machine, RIGHT: Docker

 

ECS, Fargate 및 ECR 

ECS

ECS는 Elastic Container Service를 의미하며, AWS에서 Docker container를 실행할때 사용한다. 사용자는 이 서비스 이용을 위해 EC2 instance를 사전에 준비하는 과정이 필요하다. 그후에 ECS Service를 이용하면 AWS가 컨테이너의 실행과 중지를 관리하며, Application Load Balancer와도 통합하여 이용된다. 또한, 생성된 새로운 Docker Container를 어떤 instance에 위치시킬지도 결정한다.

 

 

Fargate

마찬가지로, 도커 컨테이너를 AWS에서 실행할때 사용한다. 차이점은, 사용자가 EC2 instance를 사전에 준비할 필요가 없다는 점이다. 그래서 관리할 서버가 없기 때문에, Serverless offering이라 할 수 있다. AWS가 우리가 필요한 컨테이너를 각 컨테이너의 CPU와 RAM사양에 맞게 실행시켜준다.

 

아래 그림을보면 Fargate안에 Docker Container가 존재하는데, Fargate는 이 컨테이너를 사전의 EC2 instance 준비없이 자동으로 실행시켜준다. 우리는 컨테이너들이 어디에 있는지는 모른지만 실행되고있다. Fargate의 핵심은 사용자가 어떤 EC2 instance도 관리하지 않기 때문에 쉽게 사용할 수 있다는 것이다.

 

 

ECR

Docker image를 저장하기 위해서는 Container Registry가 필요하다. ECR (Elastic Container Registry)는 Docker image를 저장하는데 사용할 수 있다. ECR은 도커 이미지를 저장하여 ECS나 Fargate에 사용 가능하다. ECR에 이미지를 저장하면 Fargate는 이 이미지를 살펴보고, 이들로부터 컨테이너를 만들어 Fargate 서비스에서 직접 실행한다.

 

Amazon Lightsail

Amazon Lightsail은 AWS에 익숙하지 않을때 사용하면 유용한 서비스이다. 가상서버, 스토리지, DB, 그리고 Network를 한곳에서 구축가능하며, 이러한 요소들의 작동방식을 이해하지 않아도 이용가능하다. 간단한 웹사이트 정도는 Lightsail의 템플릿을 이용해서 구축하는 것이 가능하다. 고가용성을 가지고 있지만 auto-scaling이 불가능하며 AWS를 제한되게 사용해야한다는 단점이 있다.

 


Serverless

서버리스는 서버가 없다는것이 아니라, 이면에는 서버가 존재하지만 최종 사용자 입장에서 서버를 관리하거나, provision할 필요가 없는 상태를 의미한다. 사용자는 서버를 볼수도 없다. 개발자는 단지 코드나 함수를 배포하면된다. 초기에 Serverless는 AWS lambda에 의해 시작되었지만, 지금은 databases, messaging, storage등 여러 분야를 포괄한다.

 

예시 네가지를 들어볼 수 있다. 1) S3는 storage로 사용하긴 했지만, 사용자가 서버를 관리하는 형태가 아니다. 그저 파일을 업로드만 하면된다. 2) Dynamo DB는 테이블을 만들 때 테이블을 위해 서버를 미리 준비하지 않아도 된다. 로드에 맞게 auto scaling을 진행해주기 때문이다. 그리고 ECS에서는 instance를 직접 생성해야했지만(Not Serverless), 3) Fargate는 Container를 생성하면 자동으로 실행 방법을 찾아 실행하는 형태였다. 마지막으로 4) Lambda는 서버리스의 선구자이며, 클라우드에서 함수를 실행하는 수단이다.

 

 

'aws' 카테고리의 다른 글

[AWS] Lambda  (0) 2023.01.07
[AWS] Databases2  (0) 2022.12.28
[AWS] Databases  (0) 2022.12.26
[AWS] S3 - Storage class  (0) 2022.12.26
[AWS] Snow Family  (0) 2022.12.26
    'aws' 카테고리의 다른 글
    • [AWS] Lambda
    • [AWS] Databases2
    • [AWS] Databases
    • [AWS] S3 - Storage class
    이동준1
    이동준1

    티스토리툴바