21
일촌들의 모아보기는 어떻게 제공되나? CTO 기술연구소〉 플랫폼개발팀 박정수 Update : 2011. 10. 14 © 2011 SK Communications - SONIC 시스템 구조 활용

D2 sonic시스템구조및활용

Embed Size (px)

Citation preview

Page 1: D2 sonic시스템구조및활용

내 일촌들의 모아보기는 어떻게 제공되나?

CTO 〉 기술연구소〉 플랫폼개발팀 〉 박정수

Update : 2011. 10. 14

© 2011 SK Communications

- SONIC 시스템 구조 및 활용

Page 2: D2 sonic시스템구조및활용

2

내용

I. 모아보기란?

II. 싸이월드 서비스의 특징

III. 모아보기를 제공 하기 위해 고려 되어야 할 점

IV. SONIC 구성

V. SONIC 세부 구조

VI. 질문 / 답변

Page 3: D2 sonic시스템구조및활용

3

모아보기란?

SONIC 시스템을 이용, 싸이월드 회원들의 활동을 뉴스 피드로 제공 SOcial Network Information Connector

일촌 / 팬 기반의 소식 전달

3가지 분류의 소식을 제공

자싞의 활동 내역

일촌/팬의 활동 내역

„나‟를 대상으로 한 활동내역

Page 5: D2 sonic시스템구조및활용

5

싸이월드 서비스의 특징 (1/2)

공개 설정이 다양함

4개의 일촌 그룹 (1/2/3/4)

관심일촌

Page 6: D2 sonic시스템구조및활용

6

싸이월드 서비스의 특징 (2/2)

다양한 플랫폼 (플랫폼별 Data Format 상이)

미니홈피

싸이블로그

Clog

네이트

Page 7: D2 sonic시스템구조및활용

7

모아보기를 제공 하기 위해 고려 되어야 할 점

•비동기 데이터 처리

•예) 태극 홈피 일촌 수 100만명

피드 전달이 실 서비스에

영향을 주지 않음

•스크립트를 통한 비즈니스 로직 처리

•서버 정지 없이 로직 변경 가능

서비스의 변화에

유연하게 대응 가능

•분당 8,000건의 새글 데이터

•분당 600,000건의 피드 발송

•DB 처리시 상당한 부하 예상

빈번한 데이터

삽입 / 수정

•데이터의 중복 저장 시 과다한 수정 비용 발생

•키 데이터와 컨텐츠 데이터의 분리 저장

문서의 수정 및 일촌 그룹

변경의 실시갂 반영

Page 8: D2 sonic시스템구조및활용

8

SONIC 시스템 구성

Sonicd 데몬 제작 비 동기 처리 가능

스크립트로 비즈니스 로직을 구성 가능

• 스크립트에 따라 로직이 바뀌므로 한 종류의 데몬으로 시스템 구성 가능

저장소 기능

• 자체 제작 B+tree 기반의 DB

• Message-Queue

• 각 삽입 / 수정 / 삭제 연산에 대해 트랜잭션 로그로 관리(장애 복구)

SONIC 시스템 구성 피드 = 키와 활동자 정보만 저장하는 토큰

피드에 저장된 키를 통해 데이터를 쿼리

Buddy

Dispatcher

Feed/Inbox

Meta Interface Data Input (SVC) Query (WEB)

Contents DBCache

Page 9: D2 sonic시스템구조및활용

9

SONIC 세부 구조

각 사용자는 자싞의 저장소를 가짐 저장소에 „피드‟라는 작은 데이터만 저장

피드는 하나의 데이터에 여러 개가 생성

내부 키, 작성자, 초기 열람 권한, 서비스 종류 등

저장 공갂을 낭비하지 않기 위해 큰 데이터는 Contents 서버에 별도로 저장

회원당 3개의 목록 내가 쓴 글

일촌/팬이 쓴 글

반가운 소식

B의 일촌/팬 모아보기

A C A D C

C의 일촌/팬 모아보기

A B D A E

A의 내 모아보기

A A A A A

A가 글을 작성

일촌인 B,C에게 발송

나에게 피드 발송

모아보기 서비스

한 번에 모아보기 화면에 필요한 데이터를 가져옴

Feed/Inbox

Interface Query (WEB)

Contents DBCache

Page 10: D2 sonic시스템구조및활용

10

SONIC 세부 구조

Dispatcher 피드 생성, 일촌변경 등 실제 Operation 수행

모아보기의 모든 데이터 입력 처리 (입력 데이터 분석)

외부 키 추출 후, 내부 키 매핑 작업

Buddy

Dispatcher

Feed/Inbox

Meta Interface Query

Contents DBCache

{SVC:”미니홈피 게시판”, 폴더번호 : 3, 게시글번호 : 501, 홈주인 : “나주인”,

제목 : “즐거운 모아보기”, 내용 : “즐거운 세상~”, 폴더권한 : “1촌공개-그룹1,3”, 글권

한 : “1촌공개”, …}

Data Input (SVC)

Page 11: D2 sonic시스템구조및활용

11

SONIC 세부 구조

Meta-comment list 외부 데이터의 키를 Contents 서버의 UID와 연결

SVC Key -> UID (시계열 key – timestamp)

Buddy

Dispatcher

Feed/Inbox

Meta Interface Data Input Query

Contents DBCache

홈주인 : “나주인”

서비스 종류 : ”미니홈피 게시판”

폴더번호 : 3

게시글번호 : 501

서비스 종류 폴더 번호 게시글 번호 발급된 키

미니홈피 게시판 3 495 12eef5718ef

미니홈피 게시판 4 498 1300f5708ef

블로그 게시판 201 10071 1200f5708ef

사용자 : 나주인 의 키 매핑 테이블

Page 12: D2 sonic시스템구조및활용

12

SONIC 세부 구조

Dispatcher 외부키 – 내부키 매핑이 없을 시 내부키 싞규 발급

매핑 테이블 저장 -> Meta 서버

내부 키 : UID (시계열 key – timestamp)

Buddy

Dispatcher

Feed/Inbox

Meta Interface Data Input Query

Contents DBCache

홈주인 : “나주인”

서비스 종류 : ”미니홈피 게시판”

폴더번호 : 3

게시글번호 : 501

서비스 종류 폴더 번호 게시글 번호 발급된 키

미니홈피 게시판 3 495 12eef5718ef

미니홈피 게시판 3 501 1400f0708ef

미니홈피 게시판 4 498 1300f5708ef

블로그 게시판 201 10071 1200f5708ef

사용자 : 나주인 의 키 매핑 테이블

Page 13: D2 sonic시스템구조및활용

13

SONIC 세부 구조

Contents-Data 글 Feed의 실제 내용이 저장되는 서버

UID가 key인 B+tree 테이블 (Berkeley DB를 사용해 구현)

일부 필드 (공개권한, 댓글수, 폴더번호)는 부분 업데이트 기능을 제공

Buddy

Dispatcher

Feed/Inbox

Meta Interface Query (WEB)

Contents DBCache

Message Queue

{ 1400f0708ef : { SVC:”미니홈피 게시판”, 폴더번호 : 3, 게시글번호 : 501, 홈주인 : “나주인”, 제목 : “즐거운 모아보기”, 내용 : “즐거운 세상~”, 폴더권한 : “1촌공개-그룹1,3”, 글권한 : “1촌공개”, … } }

내부 키 (UID) 내용

1400f0708ef { SVC : ”미니홈피 게시판”, 폴더번호 : 3, 게시글번호 : 501, 홈주인 : “나주인”, 제목 : “즐거운 모아보기”, 내용 : “즐거운 세상~”, 폴더권한 : “1촌공개-그룹1,3”, 글권한 : “1촌공개” }

Page 14: D2 sonic시스템구조및활용

14

SONIC 세부 구조

Dispatcher 피드 생성 후 발송

피드 : 서비스번호 + 내부키 + 활동자 + 피드 생성시 권한

발송 대상은 Buddy 서버로 부터 조회

Buddy 싸이월드 회원의 일촌/팬 관계를 가지고 있는 서버

• 항상 실시갂으로 일촌/팬DB와 동기화 중

Buddy

Dispatcher

Feed/Inbox

Meta Interface Query

Contents DBCache

Message Queue

{ 서비스 : 미니홈피 게시판 글, 내부키 : 1400f0708ef. 작성자 : 박문자, 권한 : 1촌그룹 1,3에 공개 }

Page 15: D2 sonic시스템구조및활용

15

SONIC 세부 구조

Buddy

Dispatcher

Feed/Inbox

{ 서비스 : 미니홈피 게시판 글, 내부키 : 1400f0708ef. 작성자 : 박문자, 권한 : 1촌그룹 1,3에 공개 }

사용자 : 나주인 의 반가운 소식 테이블

서비스 종류 내부 키 활동자 권한

미니홈피 게시판 글 1400f0708ef 박문자 1촌 그룹 1,3에 공개

… … … …

사용자 : 박문자 의 내가 쓴 글 테이블

서비스 종류 내부 키 활동자 권한

미니홈피 게시판 글 1400f0708ef 박문자 1촌 그룹 1,3에 공개

… … … …

서비스 종류 내부 키 활동자 권한

미니홈피 게시판 글 1400f0708ef 박문자 1촌 그룹 1,3에 공개

… … … …

사용자 : 박문자 의 일촌 나일촌 의 일촌/팬 소식 테이블

Page 16: D2 sonic시스템구조및활용

16

SONIC 세부 구조

조회 시 동작 (Query) HTTP request 수싞

Buddy

Feed/Inbox

Interface Query

Contents DBCache

홈주인 : 나주인 방문자 : 박문자 타입 : 내가 쓴 글

개수 : 20

Page 17: D2 sonic시스템구조및활용

17

SONIC 세부 구조

조회 시 동작 홈주인과 방문자가 다른 경우,

Buddy서버에서 홈주인과 방문자의 관계 쿼리

Buddy

Feed/Inbox

Interface Query

Contents DBCache

홈주인 : 나주인 방문자 : 박문자

개수 : 20

방문자는 홈주인의 일촌 그룹 3에 속함

사용자 : 12345678 의 일촌 테이블

일촌 그룹 관심일촌 수싞금지 설정

박문자 3 O 수신 허용

나일촌 1 X 수신금지

… … … …

Page 18: D2 sonic시스템구조및활용

18

SONIC 세부 구조

조회 시 동작 Feed-inbox 서버에서 공개 권한(그룹 3이 볼 수 있는)에 맞는 피드 n개 가져옴

데이터가 필요한 피드는 Contents서버나 외부 서비스 서버에서 내용을 가져옴

• 데이터가 삭제되거나 오류로 인해 조회할 수 없는 경우에는 해당 피드를 결과목록에서 제거

Buddy

Feed/Inbox

Interface Query

Contents DBCache

홈주인 : 나주인 타입 : 내가 쓴 글 방문자 : 박문자

개수 : 20

방문자는 홈주인의 일촌 그룹 3에 속함

사용자 : 나주인 의 내가 쓴 글 테이블

서비스 종류 내부 키 활동자 권한

미니홈피 게시판 글 1412f0708ef 나주인 1촌 그룹 1,3에 공개

… … … …

{ 1412f0708ef : { SVC:”미니홈피 게시판”, 폴더번호 : 3, 게시글번호 : 501, 홈주인 : “나주인”, 제목 : “즐거운 모아보기”, 내용 : “즐거운 세상~”, 폴더권한 : “1촌공개-그룹1”, 글권한 : “1촌공개”, … } }

Page 19: D2 sonic시스템구조및활용

19

SONIC 세부 구조

조회 시 동작 데이터의 공개권한을 보고 보여줄 수 없는 피드라면 결과목록에서 제거

• 예)

1) 최초 피드 발송시 공개권한 : 그룹 1, 3

2) 게시글 권한 수정으로 그룹 1에만 공개로 수정

3) 최종 그룹 1에만 공개 권한이 있으므로 해당 피드 제거

결과목록의 피드 수가 부족하면 위의 과정을 다시 반복

Buddy

Feed/Inbox

Interface Query

Contents DBCache

홈주인 : 나주인 타입 : 내가 쓴 글 방문자 : 박문자

개수 : 20

사용자 : 나주인 의 내가 쓴 글 테이블

서비스 종류 내부 키 활동자 권한

미니홈피 게시판 글 1412f0708ef 나주인 1촌 그룹 1,3에 공개

… … … …

{ 1412f0708ef : { SVC:”미니홈피 게시판”, 폴더번호 : 3, 게시글번호 : 501, 홈주인 : “나주인”, 제목 : “즐거운 모아보기”, 내용 : “즐거운 세상~”, 폴더권한 : “1촌공개-그룹1”, 글권한 : “1촌공개”, … } }

Page 20: D2 sonic시스템구조및활용

20

SONIC 시스템의 활용

Page 21: D2 sonic시스템구조및활용

21

Q & A

감사합니다.