주제 : Scalability
3,4강은 분산시스템에서 시스템이 성능저하없이 증가하는 작업량이나 리소스 요구를 처리할 수 있는 확장성에 대한 문제점, 테크닉을 다룬다.
1. Scalability
분산 시스템에서 가장 중요한 목표
3가지 측면에서 고려
- 많은 유저와 리소스를 추가할 수 있어야
- 지리적으로 떨어진 곳에서 사용할 수 있음을 고려해야
- 정책적으로 확장가능한 시스템이어야 (Ex. 통신사 3개 끼리 바꿔도 똑같이 사용할 수 있게)
2. Scalability 문제점
확장되면서 3가지 측면에서 문제가 발생할 수 있는데,
2-1. Problems with the size
중앙화된 서비스
- bottleneck : 요청이 한 서버에 몰리면 렉 걸림
중앙화된 데이터
- 데이터가 한 서버에 집중되어 있으면 데이터 가용성 떨어짐 (single point of failure)
- 해결책 ex : DNS 서버 - 전세계에 분산 저장
중앙화된 알고리즘
- 알고리즘을 실행하기 위한 인풋 데이터가 필요한데, 이 데이터가 한 서버에 모여있는 경우
- 이 경우 불완전한 정보일지라도 각 로컬에서 알고리즘을 실행하는 것이 빠름
- (중앙화가 완전한 정보를 가지기 때문에 더 좋긴함)
- Decentralized한 경우 싱크를 맞출 때 시간을 동기화하는게 필요한데, 딜레이 때문에 어려운 작업임
2-2. Problems with the geography
지리적으로 떨어져있기 때문에 발생하는 문제들
- Synchronous communication
- 네덜란드 => 미국 으로 메시지 보내면 빛의 시간만큼 딜레이는 발생할 수 밖에 없음
- Unreliable, point-to-point communication
- 서로 메시지 보낼 때 네트워크 문제가 발생할 수도 있음
2-3. problems with the administration
기술보다는 정책적인 문제로,
예를 들어 3 통신사가 표준을 정해서 번호 이동을 해도 사용자가 불편하지 않게 하도록 한다면,
정책적인 합의가 필요할 것이다.
3. Scaling techniques
- Hiding communication latency
- Distribution
- Replication
3가지 방법으로 스케일업을 할 수 있다.
정말 심플하게 소개하자면
Hiding communication latency : 통신을 가급적 안하게 하자
Distribution : 데이터를 쪼개서 여러 곳에 저장하자
Replication : 자주 쓰는 데이터는 복사해놓자
3-1. Hiding communication latency
가급적 서로 통신하지 말고, 로컬에서 처리할 수 있도록 한다.
Ex. java applets - 브라우저에서 돌리는 자바 프로그램
Ex. 회원가입 비밀번호 체크
비밀번호 요건을 체크할 때, 굳이 서버로 보내서 처리하지 말고, 클라이언트 단에서 처리한다면
통신이 덜 발생할 것이다.
3-2. Distribution
예시 : DNS

전세계에 DNS 서버는 흩어져있고, 계층구조로 이루어져 있고, 각자 맡은 역할과 정보만 있다.
(실제로는 로컬 DNS를 대부분 거쳐서 알아내지만)
예를 들어 "nl.vu.cs.files" 라는 URL을 입력했다면
일단 root 서버로 가서 nl만 본다.
root는 자식 중에 nl이 있다. 여기로 가셈.
nl로 가서 vu를 자식 중에 찾는다. 여기로 가셈
이렇게 타고 타고 가면서 정보를 취합한다.
이렇게 Distribution 해놓으면 org 서버가 죽어도, 나머지 서비스는 이용 가능하다.
또 다른 예시로는 WWW,
구글, 네이버, 넥슨 등이 별도로 웹 컨텐츠를 분산해서 관리하지 않는가.
3-3. Replication
- 부하 분산
- fail 해도 제공할 수 있도록
- 데이터 가용성 증가
Caching
캐싱은 특별한 형태의 Replication이다.
리소스의 Client가 결정해서 캐싱한다. (웹 캐싱의 경우)
Replication은 서버 쪽에서 사용자 요청 전 미리 복제
Consistency Problems
복제된 것들의 일관성을 체크해야 한다. 데이터는 업데이트될 수 있으니.
어떻게 맞출 것이냐, 빡세게 맞출것이냐, inconsistency를 좀 허용할 것이냐
- sns의 경우 빡세게 안해도 됨
- 주식 거래의 경우 빡세게 해야 됨.
Q. 같은 리소스를 서로 다른 내용으로 업데이트하려고 하는 경우?
4. 설계시 빠지는 함정
분산 시스템 설계시 대충 넘어가는 경우가 생길 수 있는데, 이 8가지를 체크하면서 개발해야 한다.
- Network is reliable
- Network is secure
- Network is homogeneous
- Topology does not change
- Latency is zero
- Bandwitdh is infinite
- Trasport cost is zero
- There is one admin
5. Types of Distributed systems
- Distributed Computing systems
- Distributed Information systems
- Distributed Pervasive systems
- ex. IOT 스마트 홈 시스템, 헬스케어