분산시스템의 목표에 대해 간단히 나열하자면 아래와 같다.
(개인적으로 정리한 글이니 자세한 내용을 원한다면 다른 블로그를 참고해주세요)
- Resource Sharing(자원 공유)
- 보안의 3요소인 Condifentiality(기밀성), Integrity(무결성), Availability(가용성)을 포함한다.
- Transparency(투명성)
- 물리적으로 분산되어 있다는 사실을 숨기는 성질 : 사용자에게 Centralized System 처럼 보이기 위함.
- 모든 Transparency를 잡는 것은 성능의 저하를 일으키므로 가용범위내에서 절충해야됨.
- 7가지의 투명성 Access, Location, Relocation, Migration, Concurrecy, Replication, Failure/Persistence
- Openess(개방성)
- 내재된 환경과 관계없이 다른 개방형 시스템과 상호작용할 수 있는 능력
- 다양한 언어 및 플랫폼, 하드웨어에 종속되지 않고 상호작용할 수 있어야 함.
- Reliability(신뢰성)
- 중앙집중형의 경우, 한 서비스에서의 장애가 서비스 전체로 퍼져나가기에 신뢰성이 낮다. 단일 장애지점(Single Point of Failure)을 조심해야 한다.
- 분산형의 경우, 서비스가 중복되어있거나, 분산되어있을경우, 일부분에서의 장애가 전체에 영향을 주지 않는다.
- Perfomance(성능)
- 중앙집중형의 경우, 단일 서버가 모든 요청을 처리한다. 이때 각 서비스 마다의 서버에서 처리속도가 다르지만, 서버의 최대 커넥션수는 정해져있기에 bottleneck이 발생한다.
- 분산형의 경우, 성능향상을 위해 비동기 방식으로 사용자 요청을 여러 서버에 전달후, 처리된 값만 받아 응답할 수 있다.
- Scalability(확장성)
- 트래픽 부하가 늘어남에 따라서, 증가되는 요청에 얼마나 적응할 수 있는지
- 시스템이 일관성을 유지해야하기에 동일한 기능의 서비스들끼리 동기화가 필요함.
- Scale up: 단일 서버(서비스)의 하드웨어 성능을 향상.
- Scale out: 복수의 서버를 사용해 처리량을 늘리는 것.