상세 컨텐츠

본문 제목

AWS (Amazon Web Service) 클라우드 이해하기

AWS

by Yoonsang's Log 2022. 1. 15. 22:20

본문

프론트 개발자 입장에서 막연히 아 우리는 자체 서버를 쓰지 않고 AWS를 이용하는구나, EC2? S3? RDS? 뭐야

백엔드 개발자와 API로 통신만 해봤지 AWS 관련해서 얘기하는구나... 정도만 알겠지 알아들을 수가 없었다.

모든걸 다 물어봐가면서 할 수 없으니 공부해서 그들과 원활하게 소통하자.

 

글 작성은 2022년 1월 기준입니다. 시간이 지나 여러 개선사항들이 있을 수 있습니다.

 

클라우드 컴퓨팅

인터넷을 통해 필요한 리소스를 온디맨드로 제공하는 서비스를 클라우드 컴퓨팅이라고 한다.

클라우드 컴퓨팅을 사용하면 서버 컴퓨터 관리 등과 같은 인프라 관리에 대한 리소스를 비즈니스에 집중시킬 수 있다.

예를 들어, 한 쇼핑몰에서 블랙프라이데이에 엄청난 할인을 예고했다고 할때, 얼마나 많은 트래픽이 발생할지 예상할 수 없는데 서버에 과부하로 인해 이용 불가한 경험을 제공한다면 사업적으로 엄청난 손실이 있을 것이다. 그래서 많은 양의 서버를 준비해야 하는데, 이벤트를 하지 않을때를 생각하면 불필요한 비용이 너무 크다. 

이때, 클라우드 컴퓨팅을 사용하면 필요한 만큼의 서버만 임대해서 사용할 수 있어 효율적인 서버 관리가 가능하며 AWS에서 컴퓨터에 에어컨도 쐬주고 선풍기도 틀어주고 서버를 기분좋게(?) 일할 수 있게 해주고, 보안적인 부분도 해결할 수 있다.

클라우드 컴퓨팅 배포 모델은 클라우드 배포, *온프레미스 배포, 하이브리드 배포 이렇게 3가지가 있다.

온프레미스 : premise 에 토지, 부동산이라는 뜻이 있는데 on-premise는 토지 위에 실제 데이터센터를 둔다. 이 정도로 이해했다. 클라우드를 off-premise라고 한다고 한다. 즉, 클라우드와 온프레미스는 반대 개념으로 보인다.

온프레미스 배포는 프라이빗 클라우드 배포라고도 하는데, 가상화 및 리소스 관리 도구를 사용해 온프레미스에 배포한다.

하이브리드 배포는 클라우드 + 온프레미스 배포의 느낌인데, 꼭 온프레미스에 보관해야하는 것이 있는데 클라우드를 이용하고 싶을때 이용할 수 있는 배포 모델이다. 

즉, 내 니즈에 맞게 클라우드 컴퓨팅을 이용할 수 있다.

 

 

EC2 (Amazon Elastic Compute Cloud)

EC2는 많이 들어보고 익숙한데, 컴퓨터 한대를 임대한다는 느낌이다.

OS와 애플리케이션 등이 포함된 템플릿을 골라서 새로운 가상 컴퓨터 한대를 사는 것과 같다. 임대한다고 하는게 맞는 표현인것 같다.

EC2 인스턴스는 크기 조정이 가능하고 안전하다.

EC2 인스턴스를 생성하기 위해 AMI(Amazon Machine Image)를 선택한다. AMI에는 OS, Application 등 소프트웨어가 설치되어 있는 템플릿을 의미한다.

그 이후 인스턴스 유형을 선택한다. 인스턴스 유형은 범용 인스턴스, 컴퓨팅 최적화 인스턴스, 메모리 최적화 인스턴스 , 엑셀러레이티드 컴퓨팅 인스턴스, 스토리지 최적화 인스턴스가 있고 필요에 따라 선택한다.

자세한 내용은 여기서 확인할 수 있다.

 

요금

EC2 인스턴스는 다양한 요금제도 제공한다.

  • 온디맨드
    • 사용한 시간만큼 비용 지불, 불규칙한 단기 워크로드에 적합
  • 스팟
    • 유휴 자원을 사용함으로써 비용을 절감한 요금제
    • 온디맨드 인스턴스 수요가 많아져 스팟 요금제로 쓰이는 자원이 필요할 경우 점유권을 빼앗긴다.
    • 대신 15분 전에 알림(notification)을 주는데, 대책을 잘 마련해 서비스 운영에 문제가 없게 해야 한다.
  • 예약 인스턴스
    • 온디맨드 인스턴스를 사용할때 적용되는 결제 할인 옵션
    • 1년 또는 3년의 약정이 필요
    • 약정이 들어가기 때문에 할인 제공
  • Savings Plans
    • 여러 서비스를 이용할 수 있고 예약 인스턴스보다 더 유연한 옵션
    • 1년 또는 3년의 약정
    • 최대 66%의 비용절감
    • 리전도 바꿔가면서 사용 가능
  • 전용 호스트
    • 단일 고객용 EC2 인스턴스 용량을 갖춘 물리적 서버
    • 가장 비용이 많이 드는 옵션
  • 전용 인스턴스
    • 전용 호스트와 동일하지만 매일 하드웨어가 달라질 수 있다.

 

Auto Scailing

앞서 얘기했던 블랙프라이데이 행사를 대비하기 위해 엄청난 트래픽을 감당할 수 있는 핵심 제공 서비스는 Auto Scailing이다.

동적으로 서버를 늘리거나 줄일 수 있으므로 유연하게 상황에 대처할 수 있고 비용을 줄일 수 있다.

Auto Scailing 그룹을 생성할때 최소 용량, 희망 용량, 최대 용량을 정할 수 있다.

두가지 접근 방식을 사용할 수 있다.

  • 동적 조정
    • 수요 변화에 대응
  • 예측 조정
    • 예측된 수요에 따라 적절한 수의 EC2 인스턴스를 자동으로 예약

 

ELB (Elastic Load Balancing)

애플리케이션 트래픽을 여러 리소스에 자동으로 분산하는 서비스.

로드 밸런서는 수요가 높을때, 라운드 로빈 알고리즘으로 트래픽을 분배하고,

수요가 낮을때는 단일 접점을 만들어 준다.

 

 

Amazon SNS (Simple Notification Service)

구독자들에게 게시자는 메시지를 게시하는 게시/구독 서비스이다.

구독자는 웹 서버, 이메일 주소, Lambda 함수 또는 그 밖의 옵션이 될 수 있다.

 

Amazon SQS (Simple Queue Service)

메시지를 구독자가 요청하는 순간까지 큐에 보관한다.

 

Lambda

서버를 프로비저닝하거나 관리하지 않아도 되는 서버리스 컴퓨팅을 통해 코드를 바로 실행할 수 있다.

AWS에서 제공하는 서버리스 컴퓨팅 서비스인 Lambda는 코드가 실행되는 컴퓨팅 시간에 대해서만 비용을 지불한다.

다른 AWS 서비스를 사용하여 코드를 자동으로 트리거할 수 있다.

예를 들면, 파일이 S3 스토리지에 저장되었을때 Lambda 함수를 통해 사이즈를 자동으로 조정하는 함수를 작성하여 저장될 때 트리거 할 수 있다.

 

 

AWS 컨테이너 서비스

도커나 쿠버네티스에서 컨테이너에 대해 많이 들어보았는데,

AWS는 컨테이너 오케스트레이션 서비스와 AWS Fargate를 제공하여 이를 지원한다.

 

도커(Docker)

도커는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하여

애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다.

기존 Virtual Machine(이하 VM)를 쓰기 위해 하이퍼 바이저 위에 OS 위에 또 다른 하이퍼 바이저와 또 OS가 있어야 하고 그 위에 이제서야 애플리 케이션을 구축할 수 있는 시스템이었다.

도커는 컨테이너라는 단위로 패키징하여 애플리케이션만 올릴 수 있게 하여 낭비되는 용량이 없이 효율적으로 올릴 수 있다.

 

쿠버네티스(Kubernetes)

앞서 얘기했던 컨테이너식 애플리케이션을 대규모로 배포하고 관리하는데 사용할 수 있는 소프트웨어이다.

즉, 도커로 패키징 된 컨테이너들을 배포하고 관리하는 소프트웨어이다. 

 

재밌는 부분은 도커의 로고는 고래가 컨테이너를 태운 모양이고,

쿠버네티스의 로고는 배의 키처럼 생겼다.

 

ECS (Elastic Container Service)

ECS는 도커 컨테이너를 지원하고, API를 통해 도커 지원 애플리케이션을 시작 및 중지할 수 있다.

 

EKS (Elastic Kubernetes Service)

EKS는 AWS에서 쿠버네티스를 사용할 수 있게 한다. 쿠버네티스가 업데이트 됨에 따라 EKS도 업데이트를 적용할 수 있다.

 

AWS Fargate

ECS 혹은 EKS를 사용하여 서버리스 컨테이너를 실행하는 컨테이너 호스팅 플랫폼이다.

서버를 프로비저닝하거나 관리할 필요가 없고, 자동으로 서버 인프라를 관리한다.

 

 

 

'AWS' 카테고리의 다른 글

Amazon Culture  (1) 2023.01.21

관련글 더보기

댓글 영역