AWS 오피스 교육 #3

MIMO·2023년 7월 19일
0

AWS

목록 보기
12/12
post-thumbnail

컨테이너

컨테이너 개요 - aws 버전

컨테이너에 대해서는 다른 포스트에서 더 자세히 설명되어 있다. 여기서는 AWS가 제공하는 컨테이너 서비스가 무엇이 있는지 살펴본다.

이미지 저장소

AWS가 제공하는 컨테이너 이미지 저장소는 ECR로 불리는 Elastic Container Registry가 있다.

컨테이너 오케스트레이션

컨테이너를 컨트롤하기 위하 K8S를 사용하는 것이 대부분이다. AWS는 EKS로 불리는 Elastic Kubernetes Service를 제공하고, 자체적으로 진행할 수 있는 ECS(Elastic Container Service)를 제공하고 있다.

실행 환경

실행환경이라 함은 컨테이너 이미지를 다운받고 올릴 수 있는 환경을 말한다. aws는 EC2 뿐만 아니라 완전관리형 서비스인 Fargate도 제공해준다. Fargate에 대한 설명은 아래를 참고하자

네트워크

VPC 피어링 연결

Peering

Peering이란 VPC끼리 서로 통신할 수 있게 연결해주는 것이다. 연결하기 위한 제한사항이 2가지가 있는데 아래와 같다.

  1. VPC의 IP 대역이 중첩되면 안된다.
  2. Peering 연결이 되기 위해서는 반드시 1대1로 연결이 되어야 하고, 라우팅 테이블이 업데이트 되어야 한다.

VPC가 많더라면 각각의 VPC를 모두 피어링 해야 하기 때문에 네트워크 관리자에게 굉장히 어렵다

Transit Gateway

peering의 단점을 해결하기 위해 나온 서비스이다.

위 사진처럼 모든 VPC를 각각 peering하는게 아니라 Transit Gateway로 보내서 peering 연결을 한다.

VPC Endpoint

AWS에는 VPC내부에 들어가는 서비스보다. 외부에 있는 서비스들이 더 많다. 그렇기 때문에 Private Subnet에서 DDB, S3 등 과같은 외부 서비스에 접근할 수 있게 하는 방법이 필요하다. IGW, NAT를 사용하지 않고 AWS 서비스에 액세스 할 수 있게 하는 것이 VPC 엔드포인트이다.

서버리스

메시지 관리

SQS

  • 스탠더드 - 순서보장이 안되지만 성능이 좋음
  • FIFO - 순서보장이 되어 있음, 초당 API 호출이 제한됨
  • 1:1 방식의 매커니즘, 폴링 방식으로 데이터를 보냄
  • 완전관리형 메시지대기열 서비스

SNS

  • Publisher가 Subscriber에게 주제를 보낸다.
  • Push 방식으로 전송한다
  • 1:N 방식의 전송 매커니즘
  • 이메일, 핸드폰, 슬랙으로도 보낼 수 있다.

Lambda

  • 서버리스 컴퓨팅 서비스 (Ec2, Lambda, Container)
  • 제약사항 2가지
    • 혼자 실행될 수 없다. 앞 단에서 람다를 트리거 해주어야 한다
    • 람다는 메모리만 세팅하면 되는데, 람다에서 최대 할당 가능 용량은 10G, 최대 실행시간은 15분이다.
      • 15분안에 함수 완료가 되지 않는다면 실패다
  • 다양한 런타임을 지원한다

엣지 서비스

엣지 서비스에는 Amazon Route 53(가용성 100%), Cloud Front, DDOS 보호, WAF, Outposts 등 다양한 서비스들이 존재한다.

실습

실습 - 서버리스 아키텍처 구축

S3 버킷에 이미지를 업로드하면 SNS 주제에 대한 이벤트 알림이 호출된다. 그러면 SNS가 3개의 별도의 SQS 대기열에 알림을 배포한다. 초기에는 Auto Scaling 그룹에서 EC2 인스턴스를 실행하는 것이었지만, 권장 사항에 따라 EC2 인스턴스를 Lambda 함수로 교체한다. Lambda 함수는 저장된 이미지를 세 가지 형식으로 처리하고 출력을 별도의 S3 버킷에 저장한다.

위 다이어그램을 구축할 예정이다.

Amazon SNS 주제 생성

Simple Notification Service를 검색하여 새로운 Topic을 생성해준다.

생성을 완료하면 위와 같은 화면을 확인할 수 있다.

SQS 대기열 3개 생성

Simple Queue Service를 검색하여 3개의 SQS를 생성해준다.

생성해준 뒤 SNS 주제를 구독해야 하는데 아래 창에서 위에서 만들어준 SNS 주제를 선택하여 구독해줄 수 있다.

위 과정을 3번 반복하면 대기열 페이지에서 아래 큐들을 확인할 수 있다.

SNS 구독 확인

다시 SNS로 돌아가서 메시지를 게시한 뒤 SQS 대기열들이 구독을 성공적으로 했는지 확인해보자. SNS에서 방금 만든 주제로 들어간 뒤 메시지 게시를 통해 원하는 메시지를 작성하여 게시를 해준다.

그 다음 다시 SQS로 가서 방금 만든 큐 3개중에 아무 큐에 접속한다.

그러면 위 사진과 같이 Polling할 수 있다는 메시지가 나오고, 메시지 폴링을 통해 게시된 메시지를 가져올 수 있다.

메시지를 성공적으로 확인할 수 있다.

Amazon S3 이벤트 알림 생성

S3 이벤트 알림은 S3의 속성에서 아래 항목에서 생성이 가능하다.

그리고 나서 가장 아래의 대상에 방금 생성한 SNS 주제로 메시지를 게시할 수 있게 설정해준다.

AWS Lambda 함수 3개 생성 및 구성

SQS를 통해 알림을 받으면 해당 알림을 처리하는 Lambda 함수를 생성해보자. 이미 존재하는 role을 선택하여 Lambda 함수를 구성하면 아래와 같이 성공적으로 함수가 생성되는 것을 확인할 수 있다.

Lambda 함수 구성

SQS 대기열에 새 객체가 푸시될 때마다 Lambda 함수를 실행할 수 있도록 Lambda 함수를 구성해보자

이렇게 트리거를 추가해주고, 만들어준 SQS 대기열을 트리거에 넣어주면 완료된다. 그리고 나서 SQS 대기열에서의 트리거를 받고난 뒤 어떻게 행동할지에 대한 코드를 아래 코드에 적어준다.

Lambda 함수를 2개 더 만들어야되기 때문에 Runtime과 일반 구성에서 설명을 추가해준 뒤 구성을 완료한다.

SQS 대기열을 3개 만들어 주었으므로 각각의 트리거를 처리할 수 있는 Lambda함수를 똑같이 3개 만들어준다.

파일 업로드 및 확인

S3에 위와 같이 사진들을 업로드 한 뒤 어떻게 처리가 되는지 확인해보자. 확인은 lambda에서 Monitoring을 해주는 Cloud Watch를 통해 해줄 수 있다.

이렇게 파일 업로드시 람다함수가 돌아가는 것을 확인할 수 있다.

profile
행복한 사람

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

항상 좋은 글 감사합니다.

답글 달기