AMNotify Korea | Powered by Whop
python
)kafka cluster
)기존 시스템을 대체하는 신규 솔루션으로 아래 4가지 원칙을 세운 뒤, 처음엔 퍼포먼스 향상에만 몰두했습니다.
1. 브라우저를 하나도 띄우지 않는다. (셀레니움과 같은 방식은 X)
2. 모든 프로세스는 독립적으로 (서로 영향을 주지않고, 의존성이 없고) 수행된다.
3. 외부 (또는 브라우저)에 의해 의도하지 않은 쿠키 / 새션값이 들어가지 않는다.
4. restAPI 반복 call(request)하는 것과 동일하게, 정해진 요청은 정해진 응답만 오게 한다.
3대의 서버에서 타겟 사이트를 프록시 설정과 멀티프로세싱을 활용하여, 필요할 때 만 빠르게 정보를 가져오게 했습니다.
selenium 스케쥴러, cookie parsing 를 활용하여 대기열 등의 특수 상황에 있는 타겟 데이터까지 신규로 얻을 수 있도록 하여 많은 신규 사이트 데이터까지 얻을 수 있게 확장했습니다.
신규 크롤러를 확장성있고 빠르게 개발하기 위해 아래와 같은 형태로 구조화 했습니다. (UML, 추상화) 그리고 전용 Framwork를 만들었습니다.
Crawler
는 interface
역할을 하고, MainCralwer 등으로 구현 후, 실제 상속은 사이트마다 Main, Restock 등을 상속받아서 사용합니다.exec_monitoring
에서 url 단위의 멀티프로세싱을 하며, 재정의가 많이 필요할 것 같은 부분은 perform_*
으로 함수화해서 overriding
합니다.db_connection
에 관련된 관리는 Repository
라는 class로 분리해서 사용 및 접근합니다.