Distributed System 1
Distributed Systems
Definition
Collection of independent computers that appears to users as a single coherent system(Transparency)
Characteristics
- Making resources accessible
- Distribution Transparency
- Openness
- Scalability
1. Making Resources accessible
- 유저가 remote resources에 쉽게 접근할수 있게
- Controlled and efficient way로 공유할수 있게
- 요즘 많은 accessibility를 요구한다. eg. groupware, CSCW: computer-supported cooperative work
- Connectivity and sharing increases -> 보안에도 신경써야 해
2. Distribution Transparency
사용자는 이게 distributed 환경에서 이루어지는 지 알아채지 못하게 해
Transparency의 종류들
- Access Transparency: resource를 access하는 방법을 숨기겠다. (Little endian vs big endian, host와 remote가 different OS)
- Replication Transparency: 여러 copy가 존재(For HA)한다는 사실을 숨길수 있어야
- Concurrency Transparency: 같은 resource에 대해서 여러 사용자가 동시에 접근해도, 각 사용자는 이 사실을 눈치채지 못해야해
- Failure Transparency(fault tolerant sys): component가 죽어도 티가 나지 않아야 해
위치에 관한 transparency
- Location Transparency: User가 해당 resource가 어디에 physically located 되어있는지 몰라야 해
- Migration transparency: Resource가 사용자 눈치 못채게 이동될수 있어
- Relocation Transparency: 사용자가 사용중인 Resource도 이동되더라도 사용자는 눈치챌수 없어야해 (상대적으로 지켜지기 어려워)
Degree of Transparency
어느정도로 숨기는게 좋은가?
- 무조건 꼭꼭 다 숨기는게 좋은건 아니다.
- network latency와 같이 숨기지 못하는 것도 존재해
- Transparency와 Performance간의 tradeoff 존재
3. Openness
A system that offers services according to standard rules that describe the syntax and semantics of those services
- Rules are formalized in protocols
- Services are generally specified through interfaces
위와 같이 표준을 지키면 다음과 같은 것들이 좋아진다.
- Interoperability(상호 운영성): 서로 다른 시스템이나 컴포넌트들이 얼마나 잘 대화하고 협력할 수 있는가
- Portability(이식성): 어떤 애플리케이션이나 코드를 “수정 없이 다른 환경으로 얼마나 쉽게 옮겨서 실행할 수 있는가
- 추가적으로 고려할것들은: 다른 component를 구성해 추가할때 쉽게 추가할수 있게, 기존 component를 건들이지 않아도 된다면 좋겠지
상호 운영성 vs 이식성 상호운용성은 서로 다른 시스템들이 “동시에 존재하면서 통신(Talk)”하는 문제 이식성은 하나의 애플리케이션이 “이 환경에서 저 환경으로 이사(Move)”하는 문제
구현을 위해서 필요한 것: Separation between policy and mechanism
- e.g. Web caching: 메카니즘은 존재하고, 해당 파일을 어디에 저장하고 언제동안 가지고 있을지에대한 policy는 user가 정할수 있어.
4. Scalability
3 Measurement of scalability
- A system can be scalable with respect to its size: 많은 수의 user를 처리하려면 많은수의 component가 필요해
- A Geographically scalable system: 유저랑 리소스 간의 거리가 멀어
- An Administratively scalable system: 다른 independent administrative organization에서 사용되어도 easy to manage.
시스템의 덩치를 키우고 범위를 넓히면, 필연적으로 통신이나 관리 비용이 증가해서 시스템이 조금씩 느려지거나 효율이 떨어지는 부작용이 따라온다
1. Problems with the size
Single point of failure 발생, Availability가 떨어져
- Centralized Service의 경우, processor, storage capacity를 무한히 늘려도 bottleneck이 발생할수 밖에 없어
- Centralized Data의 경우도 Centralized Service와 같이 나빠
- Centralized Algorithm의 경우, 모든 데이터가 하나의 Device에 모여있어야해서 안 좋아
Decentralized의 경우, 어떤 device도 전체 정보를 알고있지 않아, local information에 대해서만 처리해서 부분이 전체를 ruin시키진 않아. 근데 synchronization 같은 건 잘 처리해주자. Communication delay 이런거 때문에 맞추지 힘듬. 또한 이때문에 optimal solution을 낼때는 centralized가 더 좋음
2. Problems with the geography
지리적으로 멀리 떨어져 있어도, 일정한 service를 제공할수 없을까? 멀어지면 delay가 커지는걸 어떻게 해결할수 없을까?
- Synchronous communication하는 경우 delay가 커질수 있어
- Unreliable, point2point communication하는 경우 delay가 커질 수 있어 e.g. WAN에서의 packet loss
3. Problems with the administration
기술적인전 아니다. 서로 다른 정책과 보안 기준을 가진 조직들이 어떻게 서로를 신뢰하고 안전하게 자원을 공유할 것인가?
- 서로 다른 도메인(관리 영역)이 하나의 분산 시스템으로 통합되거나 연동될떄 conflicting policies, trust boundary 문제가 생긴다.
- read access만 부여하기, 기존 분산시스템으로 들어노는 코드나 프로그램을 제한 하는 식으로 security 측면 상호 보안 조치를 할수 있어
Scaling technique
Scalability를 위한 기술적인 기법이 크게 3가지 존재해
1. Hiding Communication Latency
Async한 communication으로 delay를 줄일수도 있지만, 궁극적으로 Message를 보낼 필요가 없게끔 상황을 만들자 (메세지를 보내는 횟수를 줄이자)
- Local에서 처리할수 있는건 local에서 처리해버려
- Important to achieve geographical scalability
2. Distribution
Component를 작은 파트로 split 후 spread those parts across the system
- Single point failure 문제도 해결가능 e.g. DNS, WWW
3. Replication
같은 Component를 여러개 배치시켜
- Increases availability (Replication만 제공해 줄수 있는 장점)
- Balances the load between components (Distribution도 partially 제공해주긴 해)
- Hide much of the communication latency in geographically widely-dispread systems
- Consistency problem을 잘 handle 해야해
eg. caching
- caching is a special form of replication
- 특이하게 replication이 on-demand로 된다. (보통은 replication의 경우 미리 복사가 되어 있는데)
Distributed system의 pitfall
- 1,2,3 . The network is reliable, secure, homogeneous
- The topology does not change
- Latency is zero
- Bandwidth is infinite
- Transport cost is zero
- There is one administrator
Distributed system의 종류
- Distributed computing systems
- Distributed information systems
- Distributed pervasive systems
Middleware
pp 5-6