코딩 연습 사이트 코고 (Cogo) 포인트 교환 사이트 크롤러 제작 및 배포 후기

 
Jan 19, 2023

Contents



웹 크롤러 구현하기

문제 의식

 

데이터 모델

 

완성하고 그 이후에 어떻게 배포할 것인가?

pyinstaller

 

웹 페이지 형태로 배포

 

정적 페이지 만들기

화면 설계하기

 

화면 구현하기

 

배포까지의 과정

플랜 A: 동아리 VM에서 Flask로 웹 서버 구축하기 (실패)

 

CORS 관련 이슈 및 해결 방법

 

한계

 

플랜 B: pythonanywhere, vercel 등 정적 리소스 배포 사이트에서 Flask로 웹 서버 구축하기 (실패)

 

한계

 

플랜 C: AWS Amplify로 웹페이지 배포하고, AWS Lambda, API Gateway로 서버리스 API 구축하기 (진행 중)

아이디어

 

결과

 

웹페이지에서 요청 처리하고 배포하기

성능 개선하기

싱글스레딩 환경의 문제점: 요청 처리 시간이 너무 긺

  • Lambda의 최대 처리 시간은 5분까지지만, route에 따른 REST API를 제공하는 API Gateway는 29초가 최대이다. 따라서, 클라이언트에서 API로 요청을 보내고 29초 이내에 응답이 오지 않으면, API Gateway가 클라이언트에 자체적으로 타임아웃 메시지를 응답으로 보낸다.

멀티스레딩 적용하기

    결론

    더 고민해야 할 부분들

    • 가장 오래 걸리는 요청을 처리할 때, 클라이언트가 요청을 보낸지 약 29초가 경과했는 데도 응답이 돌아오지 않는다면, API Gateway에서 타임아웃을 걸어버린다.