본문 바로가기

클라우드/AWS

Architecting on AWS (5일)

10. 캐싱

10.1. 세션관리

  - 사용자 세션을 관리하는 특정 서버로 요청을 라우팅할 수 있습니다.

  - 쿠키토큰을 사용하여 세션을 유지

  - ELB 사용 시, 트래픽이 분산되기 때문에, 한 서버에만 쿠키+사용자 정보가 저장되기 때문에 로드밸런스로 인해 다른 서

    버로 향하게 되면 로그인이 풀리는 문제가 있다.

  - 따라서 ELB의 고정 세션기능 사용하거나 세션생태를 저장하기 위한 캐싱 DB를 생성하여 사용한다.

 

10.2. DB 캐싱

  - Amazon DynamoDB Accerlerator : 탁월한 성능 , 높은 확장성, 완전 관리형, 보안 / 인 메모리 캐쉬(Dynamo 전용) 

  - Amazon Elastcache : 인 메모리 캐쉬, 클라우드에서 인 메모리 캐시를 배포, 운영, 조정하는데 사용하는 웹 서비스

  - 연속쓰기 : 데이터가 저장될 때 마다 캐시의 데이터가 업데이트 되므로, 캐시의 데이터는 언제나 최신입니다.

     -> 모든 쓰기 작업은 캐시로 쓰기와 데이터 베이스로 쓰기라는 2번의 작업이 수행

     -> 한번도 읽지않은 데이터가 대부분이므로 클러스터에는 한번도 읽지 않은 데이터가 상당히 많을 수 있다.

 

11. 결합 해제된 아키텍처 구축

  - ( 밀결합 ) 기존 인프라는 강력하게 통합된 서버 체인을 중심으로 움직이며 각 서버는 특정 목적을 가지고 있다.

  - 이러한 구성에서 요소나 계층 하나에 장애가 발생하면 시스템에 치명적인 영향을 줄 수 있습니다.

  - 상호종속성을 줄여 다른 요소에 영향을 주지 않도록 해야한다. --> 밀결합 해제된 결합을 소결합

  - 계층 사이 로드밸런스 같은 기능을 통해 결합을 축소한다. 

  - Amazon SQS : 완전 관리형 메시지 대기열 서비스

                           : 메시지는 처리 및 삭제될 때까지 저장

                           : 발신자와 수신자 간 버퍼 역할을 담당

                           : 소결합 실현 : 비동기식 처리를 사용하여 각 단계에서 신속하게 응답

                                                 : 성능 및 서비스 요구 사항 처리

                                                 : 실패한 단계에서 십게 복구

                                                  : 표준 대기열( 최소 한 번 ) 과 fifo 대기열 ( 정확히 한번)

                             : 배달 못한 편지 대기열 지원

                             : 백엔드에서 오래걸리는 작업에 경우 앞에 큐를 배치함으로서 작업의 효율성을 높인다.

11.1.  amazon  SNS와 결합 해제 : 클라우드 기반 앱 용도

  - amazon  SNS : 클라우드에서 손쉽게 알림 기능을 설정, 작동 및 전송할 수 있는 웹 서비스

 

11.2. 아마존 MQ

  - 아파치 MQ용 관리형 메시지 브로커 서비스.

               ->> 애플리케이션 마이그레이션 용도

 

 

12. 마이크로 서비스 및 서버리스 아키텍처

12.1. 마이크로 서비스란?

  -  잘 정의된 API를 통해 통신하는 독립서비스로 구성된 애플리케이션

  - 코드에 대한 종속성을 제거하여 각 서비스들을 독립적으로 구성

  - 특성 : 자율적, 전문적, 

 

12.2. 컨테이너 서비스

  - 반복 가능하며 독립형 실행 환경이며 VM보다 더 빠른 처리속도를 가진다.

  - 컨테이너는 리소스 격리 프로세스에서 애플리케이션과 종속 항목을 실행하게 해주는 운영 시스템 가상화 방법

  - 환경이 변화해도 정상적으로 수행이 가능하다.

  - ECS : 도커 컨테이너의 실행을 조정

             : 컨테이너를 실행하는 노드 플릿을 유지

             : 인프라 구축의 복잡성을 제거  

             : 컨테이너 이미지를 가져와 적절한 EC2 클러스터에 요구한 만틈 컨테이너를 구동

             : ECR을 이용하여 컨테이너의 저장소 역할을 하며 서비스를 저장하여 EC2에서 구동

             : 

 

  - EKS : 쿠버네티스 기반인 컨테이너 대규모 환경 지원

  - AWS Fargate : 완전 관리형 컨테이너 서비스

                           : 클러스터 프로비저닝 및 관리

                           : 런타임 환경관리

                           : ECS EKS 실행 가능

 

12.3. 서버리스 환경 구현

  - 서버를 관리하지 않고 앱과 서비스를 구축하고 실행

  - AWS Lambda : 완전 관리형 컴퓨팅 서비스

                           : 상태 비저장 코드 실행

                           : 일정에서 또는 이벤트에 대한 응답으로 코드 실행, 엣지에서 실행 가능

                           : 서버를 프로비저닝하거나 관리할 필요없이 코드를 실행할 수 있다.

 

  - 서버리스 컴퓨팅의 이점 : 구성이 아니라 애플리케이션에 집중함

                                           : 요청 시에만 컴퓨팅 리소스 사용

                                           : 마이크로 서비스 아키텍처 구축

--------------------------------------------------------------------------------------------------------------------

  - amazon api gateway : 애플리케이션에 접속 역할을 하는 API 생성

                                       : (waf 같이 사용) 엔드 포인트 노출 방지 , DDOS 공격 방지

                                        :  WAF => 가용성에 영향을 주거나, 보안을 위협하거나, 리소스를 과도하게 사용하는 공격으로

                                                         부터 애플리케이션이나 API를 보호하는데 도움이되는 웹 애플리케이션 방화벽

                                                          AWS  환경에서 발생하는 7계층에 해당되는 보안위험에 대응하기 위한 보안 서비스

  - AWS step function : 단계를 자동으로 트리거하고 추적

                                     애플리케이션 기능을 단계별로 실행

                                      상태시스템 : 출력을 결정하기 위해 이전 조건에 의존하는 일련의 작동조건을 가진 객체

 

12.4. AWS 관리형 서비스로 서버리스 아키텍처 구현

  - 시나리오 : 재고 내역 파일을 업로드하고 저장 -> 대시 보드 를 통해 재고 수준을 모니터링 -> 재고가 없얼 때 재고관리자

                      에게 알림

            csv 재고 내역파일이 s3 업로드 -> lambda 함수가 dynamodb 테이블에 콘텐츠 로드 ->  재고내역을 서버리스 대시

            보드앱을 통해 모니터링 -> 두번째 lambda 함수는 재고가 없을 때 알림을 보냄 

 

  - lambda 함수 생성하여 데이터 로드

구성
이름 및 런타임 설정

 

역할 설정 : 실행권한 부여
s3dp 업로드되어 함수를 함수를 트리거한 파일을 다운로드 -> 파일의 각 줄을 루프처리 -> 데이터를 dynamoDB inventory 테이블에 삽입

 

  - s3 이벤트 구성

s3 에서 버킷을 생성하여 lambda 함수를 트리거하도록 구성
버킷 생성
생성한 버킷 -> properties 탭 클릭

  - 이벤트 생성

이름 지정

 

이벤트 유형 : 모든 오브젝트 생성 이벤트

 

생성한 lambda 선택

     ** 버킷에 재고파일 수신 준비 

 

  - 로딩 프로세스 테스트

csv 파일 업로드

 

  - 미리 구성되어 있는 대시보드 앱 URL을 통해 확인

        -. 대쉬보드 app 은 s3 에서 정적 웹 페이지로 제공되며 amazon Cognito를 통해 anonymous user로 인증

          이는 대시보드가 DynamoDB에서 데이터를 검색할 수 있는 충분한 권한 제공

데이터 확인

 

  - dynamodb에서 데이터를 확인 => 테이블 확인

내용 확인

 

  - 알림 구성 : 아마존 sns 사용

토픽생성

 

이름 지정 및 생성

 

  - 알림 수신을 위해 주제를 구독

구독생성

 

이메일 구독 설정

 

이메일 확인

 

  - 알림을 전송하는 lambda 함수 생성

 

함수 생성

 

31번 라인의 altertopc 변수값을 설정한 주제이름으로 변경
수신 레코드 루프 처리, 재고 수량 0인 sns 주제에 메시지 전송

 

  - 테이블에 데이터가 추가될때마다 함수가 트리거 되도록 함수 구성

트리거 생성

 

db테이블에 트리거설정

 

  - 시스템 테스트

업로드 시
테이블이 추가되었다고 이메일이 오게 된다.

'클라우드 > AWS' 카테고리의 다른 글

Architecting on AWS (5일) 2  (0) 2022.07.12
Architecting on AWS (4일)  (0) 2022.07.07
Architecting on AWS (3일)  (0) 2022.07.06
Architecting on AWS (2일)  (0) 2022.07.05
Architecting on AWS (1일)  (0) 2022.07.04