2. 목차
• 김승호 소개
• 스닙팟 회사 소개
• 스닙팟 구조 소개
• Serverless Crawler 구현기
• 마무리
3. 김승호
• 현 스닙팟(Snippod) 백엔드 개발자(Dev Ops?)
• Python 3년차 2년 4개월..
• 이전엔
Linux Device driver 개발, 게임 백엔드 개발
5년차 C/C++ 개발자 였습니다.
• 지금은 Python이 더 편합니다.
그런데 Node.js가 더 좋은것 같아요…
• AWS 2년 4개월
4. Snippod
• 스닙팟
스니팝, 스니포드, 스닙폿, 스냅팟 등등 아닙니다.
• #HASHTAG NETWORK
• #해시태그 네트워크를 통한 정보 공유 서비스
주제별로 링크를 공유 하는 서비스
• www.snippod.com
• 앱 출시 예정
• 경쟁사
• 사실은 Reddit…
16. Snippod
• 스닙팟
스니팝, 스니포드, 스닙폿, 스냅팟 등등 아닙니다.
• #HASHTAG NETWORK
• #해시태그 네트워크를 통한 정보 공유 서비스
주제별로 링크를 공유 하는 서비스
• www.snippod.com
• 앱 출시 예정
• 경쟁사
• 사실은 Reddit…
17. Crawler 프로젝트
• RSS 나 여러 best 게시판 사이트들의 링크 추출 기능이 필
요
• AWS Lambda 를 적용해보기 적합한 프로젝트
21. Python Scrapy
• A fast and Powerful scraping and web crawling
Framework
• Python 3.6 지원
• ★23K
• 추가 library 없이 parsing 가능
• Parser shell, pipeline 등 편의성이 좋음
• Async I/O 처리로 빠름
22. Crawler 개발 미션(0/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
23. DynamoDB 추가
• query 시 상수에 가까운 응답시간을 보장하여 lambda와
궁합이 좋음
• 기존 ORM 에 영향 받지 않고 동적인 schema 가능
• 기존 RDB 성능에 관여하지 않음
• 프로비저닝된 처리량으로 과금하는 독특한 정책
• 약간의 비용이 추가되지만 사용하기에 따라 저렴함
24. Crawler 개발 미션(2/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
35. Crawler 개발 미션(5/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
36. Challenge
• Scrapy 동적 javascript 실행
• SPLASH: solution for JavaScript rendering,
implemented in Python using Twisted and QT
• 그런데 lambda에 적용하기 쉽지 않음
• Fixed Lambda container?
• Lambda container 가 매번 같은 instance 에서 실행
• 계속 같은 IP/MAC
• 강제로 새로운 lambda container 에서 실행하게 할 수
있을까?
37. 정리
• 스닙팟은 micro architecture
• 각각의 module을 EB를 통해 관리, 비효율적인 module 존
재
• Severless architecture, AWS Lambda 적용
• 하려고 했으나, 기존 module에 적용하기 쉽지 않음
• 링크를 추출하는 crawling 기능 구현 필요
• 요금, DB영향도, decoupling 을 고려한 crawler 구현
• serverless is fancy
• Crawler 에서는 비용적으로 큰 이득은 없었지만 좋은 경험…
• 차후 스닙팟에 들어가는 micro module은 Lambda 쓸 예
정