Project3 Day3 회고

업데이트:     Updated:

카테고리:

태그:

Day 3


Step 4 : 데이터베이스의 재고를 증가시키는 Lambda 함수 생성


  • stock_lambda에서 레거시 시스템(Factory API)에 제품 생산 요청
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const axios = require('axios').default

const consumer = async (event) => {
    for (const record of event.Records) {
        const json = JSON.parse(record.body).MessageAttributes

        console.log(`필요데이터 : ${JSON.stringify(json)}`);
        console.log(`요청자 : ${json.MessageAttributeRequester.Value}`);
        console.log(`물건아이디 : ${json.MessageAttributeProductId.Value}`);
        console.log(`공장아이디: ${json.MessageAttributeFactoryId.Value}`);
        console.log(`수량: ${json.MessageAttributeProductCnt.Value}`);
        
        const payload = {
            MessageGroupId : "stock-arrival-group",
            MessageAttributeProductId : json.MessageAttributeProductId.Value,
            MessageAttributeProductCnt : json.MessageAttributeProductCnt.Value,
            MessageAttributeFactoryId : json.MessageAttributeFactoryId.Value,
            MessageAttributeRequester : json.MessageAttributeRequester.Value,
            CallbackUrl : "https://sq2xu55mai.execute-api.ap-northeast-2.amazonaws.com/product/donut",
            };
            // TODO:
            // 어떤 형식으로 넣어야 할까요? Factory API 문서를 참고하세요.
            // 필요하다면 record.body를 활용하세요.
            
            axios.post('http://project3-factory.coz-devops.click/api/manufactures', payload)
            .then(function (response) {
                console.log(response);
            })
            .catch(function (error) {
                console.log(error);
            });
    }
};

module.exports = {
    consumer,
};
  • POSTMAN으로 포스트 요청을 보내면

Factory-API

  • Factory API에 생산요청 된것이 확인이 된다!

추가 시나리오에 대한 아키텍처 구성 설명


  • 추가 시나리오에 대한 아키텍처를 구성해야 합니다.
    • 실제 구현하지 않아도 아키텍처상에 리소스 추가 배치
  • 확장된 아키텍처를 가지고 팀의 의견을 제시할 수 있어야 합니다.

a. 광고 중단 요청 진행 시나리오

재고가 없는 상황에서도 광고가 계속 진행되고 있습니다. 광고 비용 절감과 고객불만을 낮추기 위한 조치가 필요합니다. 메시지가 유실되는 상황을 막기 위해 내구성을 갖춘 시스템이 필요합니다.

  • 요구사항

    • 재고를 채우기 위한 과정이 진행될 때 광고 담당자에게 광고 중단 요청 내용을 담은 이메일이 전송되어야 합니다.
    • 메시지에 대한 내구성을 강화하기 위해 메시지 Queue가 사용되어야 합니다.
    • AWS SES 서비스를 이용해서 이메일을 전송해야 합니다.

b. VIP 고객관리 프로세스 추가 시나리오

모니터링 결과 대량 주문을 하는 일부 고객들이 확인되었습니다. 대량 구매 고객들의 사용자 정보를 식별할 수 있어야 합니다. 고객정보는 별도의 서버(EC2)와 데이터베이스(RDS)에서 관리되고 있습니다. 데이터베이스 기록과 외부 마케팅 시스템으로의 연결과정의 오류를 대비하기 위한 내구성 갖춘 시스템이 필요합니다.

  • 요구사항

    • 100개 이상 구매가 발생 시 해당 유저의 타입이 normal에서 Vip로 변경되어야 합니다.
    • 메시지에 대한 내구성을 강화하기 위해 메시지 Queue가 사용되어야 합니다.
    • 고객관리는 별도의 데이터베이스(RDS)로 관리되고 있기 때문에 해당 데이터베이스에 접근해서 정보를 수정해야 합니다.

구성된 아키텍쳐


img

Project3 를 마치며


프로젝트3는 앞서 프로젝트 1,2에 비하면 나름? 쉬어가는 프로젝트 였던것같다. 프로젝트 1,2때 하루에 두,세시간밖에 못잤던거 생각하면 정말 꿀잠 자면서 편하게 했다! 그리고 팀원들이 너무 잘해서 도움도 많이 받았고 많이 배울 수 있었고 Serverless Framework 의 구성 및 Lambda에 대한 이해도를 높일 수 있던 프로젝트라 끝나고 뿌듯함도 있었다. 이런 프로젝트만 있으면 좋겠다.

Project 카테고리 내 다른 글 보러가기 🤠

댓글남기기