웹사이트를 크롤링해서 엑셀로 정리해서 내려주는 유틸리티 서비스 하나 운영하고 있습니다.

회원 가입도 없고, 요청을 입력하는 폼 하나, 결제하는 폼 하나, 결과 보는 페이지 하나 간단한 서비스인데, 꾸준히 월 100만원 정도는 벌리는 것 같습니다.

AWS는 비싸서 cloudv에서 월 7만원 짜리 서버 호스팅+Object Storage 를 이용하고 있고, failover 같은 건 없습니다. 죽으면 죽는거죠.

웹, 배치는 rails로 만들었습니다.

배치가 좀 복잡한데, sidekiq-pro의 batch 기능이 아니였으면 복잡한 워크플로우를 관리하기 힘들었을 것 같습니다. 크롤링이라는게 잘 실패하는거라 실패하면 뜸을 들여서 재시도 해야하고, 모든 크롤링이 끝나야 그 다음 작업으로 넘어가야하고, 중간에 job 하나가 retry limit을 넘어서 죽으면 노티도 와야하고... 간단치가 않은데 sidekiq 덕분에 수월하게 처리했습니다. 손으로 짤 생각하면... 끔직하네요. 사이트 별로 throttling 이 필요한 경우가 있는데, 이것도 sidekiq이 알아서 잘 해줍니다.

브라우저 오토메이션이 필요한 부분도 있는데, 같은 코드를
* splash - lua
* selenium ruby
* puppeteer node
순으로 옮겨갔다가, 지금은 playwright-ruby 로 정착했습니다.

puppeteer 가 selenium에 비해 false negative 가 없는 편이긴 하지만, 그래도 헛짓거리가 많이 필요한데, playwright 는 정말 최고입니다.

크롤링은 막히지 않는게 중요한데, 요청 한 번에 10원 아래의 비용으로 처리할 수 있게 인프라를 구성했습니다.

서비스 초반에는 한동안 월 500 이상씩 벌렸는데, 지금은 그냥이네요. 그래도 몇 달동안 서버 한번 접속한 적 없이 운영되고 있어 용돈벌이로는 만족스럽습니다.

빼먹은게 있네요. DB백업은 sql 떠서 restic 으로 backblaze 쪽으로 하고 있고, object storage 백업은 집에 있는 synology nas가 (싸게싸게) 열심히 해 주고 있습니다.

우와 멋지십니다. 올 연말에 제가 공식 질문 올리면 그때도 한번 현황을 알려주세요!

연말까지 좀 더 잘 되는 서비스로 만들어봐야겠습니다~

크롤링 서비스 하시는 url 알수있을까요?