무지에서 시작된 사건 구동 구조~ 실천편~

[개요]


이전에"무지에서 시작된 이벤트 구동 구조~ 도입편~" 무지한 필자는 이벤트 구동 구조(Event Driven Archeitecture)의 개요를 기사로 썼다.
본고는 AWS DynamoDB Stream을 이용하여 간단한 이벤트 구동 구조를 구축하는 과정을 총괄하고자 한다.

[대상 독자]

  • 향후 이벤트 구동 구조를 배우기 시작한 사람
  • AWS에 접촉한 적이 없거나 거의 접촉한 적이 없는 사람
  • [아키텍처 구축의 개요]


    인상으로 EC 사이트와 같은 주문 시스템을 고려해 보세요.

    다음 작업이 수행됩니다.
  • 사용자가 상품을 주문할 때 다이나모DB의 주문표에 기록
  • 주문 기록을 삽입할 때 DynamoDB Stream에서 Lambda 함수
  • 를 실행합니다
  • Lambda 함수는 Cloud Watch에서 주문 로그를 유지
  • ※ 특별히 람보를 경유해서 Logging을 할 필요가 있나요?그러면 잠시 무시할 수 있었으면 좋겠네요.

    [시위]


    지금부터 구축된 구조 시범.앱 게임이 주문서에 기록을 삽입해야 하는데 이번에는 시연이라 수동으로 기록을 삽입해야 한다.
    주문 양식에 레코드를 삽입하는 경우

    CloudWatch에 로그를 남깁니다.

    (정지 그림은 분별하기 어려우니 여유가 있으면 gif를 선택한다.)

    【구축 절차】


    AWS에 접촉한 적이 없거나 거의 접촉하지 않은 사람을 위해 절차를 정리하고 설명할 필요가 없는 부분은 건너뛰세요.

    1. 시작


    로그인AWS 관리 콘솔.계좌가 없는 사람은 계좌를 만드세요.
    로그인에 성공하면 다음 화면이 표시됩니다.

    2. DynamoDB


    먼저 DynamoDB에서 테이블을 만들고 테이블 흐름을 활성화합니다.
  • AWS 관리 콘솔의 헤더에 있는 서비스를 누르면 AWS의 서비스 일람이 표시됩니다. 따라서 텍스트 상자에 다이나모DB를 입력하고 알림에 표시된 다이나모DB를 선택하십시오.

  • DynamoDB의 첫 페이지로 마이그레이션합니다.먼저 표를 작성하려면 표 작성을 누르세요.


  • 테이블로 이동하여 화면을 만듭니다.테이블 이름과 기본 키워드를 다음과 같이 설정하십시오.(DynamoDB를 처음 접하신 분들은 튜토리얼을 추천합니다)
    테이블 이름: Order
    주 키워드: ItemName, ClientName

  • 표 제작이 완료되면 다음 화면이 표시됩니다(표 제작에 30초 정도 소요됨)
  • DynamoDB Stream을 활성화합니다.업스트림 관리를 누르면 팝업이 표시됩니다. 새 그림을 선택하고 사용하십시오.유효성이 완성되면 DynamoDB 설정이 일시적으로 종료됩니다.
  • 3. IAM 드럼


    그런 다음 Order 테이블에 레코드를 삽입한 후 실행 중인 Lambda 함수에 대한 IAM 역할을 만듭니다.
  • DynamoDB 때와 마찬가지로 IAM의 첫 페이지로 마이그레이션합니다.페이지의 헤더에 있는 서비스를 누르면 AWS 서비스 목록이 표시됩니다. 텍스트 상자에 IAM을 입력하고 프롬프트에 표시된 IAM을 선택하십시오.

  • IAM의 첫 페이지로 마이그레이션하려면 사이드바 역할을 선택합니다.IAM 스크롤 볼륨을 다시 만들려면 스크롤 을 누릅니다.

  • 람바다 캐릭터를 만들어야 하니 람다를 선택하고 다음 단계를 눌러주세요.

  • 다음에 캐릭터 정책을 설정합니다.역할에 첨부된 전략은 Amazon DynamoDBFull Access, AW S L a mbadynamoDBExecution Role입니다.정책을 선택한 후 다음 을 누릅니다.

  • 다음에 표지의 설정으로 넘어가지만 이번에는 표지의 설정을 하지 않으니 다음 단계를 눌러 주세요.

  • 마지막으로 IAM 스크롤 확인 화면으로 이동합니다.여기에 캐릭터 이름을 입력할 수 있습니다. orderLogger를 입력하십시오.

  • IAM 캐릭터 제작이 완료되면 다음 Lambda 함수 제작이 이어진다.

  • 4. Lambda


    기록을 Order 테이블에 삽입하면 Lambda 함수가 생성됩니다.이 함수의 실행을 설정하기 전에 만든orderLogger입니다.
  • 는 다이나모DB 때와 마찬가지로 람다의 첫 페이지로 옮겼다.페이지 머리글에 있는 서비스를 누르면 AWS 서비스 목록이 표시됩니다. 텍스트 상자에 Lambda를 입력하고 프롬프트에 표시된 Lambda를 선택하십시오.

  • Lambda의 첫 페이지로 마이그레이션합니다.함수를 만들기 위해서 함수의 생성을 누르십시오.


  • 함수로 넘어가 화면을 만듭니다.함수 설정은 다음과 같습니다.설정한 후 함수를 눌러 만듭니다.
    함수 이름: logging Order
    운행 시간.js 10.x
    수행 역할:기존 역할 사용
    기존 역할: orderLogger

  • 함수를 만들면 다음 화면이 표시됩니다.함수 트리거를 설정합니다. 사이드바 트리거 추가에서 DynamoDB를 선택하십시오.

  • 동일한 화면을 아래로 스크롤하면 트리거 설정을 변경할 수 있습니다.트리거 설정은 다음과 같습니다.설정 후 추가를 눌러주세요.
    DynamoDB 테이블:Order
    배치 크기: 100
    시작 위치:최신
    트리거 활성화:검사

  • 동일한 화면을 위로 스크롤하고 logging Order를 선택합니다.
  • 같은 화면을 아래로 스크롤할 때 함수 코드를 편집하는 편집기가 있습니다.편집기에서 그림 아래에 기재된 코드를 복사하십시오.복사 후 오른쪽 상단에 있는 저장 단추를 누르십시오.이벤트 구동 구조의 구축은 이것으로 끝냅니다.
  • index.js
    console.log('Loading function');
    
    exports.handler = async (event, context) => {
        for (const record of event.Records) {
            console.log(record.eventID);
            console.log(record.eventName);
            console.log('DynamoDB Record: %j', record.dynamodb);
        }
        return `Successfully processed ${event.Records.length} records.`;
    };
    
    

    [시위]



    이렇게 구축이 끝났으니 실제로 한번 가동해 보자.앱 게임이 주문서에 기록을 삽입해야 하는데 이번에는 시연이라 수동으로 기록을 삽입해야 한다.
  • DynamoDB의 페이지를 다시 표시합니다.항목 탭을 선택한 경우 현재 기록된 행이 없습니다.새 기록을 삽입하려면 항목의 생성을 누르십시오.

  • 팝업이 표시됩니다. ItemName 및 ClientName을 입력하고 저장을 누릅니다.

  • 기록은 이미 만들어졌다.

  • CloudWatch의 첫 페이지를 표시합니다.

  • 사이드바의 로그를 선택하면 로그 그룹에/aws/lambda/loggingOrder가 있습니다.로그 그룹과 로그 흐름을 선택하면 몇 개의 로그가 남습니다.나는 그중에 그림과 같은 일지가 있다고 생각한다.없으면 구축에 실패해서 다시 한 번 보세요.

  • 이상으로 주문 기록이 삽입된 경우 다이나모DB 스트림에 따라 램바다 함수를 실행하고 주문 기록을 남겼음을 확인했다.

    【발전】


    이번에 행사 구동 구조 구축을 체험해 주문만 하면 기록이 있는 간편한 구축을 했지만 다음과 같이 주문이 들어오면 재고관리시스템, 발송시스템, 회계시스템 등 여러 서비스가 집행될 수 있도록 구축할 수 있다.활동 구동 구조의 가능성을 탐색할 수 있다면 다행입니다.

    좋은 웹페이지 즐겨찾기