원티드 프리온보딩 챌린지 BE 5월 - AWS 3~4강

Woojin·2023년 5월 13일
0
post-thumbnail

🤔 3강 Message Queue(AWS SQS, Kinesis)


* AWS SQS(Simple Queue Service)

: 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 위한 완전관리형 메시지 대기열(서로 다른 애플리케이션 요구 사항에 맞춰 2가지 유형의 대기열을 제공함)

이미지출처 : Processing High Volume Big Data Concurrently with No Duplicates using AWS SQS

* 유형 - 표준대기열 vs FIFO대기열(First-In-First-Out)

표준대기열 : 무제한 처리량, 최소한 한 번 전달됨(여러번 될수도 있음), 최선 노력 순서(순서가 완벽히 지켜지지는 않음)

  • 실시간 사용자 요청을 집중적 백그라운드 작업과 분리(사용자들이 미디어 크기를 조정하거나 인코딩하면서 미디어를 업로드할 수 있게 함)
  • 작업을 여러 작업자 노드에 할당(많은 수의 신용 카드 인증 요청을 처리)
  • 장래 처리를 위한 메시지 배치(데이터베이스에 여러 항목이 추가되도록 예약)

vs FIFO대기열(First-In-First-Out) : 초당 최대 300개의 메시지, 정확히 한 번 처리, 선입선출 전달

  • 사용자가 입력한 명령이 올바른 순서로 실행되도록 해야 하는 경우
  • 가격 수정을 올바른 순서로 전송하여 제품 가격을 정확히 표시해야 하는 경우
  • 계정에 등록하기 전에 학생이 과정에 등록되는 것을 방지해야 하는 경우

* AWS Kinesis

: 모든 규모의 스트리밍 데이터를 비용 효율적으로 처리할 수 있는 핵심 기능과 더불어 애플리케이션 요구 사항에 가장 적합한 도구를 선택할 수 있는 유연성을 제공함

  • 실시간으로 비디오 및 데이터 스트림을 손쉽게 수집, 처리 및 분석
  • 모든 규모에서 쉽게 데이터 스트리밍
  • 안정적으로 실시간 스트림을 데이터 레이크, 웨어하우스, 분석 서비스에 로드
  • 스트리밍 데이터에서 실행 가능한 인사이트 확보

Kinesis vs SQS


(이미지출처 : 엔터프라이즈 어플리케이션을 위한 효과적인 이벤트 프로세싱 전략 - 문종민 솔루션즈 아키텍트(AWS))



🤔 4강 Database(AWS RDS, DynamoDB, ElastiCache)

* AWS RDS(Relational Database Service)

: 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있는 관리형 서비스 모음

* AWS DynamoDB

  • 완전관리형 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공함, 서버리스이므로 따로 유지비용 없이 사용한 만큼 지불함.
  • 보조 인덱스를 통한 빠른 조회를 지원함(NoSQL 특성상 관계가 없기 때문에 일반적으로 데이터를 찾기에는 인덱싱이 없으면 속도가 느려지지만 그 부분을 해결해줌).
  • 서버리스(람다) 서버와의 궁합이 매우 잘 맞음.
  • ElastiCache에 비하면 DynamoDB는 단순 키 밸류값에 가까움.

* AWS Elasticache

  • 클라우드에서 분산된 인 메모리 데이터 스토어 또는 캐시 환경을 손쉽게 설정, 관리 및 확장할 수 있는 웹 서비스
  • Redis와 Memcached를 지원
  • 캐시 노드 실패에서 자동 감지 및 복구
  • 사용 예시 : 캐싱 / 세션 스토어 / AI ML 모델 / 실시간성이 높은 작업들

RDS가 Mysql이라고 한다면 ElastiCache는 redis(인메모리 DB), 클라우드프론트는 cdn이라고 할 수 있음.
서버에서 DB를 가기 전에 redis를 가니까 세 개를 다 구성하게 되는 것.

트래픽이 늘어갈 때 개선 방법은 어떤 것을 생각할 수 있을까?

  • 병렬적/비동기적 처리 경우 메시지큐 사용
    맥북 하나로 처리할 수 없는 경우 실 서비스에서는 훨씬 많은 경우가 있을텐데 람다를 써서 비동기적으로 처리
    클러스터링의 경우는 AWS 고유의 설정은 아니고 DB 클러스터링의 경우는 쓰기/읽기를 분리하는 전략을 많이 취함
    그것도 RDS 설정을 하면 간편하게 할 수 있음
    스케일 아웃 방법도 있음

  • DB 관리 방법에는 기본적인 룰이 있음 - 따라서 인덱싱을 어떻게 하는지가 되게 중요함
    and를 최대한 피하고 or을 조건절로 하면서 성능을 최대한 끌어올림

profile
개발 공부하는 일상

0개의 댓글