REST API를 이용하여 Web Crawler를 만들고자 할 경우, 다음과 같은 아키텍처를 이용하여 서비스를 구축할 수 있습니다.
REST API 없이 웹 브라우저 상의 액션을 자동화 해야 할 경우, Web Crawler 만들기 02 - Building RPA service using Selenium on AWS 을 참고하세요.
V 1.0.0 김현수
아키텍처 다이어그램
수집된 정보를 저장하기 위해서 MySQL DB를 활용하는 시나리오입니다. DB는 본인이 잘 활용할 수 있는 DB 엔진을 선택할 수 있습니다.
Ansi SQL에 익숙하고 잦은 분석용 쿼리를 활용하고자 할 때에는 RDS를 활용할 수 있습니다.
DB는 private 망으로 분리되어져 있으며, 데이터 수집/분석(EC2)/BI를 위해서 허용된 보안그룹(Security Group) 에서만 접근 가능하도록 구성합니다.
AWS Lambda와 Amazon QuickSight(BI)는 해당 VPC의 Private subnet에 존재하는 것처럼 Elastic Network Interface를 통해서 경로를 열어줍니다.
동작 설명
수집 프로세스
- Amazon EventBridge에 의해서 Cron 룰에 따라 정해진 시간에 수집이 시작됩니다.
- 수집이 Trigger된 AWS Lambda는 VPC 안에 놓여진 ENI(Elastic Network Interface)를 경유하므로 외부 REST API로 호출하기 위해서는 Public IP가 필요합니다.
- Routing Table에 REST API의 서버 IP 또는 외부 IP(인터넷)에 대해서는 NAT Gateway로 라우팅 경로를 설정합니다.
- REST API를 통해서 수집된 데이터는 MySQL RDS에 데이터를 저장합니다.
데이터 확인 프로세스 (옵션)
이 옵션은 EC2 인스턴스에 phpMyAdmin을 설치하여 DB에 데이터가 정상적으로 적재되어 있는지 확인하기 위함입니다.
해당 인스턴스는 확인용으로 활용 후 보안상 삭제 하는 것을 추천 드립니다.
- EC2 인스턴스에 phpMyAdmin을 설치합니다. (https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/install-LAMP.html 참조)
- MySQL에 접속하여 데이터가 정상적으로 들어있는지 확인 합니다.
데이터 시각화
Amazon QuickSight는 AWS가 제공하는 서버리스 BI 도구입니다.
비즈니스 사용자는 MySQL RDS에 연결하여 데이터를 시각화 할 수 있습니다. 위 구조에서처럼 Private 서브넷에 놓인 DB에 접근할 경우, 아래와 같은 영상을 참고할 수 있습니다.
실제 샘플 코드는 AWS Solutions Architect 를 통해서 비즈니스 요건을 설명한 후 도움을 받는 것을 추천 드립니다.
해당 솔루션은 2022년 E사에 제공된 솔루션 샘플에 대한 예시입니다.
- 추가로 궁금증이 있을 경우, admin@studydev.com 메일을 주시면 도움 드리겠습니다.