Section 3 실습과제 회고

CHLEE·2023년 5월 30일
0

DevOps

목록 보기
23/24

아키텍처 다이어그램

아키텍처 다이어그램

Step 1 : Lambda 서버(Sales API) - DB 연결

Step 2 : “재고 없음” 메시지 전달 시스템 구성

Step 3 : 메시지를 Factory API로 전송하는 Lambda 구성 및 DLQ 추가

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

  • AWS SES와 DB(User Data) 부분은 추가 시나리오.

야크쉐이빙

“어떤 목적을 달성하기 위해 원래 목적과 전혀 상관없는 일들을 계속해야 하며 그중 마지막 작업”.


STEP 1
Error: Cannot find module ‘serverless-http’

git clone을 해온 상태라 npm installpackage.json에 포함된 의존성 패키지들을 일괄 설치를 해줘야 된다.

하지만 설치하지 않고 배포를 먼저 하니 모듈을 찾을 수 없다는 에러 메시지. 기본적인 것을 지나치지 말자..

npm install 을 해주니 잘 작동했다

이왕 serverless-http에 대해 좀 더 알아봤다.

npm: serverless-http

Deploy a REST API using Serverless, Express and Node.js

Node.js 어플리케이션과 지정된 API Gateway 사이에서 인터페이스를 조정하는 작은 미들웨어.

Lambda 함수를 실행하여 HTTP API 응답을 생성하기위해 서버리스와 API 정의를 연결하는 serverless-http이다. serverless.yml에서 functions - events에 httpApi를 작성하여 js파일에 정의된 함수를 엔드포인트로 호출 시 실행되게 할 수 있는 것이다.

참고 : https://velog.io/@usreon/Serverless의-이해-API-Gateway-AWS-Lambda


STEP 4
Error: Cannot find module ‘axios’

stock-lamba에서 레거시 시스템(Factory API)에 제품 생산 요청하는 상황.

npm install axios 명령으로 axios 라이브러리를 설치하고 코드 맨 윗줄에 const axios = require('axios').default를 추가했음에도 axios 관련 에러 메시지 발생.

구글링 구글링..

Runtime.ImportModuleError Error: Cannot find module 'axios/lib/utils' Serverless

람다에서 타사 API를 호출할 때 axios가 내부적으로 구현되어 있어야 된다고 한다. stock-lamba.js 파일은 직접 만든 serverless 프로젝트여서 package.json 파일이 없었고 그래서 모듈이 제대로 설치가 안되었던…

package.json 파일을 만들어서 dependency에 axios를 추가하여 npm install 후 다시 실행하니 잘 작동.

axios는 node.js에서 HTTP 명령을 보내는 라이브러리. (fetch와 유사)

https://axios-http.com/kr/docs/intro axios 공식 자료

https://velog.io/@eunbinn/Axios-vs-Fetch fetch와 유사하다고 해서 찾아본 axios vs. fetch

+++
Lambda 계층 만들기 및 공유 - AWS Lambda

https://kimtaehyun98.tistory.com/143

https://medium.com/signal9/aws-lambda-layer-사용하기-node-js-8c299a1d0a6f

소스코드나 외부라이브러리들을 layer 라는 단위로 모듈화 하고 이를 여러 lambda 함수에서 사용할 수 있도록 해주는 방법을 사용해도 된다.

느낀 점

프로젝트 진행 중 프로젝트 목적 외에 나타난 실수나 에러는 npm, package.json과 같은 프로젝트 기본중의 기본 사항들이었다. 이때까지 해오면서 조금 익숙해졌다고 생각했는데.. 아무생각없이 지나치고 실수하는 것들이 있다. 프로젝트 내용 정리 후 기본적인 내용 복습과 AWS 서비스들과 연결해서 실행이나 배포시 발생할 수 있는 에러(ex.각각의 마이크로서비스들에 대한 모듈, 정책, 권한문제등)에 대한 공부도 더 해야 될 것같다.…😅

profile
🤗

0개의 댓글