실습과제가 시작되었당 또..
조낸 귀찮아서 이때까지 블로깅을 1도 안했지만
언젠가 할거라는 믿음... 희망.. 뭐 ,, 그런걸 품고 나자신을 믿어보는거지..
임시저장만 3개네..
그래도 실습은 해야할것같아서 영차영차 씁니당...
Step 1 : Lambda 서버(Sales API) - DB 연결
일단 만들어져있는 rds랑 람다함수를 연결해주었다.
트러블슈팅 -1
이상하게 윈도우 환경에서 .env 파일을 못읽어서 하드코딩해서 진행했당 유후~!
테스트에서는 별 이상 없었다
postman으로 정상 동작하는 것을 확인하고 serverless로 람다함수를 배포해주었다.
그리고 람다함수 환경변수로 지정해주었다.
Step 2 : “재고 없음” 메시지 전달 시스템 구성
이제 재고가 없을 경우 구매하지 못하고 해당 메시지를 sqs 에 전달하게 만들어 주었다.
일단은 SNS로 주제생성을 해주고, SQS 로 대기열 생성을 해주었다
그리고 람다함수에 대상추가로 SNS 를 연결해주었당ㅎㅎ
람다함수 환경변수에 TOPIC_ARN 추가하고 SNS 주제 ARN 을 만들어주었당
트러블슈팅 -2
자꾸 이딴 에러가 났당
이건 topic arn 을 잘못써주어서 그랬당 (머쓱)
그 다음 만난 에러 ~
트러블슈팅 -3
재고가 없을 시 제품의 정보를 받아오는 코드 형식의 문제
파라미터를 로그를 찍어보니 MessageAttributeFactoryId 값이 들어가지 않았다.
const now = new Date().toString()
const message = `도너츠 재고가 없습니다. 제품을 생산해주세요! \n메시지 작성 시각: ${now}`
const params = {
Message: message,
Subject: '도너츠 재고 부족',
MessageAttributes: {
MessageAttributeProductId: {
StringValue: product.product_id,
DataType: "String",
},
MessageAttributeFactoryId: {
// StringValue: req.body.MessageAttributeFactoryId,
// 아래처럼 디비에서 가져오게 바꿔 줌
StringValue: product.factory_id,
DataType: "String",
},
},
TopicArn: process.env.TOPIC_ARN
}
const result = await sns.publish(params).promise()
여기 MessageAttributeFactoryId를 불러오는 구간에서 에러가 났다.
api를 쏠때 request에 MessageAttributeFactoryId를 담아줬어야했는데
음.. 그냥 우리는 디비에서 불러오는 형식으로 깔꼼하게 끝내버렸다
정보를 어디까지 가져오고 전달하느냐에 따라서 코드가 변경될 것 같은데..
일단 오늘은 이렇게 보내고 내일 수정이 될 수도? 있을 것 같다.
큐 생성된거 확인
메시지도 확인 완료ㅎㅎ
메세지를 Factory API로 전송하는 Lambda 구성 및 DLQ 추가
DLQ를 만들어주고 기존 큐에 배달 못한 편지 대기열에 추가해주었당ㅎㅎ
이렇게 DLQ 도 만들어쥼
그리고는 큐에서 보낸 메시지를 받는 람다를 만들어 주었다.
람다 만들고 SQS 트리거로 만들어주면 됨ㅎㅎ
그리고 stock lamda 소스코드에 delay function 만들고 딜레이 걸어주기!
그리고 DLQ 테스트를 해주엇다
제대로 dlq로 들어간 메시지를 확인했당
step3까지 공부하면서 이해도 잘 되고 재밌게 만들었다.
역시 팀플이 도움도 많이되고 서로 도와주면서 하니 빨리 진행되는 듯ㅎㅎ
내일도 힘내서 으쌰으쌰 해보쟈구
'코드스테이츠_Devops_4기 > section3) 마이크로서비스와 인프라스트럭처 관리' 카테고리의 다른 글
Section3 실습과제 회고작성 (0) | 2023.05.30 |
---|---|
Section3 실습과제 Day3 (0) | 2023.05.30 |
Section3 마이크로서비스 (0) | 2023.05.08 |