본문 바로가기

전체 글

(67)
분산시스템) 시스템 아키텍쳐(2) - 비중앙 집중식 Decentralized architectures 중앙집중식 방식에서 중요한 것은 client-server 관점에서 컴포넌트를 어디에 둘지 수직적인 관점이었고 이와 반대로 수평적인 관점에서도 생각해 볼 수 있다. Decentralized architectures는 서버와 클라이언트의 구분이 없다. 모든 노드들이 동일한 기능을 수행한다. 따라서 client-server 대신 peer라는 용어를 사용한다. 소위 말하는 P2P 시스템이 Decentralized architectures이다. 장점 앞서 말했듯이 중앙집중식 방식은 single point of failure, bottleneck, 확장성 등의 문제가 있을 수 있다. 이를 해결하기 위해 나온 것이 Decentralized 방식이다. 한 지점이 문제가..
분산시스템) 시스템 아키텍쳐(1) - 중앙 집중식 System architectures 분산 시스템은 논리적으로 또는 물리적으로 어디에 위치해 있어야 하는지, 시스템 소프트웨어의 역할에 따라 시스템 아키텍쳐를 고려할 수 있다. 이는 크게 Centralized architectures와 Decentralized architectures 두 가지 경우로 고려해 볼 수 있다. 위의 아키텍쳐 스타일과 연관지어서 생각할 수도 있지만 별개로 생각해 볼 수 있어 다른 관점이라고 볼 수 있다. Centralized architectures 우리가 익히 알고있는 client-server 아키텍쳐이다. 클라이언트가 서비스를 서버에 request하면 서버는 reply하는 식으로 서비스를 이용한다.(Request-reply pattern) client는 일반적으로 reque..
분산시스템) 아키텍쳐 Architectures 분산 시스템을 구성하는 서버와 클라이언트 측의 아키텍처를 디자인 할 때 어떤 부분을 고려해야하는지 살펴보자. 아키텍쳐라는 것은 주로 하드웨어는 있다고 치고 이 분산 시스템을 구성하는 소프트웨어 컴포넌트들을 어떻게 구성해야할지에 대한 문제이다. 설계하려는 시스템의 소프트웨어가 어떤 구조를 가질지 설계하고 실제 설계한 내용을 개발해서 구체화하면 그게 시스템 아키텍쳐이다. Goals of Distributed System and Architectures 이번 포스트에서 다루는 system architecture나 software architecture, 그냥 architecture 모두 software component들 사이의 관계를 어떻게 구성할건지에 대한 문제이다. 특히 일반 시..
분산시스템) 분산시스템 종류 및 Pitfalls Types of distributed systems 1) Distributed computing systems 컴퓨팅 파워를 필요로하는 서비스를 요청할 때 사용할 수 있다. 주로 공학 시뮬레이션과 같이 계산량이 많은 task를 대신 수행해주는 시스템이다. 2) Distributed information systems 우리가 주로 아는 분산 시스템은 이 부류에 들어간다. 정보를 제공해주는 시스템이다. 정보는 여러가지가 있을 수 있다. WWW나 게임도 이 부류에 들어간다. 3) Distributed pervasive systems 가장 마지막에 나온 것이다. 무선 네트워크 기능이 활성화되고 컴퓨팅 디바이스의 크기가 작아지면서 등장하였다. 분산 시스템을 제공하는 환경이 다이나믹한 환경에서 제공된다는 것이다. ..
분산시스템) 목표(4) - Scalability Goals - Scalability 가장 중요한 목적 중 하나이다. 분산 시스템은 리소스가 서로 다 흩어져있는 상황에서 많은 사용자를 서포트할 수 있으면 좋은 시스템이다. Measurement of scalability scalability는 세 가지 측면이 있다. 세 가지 모두에서 scalable한 시스템은 좋은 시스템이지만 그렇게 되기 쉽지 않다. 보통 세 가지 중 두 가지 정도에서 scalable한 시스템을 만든다. 1) Size 여기서 규모는 사용자 수 즉 사용자 규모 측면과 분산 시스템 컴포넌트 측면에서의 규모에 대한 scalability를 말한다. 많은 수의 컴포넌트로 구성하면 규모있는 분산시스템이 된다. 결국 같은 이야기다. 많은 수의 사용자를 감당하려면 많은 수의 컴포넌트가 필요하다. 분산..