Scalable system design patterns

1,546 views

Published on

Scalable system design patterns

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,546
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
13
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Scalable system design patterns

  1. 1. Scalable System Design Patterns 2010.12. DM본부 기술개발담당 1
  2. 2. index 1.General Principles 2.Common Techniques 3.Scalable System Design Patterns 2
  3. 3. General Principles"Scalability" is not equivalent to "Raw Performance"Understand environmental workload conditionsUnderstand who is your priority customersScale out and Not scale upKeep your code modular and simpleDont guess the bottleneck, Measure itPlan for growth 3
  4. 4. Common TechniquesServer Farm (real time access)Data PartitioningMap / Reduce (Batch Parallel Processing)Content Delivery Network (Static Cache)Cache Engine (Dynamic Cache)Resources PoolCalculate an approximate resultFiltering at the sourceAsynchronous ProcessingImplementation design considerations 4
  5. 5. Scalable System Design PatternsLoad BalancerScatter and GatherResult CacheShared SpacePipe and FilterMap ReduceBulk Synchronous ParallelExecution Orchestrator 5
  6. 6. Load Balancer 설명  디스패처가 매 요청마다 리퀘스트를 처리할 워커를 선택함  다른 정책에 기반한 요청을 처리할 수 있음 어플리케이션은 어떤 워커도 요청을 처리할 수 있도록 “stateless“가 권장됨 대부분의 대용량 웹사이트에서 사용되는 패턴 메시징에서는 Point to Point 방식에 해당출처: http://architects.dzone.com/news/scalable-system-design 6
  7. 7. Scatter and Gather 설명  이 모델은 디스패처가 풀의 모든 워커에 요청을 multicast 함  각 워커는 로컬결과를 계산하고 디스패처로 결과를 전송함  디스패처는 클라이언트에 각 워커의 결과를 조립해서 전송함 대부분의 검색엔진에서 사용됨 (구글, 야후 등) 메시징에서는 Pub-Sub방식에 해당됨출처: http://architects.dzone.com/news/scalable-system-design 7
  8. 8. Result Cache 설명  이 모델은 디스패처가 처음에 요청이 저장됐는지 lookup함  만약에 결과가 있는 경우에는 이전 결과를 돌려줌 캐싱 중에서는 sideline cache에 해당함출처: http://architects.dzone.com/news/scalable-system-design 8
  9. 9. Shared Space 이 모델은 “Blackboard”로 알려짐 모든 워커는 shared space에서 정보를 모니터하고, 부분지식을 blackboard에 돌려줌 정보는 솔루션이 도착할때까지 지속적으로 풍푸해짐 이 패턴은 JavaSpace와 GigaSpace에서 사용됨출처: http://architects.dzone.com/news/scalable-system-design 9
  10. 10. Pipe and Filter 이 모델은 "Data Flow Programming“으로 알려져 있음 모든 워커는 데이터 플로우가 흐르도록 파이프를 통해 연결되어있다. 이 패턴은 일반적인 EAI pattern이다.출처: http://architects.dzone.com/news/scalable-system-design 10
  11. 11. Map Reduce 이 모델은 디스크 IO가 큰 병목인 경우에 사용되는 배치작업이다. 분산파일시스템에서 디스크 IO가 병렬로 실행될 수 있다. 이 패턴은 많은 구글의 내부 어플리케이션에서 사용되고, 하둡 프레임웍에서도 채택됨출처: http://architects.dzone.com/news/scalable-system-design 11
  12. 12. Bulk Synchronous Parallel 이 모델은 모든 워커에 걸쳐 lock-step 실행에 기반을 두고 마스터에 의해 조작된다. 각 워커는 종료조건에 도달할 때까지 다음 스텝을 반복한다.  각 워커는 인풋큐로부터 데이터를 읽는다.  각 워커는 읽은 데이터로부터 로컬 프로세싱을 수행한다.  각 워커는 로컬 결과를 직접 연결된 곳에 푸시한다. 구글 Pregel graph processing model 에서 사용되었고, 아파치 하마 프로젝트에서도 사용됨출처: http://architects.dzone.com/news/scalable-system-design 12
  13. 13. Execution Orchestrator 설명  dependency에 기반한 태스크 실행  각 태스크에서 워커를 호출함  오케스트레이터는 워커의 실행결과를 받아 다음 태스크를 실행함 이 모델은 intelligent scheduler에서 사용됨  Job Scheduler  BPM  ESB출처: http://architects.dzone.com/news/scalable-system-design 13

×