2. index
1.General Principles
2.Common Techniques
3.Scalable System Design Patterns
2
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
Don't guess the bottleneck, Measure it
Plan for growth
3
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. 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. Load Balancer
설명
디스패처가 매 요청마다 리퀘스트를 처리할 워커를 선택함
다른 정책에 기반한 요청을 처리할 수 있음
어플리케이션은 어떤 워커도 요청을 처리할 수 있도록 “stateless“가 권장됨
대부분의 대용량 웹사이트에서 사용되는 패턴
메시징에서는 Point to Point 방식에 해당
출처: http://architects.dzone.com/news/scalable-system-design 6
7. Scatter and Gather
설명
이 모델은 디스패처가 풀의 모든 워커에 요청을 multicast 함
각 워커는 로컬결과를 계산하고 디스패처로 결과를 전송함
디스패처는 클라이언트에 각 워커의 결과를 조립해서 전송함
대부분의 검색엔진에서 사용됨 (구글, 야후 등)
메시징에서는 Pub-Sub방식에 해당됨
출처: http://architects.dzone.com/news/scalable-system-design 7
8. Result Cache
설명
이 모델은 디스패처가 처음에 요청이 저장됐는지 lookup함
만약에 결과가 있는 경우에는 이전 결과를 돌려줌
캐싱 중에서는 sideline cache에 해당함
출처: http://architects.dzone.com/news/scalable-system-design 8
9. Shared Space
이 모델은 “Blackboard”로 알려짐
모든 워커는 shared space에서 정보를 모니터하고, 부분지식을 blackboard에 돌려줌
정보는 솔루션이 도착할때까지 지속적으로 풍푸해짐
이 패턴은 JavaSpace와 GigaSpace에서 사용됨
출처: http://architects.dzone.com/news/scalable-system-design 9
10. Pipe and Filter
이 모델은 "Data Flow Programming“으로 알려져 있음
모든 워커는 데이터 플로우가 흐르도록 파이프를 통해 연결되어있다.
이 패턴은 일반적인 EAI pattern이다.
출처: http://architects.dzone.com/news/scalable-system-design 10
11. Map Reduce
이 모델은 디스크 IO가 큰 병목인 경우에 사용되는 배치작업이다.
분산파일시스템에서 디스크 IO가 병렬로 실행될 수 있다.
이 패턴은 많은 구글의 내부 어플리케이션에서 사용되고, 하둡 프레임웍에서도 채택됨
출처: http://architects.dzone.com/news/scalable-system-design 11
12. Bulk Synchronous Parallel
이 모델은 모든 워커에 걸쳐 lock-step 실행에 기반을 두고 마스터에 의해 조작된다.
각 워커는 종료조건에 도달할 때까지 다음 스텝을 반복한다.
각 워커는 인풋큐로부터 데이터를 읽는다.
각 워커는 읽은 데이터로부터 로컬 프로세싱을 수행한다.
각 워커는 로컬 결과를 직접 연결된 곳에 푸시한다.
구글 Pregel graph processing model 에서 사용되었고, 아파치 하마 프로젝트에서도 사용됨
출처: http://architects.dzone.com/news/scalable-system-design 12
13. Execution Orchestrator
설명
dependency에 기반한 태스크 실행
각 태스크에서 워커를 호출함
오케스트레이터는 워커의 실행결과를 받아 다음 태스크를 실행함
이 모델은 intelligent scheduler에서 사용됨
Job Scheduler
BPM
ESB
출처: http://architects.dzone.com/news/scalable-system-design 13