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

22,193
-1

Published on

대용량 분산 아키텍쳐 설계
Distributed high scale system architecture dsign

Published in: Engineering
1 Comment
77 Likes
Statistics
Notes
No Downloads
Views
Total Views
22,193
On Slideshare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
405
Comments
1
Likes
77
Embeds 0
No embeds

No notes for slide

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

  1. 1. 대용량 분산 시스템 아키텍쳐 #2.디자인 패턴 조대협 http://bcho.tistory.com
  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 (강추)
  3. 3. 대용량 분산 시스템 디자인 패턴 • 대용량 분산 시스템 디자인 패턴 – 대용량 분산 시스템 디자인도 패턴이 있고, 비슷함. – 여기서는 공통된 패턴을 정리 함. – 자세한 것은 스스로 공부하세요.
  4. 4. 분산 시스템 아키텍쳐 디자인 패턴 • 서비스 지향적 • Redudant & Resilience • 파티셔닝 • Query Off Loading • 캐슁 • CDN & ADN • 로깅 • 비동기 패턴
  5. 5. 디자인 Principals • 가용성 (Availability) • 성능 (Performance) • 확장성 (Scalability) • 안정성 (Reliability) • 관리성(Manageability) • 비용 (Cost)
  6. 6. Service Oriented Approach • Loosely coupled • 기능을 API로 제공 • 표준 API • 공통 서비스 • 컴포넌트화
  7. 7. Redundant vs Resilience • Redundant – 이중화 – 비싼 고가용성 서버, 클러스터링, 엔터프라이즈 – 트렌젝션을 깨지지 않고 보장 • Resilience – 장애가 나면 빠르게 복구 – X86 Commodity 하드웨어, Shared Nothing, B2C – 트렌젝션이 깨짐 왜?) 대용량 서비스에서 비용을 낮추다 보니, 장애가 남. 장애가 나는 것을 전제로 하고, 고 가용에 들어가는 비용을 낮춤
  8. 8. 파티셔닝 (Sharding) • 데이타를 분산 배치 • 방식 – Horizontal Sharding – Vertical Sharding • 데이타 쏠림에 주의 • 검색이 어려움. (별도의 Index 서버 고려) • 일반적으로 애플리케이션에서 분산 처리 (솔루션 차원에서 지원 하기도함.) Vertical Sharding Horizontal Sharding
  9. 9. 쿼리 오프로딩 • 읽기와 쓰기를 분리 – 일반적으로 읽기:쓰기 비율 = 80:20 – Master node : 쓰기 중심 – Salve node : 읽기 중심 (무한 확장 가능) – 중간에 Staging DB를 놓는 방법을 고려 – Application단에서 분리 되서 구현현되어야 함
  10. 10. 캐슁 • 중앙 집중형 캐슁 아키텍쳐 Client Client Client Cache Data Client Client Client Cache Data Pass through Referal Reverse proxy Service Bus • 분산형 캐쉬 Client Client Client Data Cache Cache Cache Consistencyhashing • 분산형 캐쉬 Client Client Client Cache Data Local Cache Local Cache Local Cache ※ Oracle Coherence 메뉴얼을 보세요. 참고하기 좋아요.
  11. 11. 로드 밸런싱 • 로드밸런싱 – 알고리즘 • Hash • Round Robin ※ Sticky Session (Timeout 주의) – L4,L7,Reverse Proxy • 글로벌 로드 밸런싱 – Dynamic : DNS approach (Amazon Route 53) – Static : Look up & pinning (*) • CDC • Regional info • 복제할 필요가 없음. (비행기 타고 날라가도 같은 데이타 센터에) LB Transaction Server Transaction Server Transaction Server
  12. 12. CDN & ADN • CDN – 정적 컨텐츠를 지역적으로 분산된 EDGE NODE에 배포 • AND – 압축 전송 : Riverbed – 전용망 서비스 : Akamai – Proxy 서버 : 클라우드 서비스의 region간 전용망을 이용
  13. 13. 로깅 • 글로벌 트렌젝션과 로컬 트렌젝션 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
  14. 14. 로깅 • 분산 로깅 – 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
  15. 15. 비동기 패턴 • 대용량 TX 처리에 유용 – Queue 자체에대한 Partitioning을 고려 Publisher Queue Worker Worker Worker Worker Worker Worker Scale out Publisher LB :
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×