27
중고나라 거래 통계 서비스 1차 개발 완료 보고 2015. 8. 21. 조석현([email protected]) 개발 1본부 / Embian

중고나라 거래 통계 서비스 1차 개발 완료 보고

  • Upload
    embian

  • View
    2.055

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 중고나라 거래 통계 서비스 1차 개발 완료 보고

중고나라 거래 통계 서비스 1차 개발 완료 보고

2015. 8. 21.

조석현([email protected])

개발 1본부 / Embian

Page 2: 중고나라 거래 통계 서비스 1차 개발 완료 보고

목차

1. 서비스 정의 및 목적

2. 서비스 Concept & History

3. 개발 인력 및 일정

4. 주요 사용 기술

5. 서비스 시스템 구조 및 역할

6. 웹 페이지 구성(Demo)

7. 서비스 기대 효과

Page 3: 중고나라 거래 통계 서비스 1차 개발 완료 보고

1. 서비스 정의 및 목적

Page 4: 중고나라 거래 통계 서비스 1차 개발 완료 보고

1. 서비스 정의 및 목적 1.1. „중고나라 거래 통계 서비스‟란?

네이버 “중고나라” 까페 회원들이

업로드 하는 게시물, 제품의

실시갂 정보를 수집, 처리, 시각화하여

Dashboard 형태로 거래 통계 정보를 열람하는

웹 서비스

4

Page 5: 중고나라 거래 통계 서비스 1차 개발 완료 보고

1. 서비스 정의 및 목적 1.2. 서비스의 목적

• “엠비안의 기술력”을 테스트하기 위한 수단

1. 데이터 수집 기술

2. 실시갂 처리 기술

3. 데이터 시각화 기술

CEP (실시갂 처리)

Scraping (수집)

Visualization (시각화)

5

Page 6: 중고나라 거래 통계 서비스 1차 개발 완료 보고

2. 서비스 Concept & History

Page 7: 중고나라 거래 통계 서비스 1차 개발 완료 보고

2. 서비스 Concept & History 2.1. 초기 Concept(5월)

CEP (실시갂 처리)

? ?

CEP 엔진 기술이 있으나, 내부 서비스 적용사례가 없음. 어떤 데이터(?)를, 어떻게 처리(?)하여, 어떤 결과(?)를 보여야 할 지 감(?)이 없음.

7

Page 8: 중고나라 거래 통계 서비스 1차 개발 완료 보고

2. 서비스 Concept & History 2.1. 초기 Concept(5월)

팀 포퐁(Team Popong)의 정치 분석 사이트 – 나는 서울 시장이다

[ Reference URL : http://popong.com/iamseoulmayor/ ]

“서로 다른 성향 집단의 데이터를 비교 분석해보자”

8

Page 9: 중고나라 거래 통계 서비스 1차 개발 완료 보고

2. 서비스 Concept & History 2.2. 과도기 Concept(6월)

“일베(일갂베스트)와 오유(오늘의 유머)의 데이터를 분석하여 정치 성향을 비교하는 통계를 보여주자.” 일베 - 일갂베스트 게시판 일 평균 게시물 업로드 약 1000건 오유 – 베스트게시판 일 평균 게시물 업로드 약 500건 그러나, 실시갂 정치성향 데이터 양이 부족해 의미 있는 결과가 나올 수 없음.

CEP (실시갂 처리)

Scraping (수집)

일베

Visualization (시각화)

오유

9

Page 10: 중고나라 거래 통계 서비스 1차 개발 완료 보고

2. 서비스 Concept & History 2.3. 현재 Concept(7-8월)

“실시갂 데이터 양이 풍부한 중고나라의 데이터를 이용해 실시갂 제품 정보 데이터를 Dashboard 형태로 제공하는 웹 서비스로 Concept을 변경” 중고나라의 일일 게시물 업로드 수는 약 15-20만 건

CEP (실시갂 처리)

Scraping (수집)

중고나라 Visualization

(시각화)

10

Page 11: 중고나라 거래 통계 서비스 1차 개발 완료 보고

2. 서비스 Concept & History 2.4. History 요약

초기 Concept

과도기 Concept

현재Concept

6월 7월 8월

Concept 변화

Event

Today (8/21)

11

- 프로젝트 시작 - 1차 개발 완료

Page 12: 중고나라 거래 통계 서비스 1차 개발 완료 보고

3. 개발 인력 및 일정

Page 13: 중고나라 거래 통계 서비스 1차 개발 완료 보고

3. 개발 인력 및 일정 3.1. 갂트 차트 & History

전체 프로젝트 기준 : 3개월 현재 Concept 기준 : 1.2개월

5월 6월 7월 8월

4 1 2 3 4 1 2 3 4 1 2 3

석현

1 일베/오유 게시물 스크래퍼 개발

2 스크래퍼 속도 개선 / 모듈 교체

3 중고나라 웹 기획

4 중고나라 스크래퍼 개발

5 중고나라 스크래퍼 속도 개선

6 제품명 추출 및 비속어 제거

7 CEP 인수인계

8 웹 페이지 개발

9 d3js 차트 연동

10 서비스 deploy

1 CEP 개발

2 CEP 인수인계

3 서비스 deploy

재영 1 버블차트 구현

Today (8/21)

13

Page 14: 중고나라 거래 통계 서비스 1차 개발 완료 보고

4. 주요 사용 기술

Page 15: 중고나라 거래 통계 서비스 1차 개발 완료 보고

4. 주요 사용 기술 4.1. 서비스 단위별 주요 사용기술

서비스 단위 주요 사용기술 및 언어

중고나라 Scraper Python(python-scrapy) bash

Message Queue Apache Kafka Zookeeper

Search Engine Elastic

CEP Java/XML eBay Pulsar(Jetstream) Zookeeper

Virtualization(가상화) Docker

In-memory DB Redis

Visualization(시각화) - Web Server

Python(python-flask) Python(gevent-socketio)

Visualization(시각화) - Client

HTML5+CSS Javascript jQuery Bootstrap D3js

15

Page 16: 중고나라 거래 통계 서비스 1차 개발 완료 보고

5. 서비스 시스템 구조 및 역할

Page 17: 중고나라 거래 통계 서비스 1차 개발 완료 보고

5. 서비스 시스템 구조 및 역할 5.1. 전체 구성도

Scraping (중고나라 Scraper)

Elastic

Redis App #1

App #3

App #4

App #2

Visualization (WebServer)

중고나라

Visualization (Client)

#231 Server

#232 Server

CEP (Pulsar Jetstream)

MSG Queue (Kafka)

Indexing

Query

SocketIO

Data Scraping

Pub Sub

Pub Sub

Request (every 2s)

Response (Aggregation, Index count)

1. Data Scraping 2. Data Parsing 3. Generate MSG 4. Publish MSG to Kafka 5. Indexing MSG to Elastic

1. Subscribe data1 from Redis 2. Handle data1 to socket 3. Request query to Elastic 4. Get response(data2) from Elastic 5. Parsing data2 and handle Rest API

Rest API

1. Request Webserver 2. Get data1, data2 from socket, Rest API 3. D3js Graph Visualization

zookeeper

EPL MSG Parsing Consume MSG from Kafka

Publish to Redis

Check Point 1. Scraping, CEP, Visualization의 위치 확인. Check Point 2. 서버 2대로 deploy되어 있음.

17

Page 18: 중고나라 거래 통계 서비스 1차 개발 완료 보고

5. 서비스 시스템 구조 및 역할 5.2. Scraper(수집)

Scraping (중고나라 Scraper)

Elastic

Redis

App #1

App #3

App #4

App #2

Visualization (WebServer)

중고나라

Visualization (Client)

#231 Server

#232 Server

CEP (Pulsar Jetstream)

MSG Queue (Kafka)

Indexing

Query

SocketIO

Data Scraping

Pub Sub

Pub Sub

Request (every 2s)

Response (Aggregation, Index count)

Scraper 주요 역할 1. Data Scraping 2. Data Parsing 3. Generate MSG 4. Publish MSG to Kafka 5. Indexing MSG to Elastic

Data Parsing Generate MSG

Publish MSG to Kafka

Rest API

Template load Get data from socket, API D3js Graph Visualization

zookeeper

EPL MSG Parsing Consume MSG from Kafka

Publish to Redis

18

Page 19: 중고나라 거래 통계 서비스 1차 개발 완료 보고

5. 서비스 시스템 구조 및 역할 5.3. CEP(실시갂 처리)

Scraping (중고나라 Scraper)

Elastic

Redis App #1

App #3

App #4

App #2

Visualization (Web Server)

중고나라

Visualization (Client)

#231 Server

#232 Server

CEP (Pulsar Jetstream)

MSG Queue (Kafka)

Indexing

Query

SocketIO

Data Scraping

Pub Sub

Pub Sub

Request (every 2s)

Response (Aggregation, Index count)

Data Parsing Generate MSG

Publish MSG to Kafka

Data Parsing Generate MSG

Publish MSG to Kafka

Rest API

Template load Get data from socket, API D3js Graph Visualization

zookeeper

CEP 단계별 역할 App #1 : Consume MSG from Kafka App #2 : MSG Parsing App #3 : EPL App #4 : Publish to Redis

19

Page 20: 중고나라 거래 통계 서비스 1차 개발 완료 보고

5. 서비스 시스템 구조 및 역할 5.4. Visualization(시각화)

Scraping (중고나라 Scraper)

Elastic

Redis App #1

App #3

App #4

App #2

Visualization (Web Server)

중고나라

Visualization (Client)

CEP (Pulsar Jetstream)

MSG Queue (Kafka)

Indexing

Query

SocketIO

Data Scraping

Pub Sub

Pub Sub

Request (every 2s)

Response (Aggregation, Index count)

Data Parsing Generate MSG

Publish MSG to Kafka

Web Server 주요 동작 1. Subscribe data1 from Redis 2. Handle data1 to socket 3. Request query to Elastic 4. Get response(data2) from Elastic 5. Parsing data2 and handle Rest API

Rest API

Client 주요 동작 1. Request Webserver 2. Get data1, data2 from socket, Rest API 3. D3js Graph Visualization

zookeeper

EPL MSG Parsing Consume MSG from Kafka

Publish to Redis

20

Page 21: 중고나라 거래 통계 서비스 1차 개발 완료 보고

6. 웹 페이지 구성

Page 22: 중고나라 거래 통계 서비스 1차 개발 완료 보고

6. 웹 페이지 구성 6.1. 기획 및 구현

[최초 설계 Mock-up] [구현]

최초 설계한 Dashboard 모양과 유사하게 구현함.

22

Page 23: 중고나라 거래 통계 서비스 1차 개발 완료 보고

Demo http://joonggo.embian.com/

6. 웹 페이지 구성 6.2. Demo

23

Page 24: 중고나라 거래 통계 서비스 1차 개발 완료 보고

6. 웹 페이지 구성 6.3. 웹 페이지 기능 설명

No 제목 기능 설명

1 실시갂 게시물 업로드 수 실시갂으로 중고나라에 게시되는 게시물의 업로드 수를 표시

2 최근 1분 게시물 업로드 현황 현재를 기준으로 최근 1분 동안 업로드 된 게시물의 현황을 선 그래프로 표시

3 실시갂 제품 Top 5 현재를 기준으로 최근 1시갂 동안 업로드 된 제품 중 가장 많이 업로드 된 제품을 1순위부터 5순위까지 표시

4 제품 실시갂 현황 현재를 기준으로 최근 1시갂 동안 업로드 된 제품 40개를 게시된 비중에 따라 버블차트로 표시

5 일별 게시물 수 통계 매일 중고나라에 업로드 된 게시물의 누적 게시 건수를 막대 그래프로 표시

6 일갂 Top 10 제품 통계 현재를 기준으로 하루 동안 업로드 된 제품 10개를 게시된 비중에 따라 파이 그래프로 표시

24

Page 25: 중고나라 거래 통계 서비스 1차 개발 완료 보고

7. 서비스 기대 효과

Page 26: 중고나라 거래 통계 서비스 1차 개발 완료 보고

7. 서비스 기대효과

1. “엠비안”의 목적 달성 – 기술력 테스트의 수단으로서, 프로젝트 관련 기술이 가시화된 결과(웹

서비스, 소스코드)로 나타남.

– 대규모의 데이터(일 20만건)를 축적할 수 있음.

2. “사용자”에게 객관적 지표 제공 – 실시갂 데이터와 일갂 통계 데이터를 제공.

26

Page 27: 중고나라 거래 통계 서비스 1차 개발 완료 보고

END