노력과 삽질 퇴적물

분산 시스템 정리 본문

프로그래밍note/미분류.

분산 시스템 정리

MTG 2011. 12. 27. 17:28






개념
①  독립된 컴퓨터들의 집합이나, 사용자(end-user)입장에서는 1개의 시스템으로 인식되는 구조를 가진 시스템이다.  NW를 통신선로로 사용하기때문에 다수의 컴퓨터나 DB를 하나의 시스템처럼 활용할수 있도록 제공하는 시스템. 메시지에 기반한 통신을 사용한다.
-> 메모리나 클럭 공유는 없다.
-> N대의 컴퓨터들이 1개처럼 보임.
-> 점묘화는 가까이서 보면, 일반적인 관람에서는 하나의 면으로 보이는것처럼
-> 첩보영화나 SF물등에서 다수의 PC를 여러대 연결시켜서 슈퍼컴퓨터 대용품으로 쓰는것과 같다.

② 장점
-> economics(경제성) : mainframe보다는 저렴.
-> performance(성능) :  mainframe보다는 높은 성능.
-> reliability(신뢰성) : 시스템 일부가 다운되어도 나머지 구성원이 지탱.
-> Incremental(?) : 시스템내 자원이 추가될수록 성능 향상.
-> communication(?) : 구성원간의 통신이 쉽다(메시지 기반)
-> flexibility(융통성, 유연성) : 부하분산이 가능.
-> heterogenity(이종성) : 상이한 시스템간의 공유가 가능.

③ 단점
-> 별도의 SW가 필요.
-> 시스템에 대한 접근이 다양하기때문에 보안관리가 취약.
-> NW가 포화상태시 문제가 발생. NW가 부재인 상황이면 무용지물이 된다.

④ 분산처리와 집중처리의 차이점
분산처리(distributed) 방식
집중처리(centralized) 방식
* 그로슈의 법칙(law)가 불성립.
-> 성능과 비용에 비례하지 않음.
-> HW의 가격이 저렴해지고, 시스템 수준에서 병렬처리하는것으로 슈퍼컴퓨터에 근접한 성능이 가능하다.

* 장점 : 시분할방식보다 높은 신뢰도
            고가의 HW를 공유하기 쉽다.

* 단점
-> 접근경로가 다양해서 취약한 보안.
-> 가성비가 좋더라도 슈퍼 컴퓨터의 성능만큼은 아니다. 
*  그로슈의 법칙(law)가 성립. 
-> 대형화에 근거한 가격대와 성능으로 구성.

* 장점 : 신뢰&안정&성능&유지보수성 좋다.

* 단점 : 시스템 가동률에 잠재위험이 있다.
-> 달걀을 한 바구니에 모아놓은 격.



분산 시스템의 목적
① 자원공유
-> 다수의 노드가 NW를 통해 상호연결
-> 한 노드에 있는 사용자가 다른 노드의 자원을 사용가능.

② 투명성(transparency)
-> 물리적 은닉(?). 시스템의 구성원들을 사용자가 인식할수 없다. (사용만 가능)
-> 위치에 대한 투명성 : SW/HW 자원의 위치를 몰라도 사용가능.
-> 이동에 대한 투명성 : 자원의 위치가 변경되도 사용자는 별 지장없이 사용가능.
-> 중복에 대한 투명성 : 같은 자원이 다수여도 사용자는 1개로만 인식.
                                  가령 DNS에서 모든서버가 root서버로 작용해도 사용자에게는 하나의 root로만 인식되고 서비스를 받음.
-> 시스템장애 투명성 : 시스템 구성요소중 하나가 고장나도 사용자는 남은 구성원을 통해 서비스 이용가능.
-> 투명성을 지나치게 높이면 성능이 저하된다.

③ 개방성(openness)
-> 상이한 구성요소간의 호환&이식&확장이 가능.
-> 시스템내 자원들간의 상호작용이 가능하고, 구성원인 머신들의 플랫폼이나 언어에 상관이 없어서 인터페이스에 지장을 주지 않는다.

④ 확장성(scalability)
-> 사용자와 자원에 변동이 있어도 표면적으로 나타나지 않거나 관리자적 복잡성이 증가시키는것이 가능한 특성.
-> 구성원의 추가나 삭제에 유연서이 있는 시스템.
-> 자원의 분산, 캐싱, 자원의 복사본등을 사용해서 가능한 기술.



HW에서의 분산시스템
① 멀티프로세서
-> bus기반. bus공유로 데이터 처리에 잠재적 문제 존재.
-> 확장가능.
-> 캐시사용으로 일관성.

② 멀티컴퓨터
-> Homogeneous : 같은 제조사 / 같은 기종 / 같은 모델 / 같은 성능으로 도배한거.
                            CPU 단위연결로 낮은 트래픽. CPU를 박스 형태로 연결.
-> Heterogeneous : CPU등이 제각각이여도 사용자 입장에서는 이들의 차이에 상관없이 이용이 가능.

③ 컴퓨터들의 네트워크



SW에서의 분산시스템
시스템 설명 시스템 목적
DOS
(Distributed Operating System) 
 동프로세스와 (단일종)컴퓨터들의 연결도가 높다.
 독립적인 컴퓨터들을 다루진 못한다.
 멀티프로세서(메모리 공유 기반)
 멀티컴퓨터(메시지 기반)
 폐쇄적인 시스템
 HW자원 관리와 은닉
-> 투명성 강조
NOS
(Network Operating System)  
 이종 컴퓨터간 연결도가 느슨하다.(OOP처럼) 
 개방적인 시스템
 원거리 사용자에게 서비스 제공
-> 로컬서비스 제공 강조 
미들웨어
 NOS에서 추가적인 레이어를 사용해서 서비스 제공을 용이하게 한다.  분산 투명성



미들웨어
① 정의
-> 분산 시스템에서 단일사용자 환경을 제공하고, 사양이 다른 시스템들이 네트워크를 연결하거나 클라이어트 서버 혹은 컴퓨터간의 연결을 담당하는 시스템 소프트웨어.
-> OS와 분산 어플리케이션 사이에 위치. 각기 분리된 2개 이상의 프로그램 사이에서 매개&연합하는 프로그램.
->  (예)  ODBC/JDBC, JADE, CORBA

②  장점
-> NW로 연결된 일련성 있는 서비스를 가능하게 한다. 

③  단점
-> 성능상 문제가 있지만, HW자체의 성능향상으로 보완이 되었다.
-> 미들웨어 어플리케이션간에 중복되는 동작이 있을수 있다.

④ 기타
-> RPC : Remote Procedure Call
-> RMI : Remote Method Invocation
             JAVA전용
 RMI  CORBA
 JAVA에 한정된 기술
 별다른 인증없이도 접근이 가능. 
 다양한 언어에서 가능
 인증이 안 된 접근은 차단. 





프로세스
① 프로세스 VS. 스레드(thread)
-> 프로그램 : HW에 저장된 명령어 집합체
-> 프로세스 : 메모리상에 실행중이 프로그램.

멀티태스킹 멀티스레딩
프로세스 N개 / 1 OS 스레드 N개 / 1 프로세스

② 프로세스간 통신법
-> 신뢰성 낮은 NW상에서 연결된 프로세스간 통신에선 효율이 중요.
-> 메모리공유 : 멀티프로세서에 적합
-> 메시지기반 : NOS에 적합. 시스템내 프로세스들이 사용.



RPC
① 분산컴퓨팅이 중앙화된 컴퓨터처럼 보이게 한다.

②  메시지기반의 단점을 보완.
-> NW된 컴퓨터들을 관리
-> 클라이언트와 서버간의 통신이 가능.
-> 가상의 프로시져 호출을 위해 데이터와 컨트롤을 전달하는 것과 관련된 모든 세부사항 은닉

③ 2가지 전달방식
 파리미터 전달형  참조 전달형
-> 메시지 팩 전달
-> 쉬운 전송
-> 이기종끼리는 데이터형이 달라지므로 XDR인코딩을 사용. 
-> 포인터 값을 전송.

④ 굳이 UDP도 쓰는 이유?
-> RPC 메시지보다 작고, 패킷이 안정적
-> Stateless라서 복구가 용이하고, 클라이언트 접속량이 늘어도 수용이 가능.
-> RPC에는 잠재적 failure가 존재해서.



Statefull & Stateless
① Statefull : 시스템등에 접속하는 클라이언트들의 상태를 저장.
                  시스템 에러시 복구하기 어려움.
                  과서 모뎀, PC통신등에서 사용한 방식.

② Stateless : 시스템등에 접속하는 클라이언트들의 상태를 저장하지 않는다.
                    확장성이 좋은 방식.
                    TCP/IP등등



기타등등.
① 에뮬레이션과 가상화의 차이는?
 에뮬레이션 가상화
 HW적 접근.
 하나의 컴퓨터가 다른 텀퓨터처럼 동작
 SW적 접근.
 OS를 시스템 구소나 HW의 영향없이 설치가 가능.

 (예) VMware,  VMplayer
        XPmode, VirtualBox등등 



참고자료.
비텐펠트의 한가한 오후: 분산시스템
TXSeries for Multiplatforms Version 6.2
분산시스템