SlideShare a Scribd company logo
Crawling with

AWS Lambda
2017.11.22 김승호
목차
• 김승호 소개
• 스닙팟 회사 소개
• 스닙팟 구조 소개
• Serverless Crawler 구현기
• 마무리
김승호
• 현 스닙팟(Snippod) 백엔드 개발자(Dev Ops?)
• Python 3년차 2년 4개월..
• 이전엔
Linux Device driver 개발, 게임 백엔드 개발
5년차 C/C++ 개발자 였습니다.
• 지금은 Python이 더 편합니다.
그런데 Node.js가 더 좋은것 같아요…
• AWS 2년 4개월
Snippod
• 스닙팟
스니팝, 스니포드, 스닙폿, 스냅팟 등등 아닙니다.
• #HASHTAG NETWORK
• #해시태그 네트워크를 통한 정보 공유 서비스
주제별로 링크를 공유 하는 서비스
• www.snippod.com
• 앱 출시 예정
• 경쟁사
• 사실은 Reddit…
Snippod Stack
• Back end: Python Django, Node.js
• Front end: Javascript React
• AWS Elastic Beanstalk
• RDS, DynamoDB
• Lambda
Snippod Architecture
아주 아주 micro architecture 추구
REST RDB
REST
RDB
Batch
REST
Worker
Module 1
Module 2
RDB
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
Serverless
Architecture
구조를 좀 더 micro 하게 만들어 줍니다!!




돈을 더 아낄 수 있습니다!!
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
MODULE
Crawling with AWS Lambda
Crawler 프로젝트
• RSS 나 여러 best 사이트들의 링크 추출 기능이 필요
Snippod
• 스닙팟
스니팝, 스니포드, 스닙폿, 스냅팟 등등 아닙니다.
• #HASHTAG NETWORK
• #해시태그 네트워크를 통한 정보 공유 서비스
주제별로 링크를 공유 하는 서비스
• www.snippod.com
• 앱 출시 예정
• 경쟁사
• 사실은 Reddit…
Crawler 프로젝트
• RSS 나 여러 best 게시판 사이트들의 링크 추출 기능이 필
요
• AWS Lambda 를 적용해보기 적합한 프로젝트
Crawling with

AWS Lambda
이제 부터 시작입니다.
AWS Lambda?
AWS Lambda?
• Serverless compute
• Multiple events
• API Gateway
• S3
• DynamoDB
• SNS
• SQS
Python Scrapy
• A fast and Powerful scraping and web crawling
Framework
• Python 3.6 지원
• ★23K
• 추가 library 없이 parsing 가능
• Parser shell, pipeline 등 편의성이 좋음
• Async I/O 처리로 빠름
Crawler 개발 미션(0/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
DynamoDB 추가
• query 시 상수에 가까운 응답시간을 보장하여 lambda와
궁합이 좋음
• 기존 ORM 에 영향 받지 않고 동적인 schema 가능
• 기존 RDB 성능에 관여하지 않음
• 프로비저닝된 처리량으로 과금하는 독특한 정책
• 약간의 비용이 추가되지만 사용하기에 따라 저렴함
Crawler 개발 미션(2/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
Scraping & Posting
Feeder PosterScraper
SQS
url 

url

url

…
Crawler 개발 미션(3/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
Lambda Deploy
• 수많은 serverless framework
• Python 용
• Apex: ★6K
• aws/chalice(찰리스): ★3K
• Zappa: ★5K
• 각각 특징이 있기 때문에 상황에 맞게 선택
Zappa
Zappa
• Top 10 Python libraries of 2016
• Server-less Framework Comparison - Zappa Versus
Chalice
Zappa Win(from Zappa blog)
• No Sabjil, Simple!!!
Crawler 개발 미션(4/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
요금
• 사실 가장 중요한건 요금
• 지금까지 개발이 요금이 비싸지면 무용지물
• 요금을 줄이기 위한 굉장히 이상한 노력
Scraping & Posting
Feeder PosterScraper
SQS
url 

url

url

…
Scraping & Posting
Feeder PosterScraper
SQS
url 

url

url

…
DynamoDB 절약금액
Crawler 개발 미션(5/5)
• Django ORM이 변경되어도 영향 받지 않음
• RDB 성능 저하하지 않음
• 기존 코드에 영향 주지 않는 Micro architecture
• 쉬운 유지보수 & 빠른 deploy
•요금을 더 저렴하게
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 에서 실행하게 할 수
있을까?
정리
• 스닙팟은 micro architecture
• 각각의 module을 EB를 통해 관리, 비효율적인 module 존
재
• Severless architecture, AWS Lambda 적용
• 하려고 했으나, 기존 module에 적용하기 쉽지 않음
• 링크를 추출하는 crawling 기능 구현 필요
• 요금, DB영향도, decoupling 을 고려한 crawler 구현
• serverless is fancy
• Crawler 에서는 비용적으로 큰 이득은 없었지만 좋은 경험…
• 차후 스닙팟에 들어가는 micro module은 Lambda 쓸 예
정
Q&A
스닙팟 김승호

seungho@snippod.com
판교 경기창조경제혁신센터 8층 R08호

More Related Content

What's hot (20)

PDF
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
Jongwon Han
 
PDF
ALB+EC2 to API gateway + Lambda
Kyuhyun Byun
 
PDF
AWS Lambdas with a Static Outgoing IP
Jongwon Han
 
PDF
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWSKRUG - AWS한국사용자모임
 
PDF
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
Darion Kim
 
PPTX
AWS Lambda를 이용한 CI/CD 기법
Jesang Yoon
 
PDF
0원으로 시작하는 서버리스 데이터 수집 및 분석
Kyuhyun Byun
 
PDF
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Jongwon Han
 
PDF
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
AWSKRUG - AWS한국사용자모임
 
PDF
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Kyuhyun Byun
 
PDF
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
AWSKRUG - AWS한국사용자모임
 
PDF
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
Jongwon Han
 
PPTX
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
Youngjae Kim
 
PPT
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
Amazon Web Services Korea
 
PPTX
Serverless Architecture - 김현민
AWSKRUG - AWS한국사용자모임
 
PPTX
Saturday Azure Live 1701 Azure WebApp 개념원리
Youngjae Kim
 
PDF
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
Jongwon Han
 
PDF
스푼라디오 일본에서 한국으로 이전하기 - 최상기 (마이쿤) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
PDF
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
Amazon Web Services Korea
 
PDF
Ansible과 CloudFormation을 이용한 배포 자동화
AWSKRUG - AWS한국사용자모임
 
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
Jongwon Han
 
ALB+EC2 to API gateway + Lambda
Kyuhyun Byun
 
AWS Lambdas with a Static Outgoing IP
Jongwon Han
 
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWSKRUG - AWS한국사용자모임
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
Darion Kim
 
AWS Lambda를 이용한 CI/CD 기법
Jesang Yoon
 
0원으로 시작하는 서버리스 데이터 수집 및 분석
Kyuhyun Byun
 
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Jongwon Han
 
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
AWSKRUG - AWS한국사용자모임
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Kyuhyun Byun
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
AWSKRUG - AWS한국사용자모임
 
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
Jongwon Han
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
Youngjae Kim
 
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
Amazon Web Services Korea
 
Serverless Architecture - 김현민
AWSKRUG - AWS한국사용자모임
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Youngjae Kim
 
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
Jongwon Han
 
스푼라디오 일본에서 한국으로 이전하기 - 최상기 (마이쿤) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
[Gaming on AWS] AWS 위에서의 Dev & Test, 그리고 비용 - 위메이드
Amazon Web Services Korea
 
Ansible과 CloudFormation을 이용한 배포 자동화
AWSKRUG - AWS한국사용자모임
 

Similar to Crawling with AWS Lambda (20)

PDF
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018
Amazon Web Services Korea
 
PPTX
AWS 약쟁이
Han Sung Kim
 
PDF
프론트엔드 개발자가 혼자 AWS 기반 웹애플리케이션 만들기::박찬민::AWS Summit Seoul 2018
Amazon Web Services Korea
 
PDF
NRISE 개발스택
Moon Soo Kim
 
PDF
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
Amazon Web Services Korea
 
PDF
AWS Meetup 프리젠테이션.pdf
AlexLee226686
 
PPTX
올챙이로 살펴보는 개발툴과 Cloud
cho hyun jong
 
PDF
SW1차 프로젝트 Hive 최종발표
Sinhyub Kim
 
PDF
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
PDF
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
PDF
AWS re:Invent 2018를 통해 본 개발자들이 원하는 4가지 클라우드 동향 :: 윤석찬 - AWS Community Day 2019
AWSKRUG - AWS한국사용자모임
 
PPTX
5. 솔루션 카달로그
Terry Cho
 
PDF
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
Youngil Cho
 
PDF
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성
Tae-Seong Park
 
PDF
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
 
PDF
텀 프로젝트에서 제품 프로젝트로 - 성준영님
NAVER D2
 
PDF
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
양재동 코드랩
 
PDF
포털 검색어 순위 수집 및 분석 후기
Kyuhyun Byun
 
PDF
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
Amazon Web Services Korea
 
PDF
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
Amazon Web Services Korea
 
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018
Amazon Web Services Korea
 
AWS 약쟁이
Han Sung Kim
 
프론트엔드 개발자가 혼자 AWS 기반 웹애플리케이션 만들기::박찬민::AWS Summit Seoul 2018
Amazon Web Services Korea
 
NRISE 개발스택
Moon Soo Kim
 
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
Amazon Web Services Korea
 
AWS Meetup 프리젠테이션.pdf
AlexLee226686
 
올챙이로 살펴보는 개발툴과 Cloud
cho hyun jong
 
SW1차 프로젝트 Hive 최종발표
Sinhyub Kim
 
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
AWS re:Invent 2018를 통해 본 개발자들이 원하는 4가지 클라우드 동향 :: 윤석찬 - AWS Community Day 2019
AWSKRUG - AWS한국사용자모임
 
5. 솔루션 카달로그
Terry Cho
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
Youngil Cho
 
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성
Tae-Seong Park
 
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
NAVER D2
 
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
양재동 코드랩
 
포털 검색어 순위 수집 및 분석 후기
Kyuhyun Byun
 
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
Amazon Web Services Korea
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
Amazon Web Services Korea
 
Ad

Crawling with AWS Lambda