대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

15
대대대 대대 대대대 대대대대 #2. 대대대 대대 조조조 http://bcho.tistory.com

Upload: terry-cho

Post on 20-Aug-2015

16.979 views

Category:

Engineering


18 download

TRANSCRIPT

Page 1: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

대용량 분산 시스템 아키텍쳐#2. 디자인 패턴

조대협http://bcho.tistory.com

Page 2: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

대용량 분산 시스템 디자인 패턴

• 레퍼런스– SOA

• SOA Design Pattern (Thomas Erl) – 좋은지 잘 모르겠음 . 유명하니까 .

• Applied SOA – Michael Rosen – 추천• Enterprise SOA – Dirk Krafzig – 옛날 책이지만 추천• Enterprise integration Pattern – Gregor Hohpe 연동 패턴 잘

설명됨– 사이트

• HighScalability.com• http://aosabook.org/en/distsys.html ( 강추 )

Page 3: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

대용량 분산 시스템 디자인 패턴

• 대용량 분산 시스템 디자인 패턴– 대용량 분산 시스템 디자인도 패턴이 있고 , 비슷함 .– 여기서는 공통된 패턴을 정리 함 .– 자세한 것은 스스로 공부하세요 .

Page 4: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

분산 시스템 아키텍쳐 디자인 패턴

• 서비스 지향적 • Redudant & Resilience• 파티셔닝• Query Off Loading• 캐슁• CDN & ADN• 로깅• 비동기 패턴

Page 5: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

디자인 Principals

• 가용성 (Availability)• 성능 (Performance)• 확장성 (Scalability)• 안정성 (Reliability) • 관리성 (Manageability)• 비용 (Cost)

Page 6: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

Service Oriented Approach

• Loosely coupled• 기능을 API 로 제공• 표준 API • 공통 서비스• 컴포넌트화

Page 7: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

Redundant vs Resilience

• Redundant– 이중화– 비싼 고가용성 서버 , 클러스터링 , 엔터프라이즈– 트렌젝션을 깨지지 않고 보장

• Resilience– 장애가 나면 빠르게 복구– X86 Commodity 하드웨어 , Shared Nothing, B2C– 트렌젝션이 깨짐왜 ?) 대용량 서비스에서 비용을 낮추다 보니 , 장애가 남 . 장애가 나는 것을 전제로 하고 , 고 가용에 들어가는 비용을 낮춤

Page 8: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

파티셔닝 (Sharding)

• 데이타를 분산 배치• 방식

– Horizontal Sharding– Vertical Sharding

• 데이타 쏠림에 주의• 검색이 어려움 . ( 별도의 Index 서버 고려 )• 일반적으로 애플리케이션에서 분산 처리 ( 솔루션 차원에서

지원하기도함 .)

Vertical Shard-ing

Horizontal Shard-ing

Page 9: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

쿼리 오프로딩

• 읽기와 쓰기를 분리– 일반적으로 읽기 : 쓰기 비율 = 80:20– Master node : 쓰기 중심– Salve node : 읽기 중심 ( 무한 확장 가능 )– 중간에 Staging DB 를 놓는 방법을 고려– Application 단에서 분리 되서 구현현되어야 함

Page 10: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

캐슁

• 중앙 집중형 캐슁 아키텍쳐

Client

Client

Client

Cache Data

Client

Client

Client Cache

Data

Pass through Referal

Reverse proxyService Bus

• 분산형 캐쉬

Client

Client

Client

Data

Cache

Cache

Cache

Consistency hashing

• 분산형 캐쉬Client

Client

Client

Cache Data

Local Cach

e

Local Cach

e

Local Cach

e

※ Oracle Coherence 메뉴얼을 보세요 . 참고하기 좋아요 .

Page 11: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

로드 밸런싱

• 로드밸런싱– 알고리즘

• Hash• Round Robin ※ Sticky Session (Timeout 주의 )

– L4,L7,Reverse Proxy

• 글로벌 로드 밸런싱– Dynamic : DNS approach (Amazon Route 53)– Static : Look up & pinning (*)

• CDC• Regional info• 복제할 필요가 없음 . ( 비행기 타고 날라가도 같은 데이타 센터에 )

LB

Transa

ctio

n

Serv

er

Transa

ctio

n

Serv

er

Transa

ctio

n

Serv

er

Page 12: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

CDN & ADN

• CDN– 정적 컨텐츠를 지역적으로 분산된 EDGE NODE 에 배포

• AND– 압축 전송 : Riverbed– 전용망 서비스 : Akamai– Proxy 서버 : 클라우드 서비스의 region 간 전용망을 이용

Page 13: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

로깅

• 글로벌 트렌젝션과 로컬 트렌젝션

Component

Component

Component

진입점트랜젝션 ID 가 없으면 Global Tx Id 생성아니면 API G/W 사용

중간 Tx 포인트 : 같은 GTX ID 에 Local TX ID 증가

GTXID:LocalTXID = 0001:001

GTXID:LocalTXID = 0001:002

GTXID:LocalTXID = 0001:003

• TX ID Propagation– GTX ID : Header 에 넘겨서 전달– Local TX ID : Thread Local 에 넘겨서 , Local Tx 내에

Propagation

Page 14: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

로깅

• 분산 로깅– Pulling– Shared Storage

Server

Log

Server

Log

Server

Log

Log Server

pulling

Server

Log

Server

Log

Server

Log

Shared Storage

Shared Storage

Log Server

• Good Performance • Good at auto-scale out/in

Page 15: 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴

비동기 패턴

• 대용량 TX 처리에 유용– Queue 자체에대한 Partitioning 을 고려

Publisher Queue

WorkerWorker

WorkerWorker

WorkerWorker

Scale out

Publisher LB

: