-
[76일차] Final Project Day_07 ~ 08교육/코드스테이츠 2023. 3. 16. 12:02
Manager Lambda 제작
매니저는 apigateway를 통해 데이터를 람다로 보내고 SNS를 통해 엔드포인트에 맞게 각각의 SQS에 보내야 한다.
SNS에서 SQS로 보낼때 요청값 바디에 타입을 설정해 해당 엔드포인트만 받을 수 있게 설정했다.
콘솔에서 SNS 구독 생성 후 메세지 필터링
구독할 엔드포인트 유형을 선택한다.
구독 필터 정책을 통해 원하는 메세지 내용을 입력한다.
메시지 게시를 눌러 테스트 할 수 있다.
문제 도출
상황 설명
리워드 매니저의 서버 아키텍처이다
우리 팀은 각각의 Lambda 서버리스에도 메세지가 손실되지 않기 위해 SNS와 SQS를 설정하여 내결함성을 높인 비동기 방식으로 만들었다.
문제 발생
문제는 Queue를 사용하여 Response를 받을 경우 생긴다.
모든 응답은 하나의 SNS와 하나의 Lambda를 통해 이동하게 됨으로써 병목현상이 일어나 응답 시간이 지연 된다.
큐와 연결된 Lambda들은 데이터 값을 받고 다시 SQS 응답을 보내야 하며 이는 효율적인 데이터 전송 방법이 아니다.
내결함성을 유지 하는것도 중요하지만 굳이 같은 api를 사용하는 서버에서 까지 사용할 필요없다
문제 해결
APIgateway에 엔드포인트를 설정하여 각각의 람다에 요청을 보낼수 있게 설정했다.
전에 Lambda와 SNS로 생긴 지연 시간 없이 바로바로 응답을 보낼수 있게 된다.
새로운 워크플로우 제작
WorkFlow
매니저는 APIgateway를 사용해 각각의 Lambda에 맞는 엔트포인트로 요청을 보낸다.
각각의 Lambda는 함수들을 통해 DynamoDB에 있는 데이터를 조회, 수정 한다.
배운점
비동기 방식이 무조건 좋은게 아니다. 상황에 맞게 적절한 서비스를 사용하는게 이상적인 아키텍처이다
서비스들의 장점만을 살려 서비스를 남용하는것보다 기본을 지키면서 최소한의 서비스를 사용하도록 해보자
비동기 방식은 다른 일을 수행하는 주요 서버에 메세지를 옮기면서 생길 수 있는 손실을 방지할때 사용하자
============================================================================================참고 자료
https://aws.amazon.com/ko/blogs/compute/simplify-pubsub-messaging-with-amazon-sns-message-filtering/
Simplify Your Pub/Sub Messaging with Amazon SNS Message Filtering | Amazon Web Services
Contributed by: Stephen Liedig, Senior Solutions Architect, ANZ Public Sector, and Otavio Ferreira, Manager, Amazon Simple Notification Service Want to make your cloud-native applications scalable, fault-tolerant, and highly available? Recently, we wrote
aws.amazon.com
https://aws.amazon.com/ko/getting-started/hands-on/filter-messages-published-to-topics/
Getting Started Tutorial | Filter Messages Published to Topics with Amazon Simple Notification Service (SNS) and Amazon Simple Q
aws.amazon.com
https://blog.leocat.kr/notes/2020/12/18/aws-sns-subscription-filtering
[AWS] SNS 구독 필터링(Subscription Filtering)
AWS SNS를 사용하면 한 곳으로 이벤트(메시지)를 발행하고, 여러 곳에서 동일한 이벤트를 받아볼 수 있다. 특정 서비스의 변경 이벤트를 한 곳(SNS)으로 발행하고, 이 이벤트가 관심 있는 서비스는
blog.leocat.kr
'교육 > 코드스테이츠' 카테고리의 다른 글
[78일차] Final Project Day_10 (0) 2023.03.20 [77일차] Final Project Day_09 (0) 2023.03.18 [74일차] Final Project Day_06 (0) 2023.03.14 [73일차] Final Project Day_05 (0) 2023.03.13 [72일차] Final Project Day_04 (0) 2023.03.11