안녕하세요.
현재 샵토 솔루션 경우 30분 주기로 도매처 데이터를 자동으로 긁어오는 로직이 있습니다.
해당 로직이 어떤식으로 돌아가는지 포스팅을 시작하겠습니다.
AWS 서비스의 Lambda, CloudWatch를 이용하여 진행이 되는데요.
프로세스를 설명해보면 아래와 같습니다.
1. CloudWatch 이벤트 실행
- 이벤트 내용 : Lambda 특정함수 호출
2. Lambda 함수 코드 실행
- 코드 내용 : Back-End Server Http Request
3. Back-End Server 실행
.
.
.
10. 작업완료
그럼 이제 셋팅을 어떻게하는지 보겠습니다.
먼저 서버리스 서비스인 Lambda를 접속하여 우측 상단 [함수 생성] 을 해줍니다.
(샵토의 경우 런타임 환경은 Node.js 14.x 으로 작업을 하였습니다.)
함수 상세에 들어가면 위 이미지 처럼 런타임 환경에 맞는 소스코드를 입력할 수 있습니다.
첫줄 리퀘스트 모듈을 임포트를 먼저 해줍니다.
(주의 : http 리퀘스트는 http모듈을 사용해야함)
그 다음 이벤트 핸들러 영역인 handler에 대입되는 메소드 내에 백엔드 호출 로직을 작성해주면 되는데요.
샵토 경우 도매처가 여러개라 shopList에 특정 고유 번호를 넣고 비동기 로직으로 호출하여 Promise.all을 통해 모든 리퀘스트에 대한 응답을 대기 한 후 success메세지를 뿌려주도록 했습니다.
(현재 shopList는 하드코딩이 아닌, DB에서 불러오도록 처리 되어있습니다.)
그 다음 저장을 해주시면 Lambda 설정은 여기까지입니다.
다음 CloudWatch 설정으로 갑니다.
CludWatch 서비스에 접속해보면 좌측에 여러 메뉴들이 존재합니다.
경보, 로그, 지표, 이벤트 등 여러 기능들 있는데, 크롤링 작업에 필요한건 [이벤트 > 규칙] 메뉴로 들어가면 됩니다.
그 다음 [규칙 생성] 을 누르면 아래의 이미지 처럼 보일텐데요.
이벤트 소스에 [일정] 선택 후 고정 비율 or Cron표현식을 지정한 후 우측 대상을 위에서 생성한 Lambda함수를 지정해준 후 규칙을 만들게 되면 설정한 이벤트 소스에 입력한 시간 설정에 따라 이벤트가 발생되면서 Lambda 함수가 호출이 됩니다.
Lambda 함수 코드에서는 백엔드 서버를 호출이 될테고 백엔드 서버에서 원하는 작업을 작성해놓으면 크롤링 작업이 무난히 완료가 되는 모습을 볼 수 있을겁니다.
현재 샵토에서 크롤링 처리 방식을 설명한 포스팅 글이였습니다.
고맙습니다.
'프로젝트 > 샵토' 카테고리의 다른 글
서버 마이그레이션 (0) | 2021.04.09 |
---|---|
브라우저의 한계.. 데이터테이블 개선하기 (1) | 2021.04.09 |
서비스 소개 (1) | 2021.04.09 |