Always-Try(정보보안 및 일상)

AWS DNA - 1주차 Peak Load Control with Serverless - 3/3 본문

AWS

AWS DNA - 1주차 Peak Load Control with Serverless - 3/3

Always-Try 2021. 9. 15. 23:17
본 포스팅은 AWS KOREA에서 제공해는 교육인 AWS DNA에서 진행한 Hands On Labs 를 요약한 내용입니다. 단, 서비스 소개에 대한 내용은 AWS 공식 docs를 참고해서 별도로 작성했습니다.
처음 사용해보는 서비스들도 많아서 하나의 Hands On Labs 세션 당 총 3편으로 나눠서 포스팅 할 예정입니다.

 

지난 포스팅 2021.09.13 - [AWS] - AWS DNA - 1주차 Peak Load Control with Serverless - 2/3

에 이어 Peak Load Control with Serverless 실습 과정 포스팅을 계속 진행한다. 까먹을까봐 다시 실습 목표를 적어둔다.

  • 실습 목표: 라이선스 또는 외부연동 등의 여러 요소로 인해 갑작스러운 트래픽 증가를 처리하기 어려운 Legacy 애플리케이션에 사이트에 도착하는 순서대로 번호표를 발급하고 사용자를 대기하도록 한 다음 순서대로 입장시킬 수 있는 환경을 구성한다.

 

 

5) 웹사이트를 떠난 사용자를 체크해서 이미 떠난 경우는 토큰을 삭제하고, 새로운 사용자를 입장시키는 역할을 처리하는 로직

  1. 흐름
    1. DynamoDB에 새로운 토큰이 생성되면 stream을 통해서 Lambda가 실행
    2. 이 Lambda는 SQS에 10초의 DelaySeconds를 추가하여 토큰을 입력
    3. 이후 이 SQS를 바라보고 있는 Lambda는 해당 토큰을 검사하여 20초 이상 heartbeat요청이 없으면, 해당 토큰을 삭제하고 새로운 사용자를 입장
    4. 만약 heartbeat이 요청이 정상적인 토큰이라면 다시 10초의 DelaySeconds를 추가하여 SQS에 입력하고 이후 다시 토큰을 체크

 

  • DynamoDB & SQS & Lambda (DynamoDB와 Lambda는 이전 포스팅에 설명이 있어 생략)
    • SQS
      • 서비스 개요
        • 지속성이 우수하고 사용 가능한 보안 호스팅 대기열을 제공하며 이를 통해 분산 소프트웨어 시스템과 구성 요소를 통합 및 분리할 수 있음
      • 보안 고려 사항
        • 데이터 암호화
          • 전송되는 데이터는 SSL로 
          • 저장되는 데이터는 KMS와 연동해서 암호화 가능
        • ID 및 액세스 관리
          • 기타 IAM으로 액세스 관리
          • SSL 또는 MFA를 사용해야 하는 조건 작성
          • 지정된 날짜 또는 시간 범위 내에서만 요청을 허용
          • IP 주소의 범위를 지정
      • 실습 시 활용 방안
        • DynamoDB에 새로운 토큰이 생성되면 stream을 통해서 Lambda가 실행 됨
        • 실핻 된 Lambda는 SQS에 10초의 DelaySeconds를 추가하여 토큰을 입력
        • 이후 이 SQS를 바라보고 있는 Lambda는 해당 토큰을 검사하여 20초 이상 heartbeat요청이 없으면, 해당 토큰을 삭제하고 새로운 사용자를 입장시킴
          • 만약 heartbeat이 요청이 정상적인 토큰이라면 다시 10초의 DelaySeconds를 추가하여 SQS에 입력하고 이후 다시 토큰을 체크하는 과정을 거침

 

 

 

6) 현재 사이트를 사용중인 접속자, 대기중인 접속자가 얼마나 되는지를 어떻게 알 수 있는 통계 테이블을 구성

DynamoDB는 집계쿼리를 바로 실행하는데는 적합하지 않으므로 별도의 통계테이블을 구성한다. 이때 DynamoDB의 stream을 통하여 Lambda를 트리거하고 이 Lambda에서 데이터를 집계하여 status 테이블에 저장한다.

  • DynamoDB & Lambda (DynamoDB와 Lambda는 이전 포스팅에 설명이 있어 생략)
    • 실습 시 활용 방안
      • DynamoDB의 stream을 통하여 Lambda를 트리거하고 이 Lambda에서 데이터를 집계하여 status 테이블에 저장
  •  

 

 

7) 관리자가 모니터링하고 관리하기 위한 환경을 구성

  1. 실습 시 활용 방안
    1. CloudWatch의 Schedule 이벤트를 통하여 1분단위로 Step Functions를 호출
    2. Step Functions은 10초 마다 6회 동안 Lambda를 호출
    3. Lambda는 앞서 살펴보았던 status 테이블의 데이터를 주기적으로 조회하고 CloudWatch의 Custom 메트릭으로 저장
    4. 이후 CloudWatch Alarm 통해 메트릭이 임계치를 초과하는 경우 Alarm이 발생
    5. 이 CloudWatch Alarm은 SNS와 연동되어 리소스를 프로비저닝 할 때 입력했던 관리자 이메일로 Notification을 발송

 

  •  CloudWatch
    • 서비스 개요
      • AWS 리소스 및 에서 실행 중인 응용 프로그램AWS를 실시간으로 확인
      • 리소스 및 애플리케이션에 대해 측정할 수 있는 변수인 지표를 수집하고 추적할 수 있음
    • 보안 고려 사항
      • ID 및 액세스 관리
        • 기타 IAM으로 액세스 관리
        • SSL 또는 MFA를 사용해야 하는 조건 작성
        • 지정된 날짜 또는 시간 범위 내에서만 요청을 허용
        • IP 주소의 범위를 지정
      • 로깅
  • Step Functions
    • 서비스 개요
      • Serverless의 가시성이 확보되어 서비스를 빠르게 빌드하고 업데이트 할 수 있음
      • 각 단위 Function들의 결합으로 코드를 간결하게 개발할 수 있음
      • Lambda Function들을 유기적으로 연결하여 오류와 예외처리를 쉽게 할 수 있음
      • AWS 서비스들(Cloudwatch, Lambda 등등)의 기본 동작 주기보다 빠르게 액션을 취할 수 있음
    • 보안 고려 사항
      • 저장 데이터 암호화
        • Step Functions 항상 저장 데이터를 암호화합니다. AWS Step Functions의 데이터는 투명 서버 측 암호화를 사용하여 저장 상태로 암호화 됨
      • 전송 데이터 암호화
        • Step Functions s를 사용하면 서비스 및 기타 통합 간에 전송 중인 데이터를 암호화
        • 다른 AWS 서비스 간 전달되는 통신은 모두 TLS 암호화를 사용
      • 로깅
  • SNS
    • 서비스 개요
      • 게시자에서 구독자에게 메시지 전송을 제공하는 관리형 서비스
      • 지원되는 엔드포인트 유형 (예: Amazon Kinesis Data Firehose, Amazon SQS,AWS Lambda, HTTP, 이메일, 모바일 푸시 알림 및 모바일 문자 메시지 (SMS) 가 포함되어 있음
    • 보안 고려 사항
      • 전송 구간 및 저장 데이터 암호화

 

Comments