뜌릅
분산컴퓨팅 개요 본문
분산컴퓨팅이란
여러개의 컴퓨팅 요소들이 하나의 시스템을 이룬 것이다. 사용자 입장에서는 하나의 시스템으로 보이는 특징을 갖는다.
분산컴퓨팅을 이루는데에 생기는 문제점.
위에서 분산 컴퓨팅은 여러개의 컴퓨팅 요소(노드)들이 하나의 시스템을 이루었다고 했다. 이 요소들이 하나의 시스템처럼 보이기 위해서는 동기화와 협력을 할 줄 알아야한다. 하지만 각 노드들은 독립적으로 Computing을 수행한다. global clock이 존재한다면 쉬운일지만 분산 컴퓨팅에는 공유되는 global clock이 존재하지 않는다.
분산컴퓨팅을 하는데에 다음과 같은 2가지 문제점이 발생한다.
1. 노드간에 의사소통을 어떻게 할것인가?
2. 노드간에 의사소통을 할 때에 해당 노드가 권한을 침해하였는지 어떻게 아는가?
이 2가지 문제점을 해결해야 비로소 분산컴퓨팅은 시스템으로서 동작할 것이다.
우리가 분산을 통해 얻고자 하는 것
1. 공유 리소스 지원: 공유가능한 리소스가 있으면 물리적으로 분리되어있어도 분산시스템을 통해 접근가능하다.
P2P, Cloud, 스트리밍 서버등이 존재한다. 여러개의 서버는
2. Distribution Transperency: 분산 컴퓨팅이 분리 된게 보이지 않게 한다.
Distribution Transperency에는 위와 같은 타입들이 존재한다.
분산화를 투명하게 진행하는데에 완벽하게 하는 것은 불가능하다. 먼저 분산화된 노드들간의 Communication Latency을 해결하기 힘들며, 위에서 말한 Failure가 발생한 경우 완벽한 Recovery는 어렵다. Full Transperency는 매우 큰 코스트가 들게 되는데, 완전히 동일한 레플리카를 갖고 있어야 하기 때문이다.
3. Oppeness: 개방성. 누구나 시스템 일부로 들어올수있으면 개방적이다고 open이라고 말함.
노드들은 서로 통신이 가능해야 한다. 이를 위해 다음의 4가지가 필요하다.
- 표준이 정해진 잘 정의된 Interface을 통해 통신한다.
- interoperate: 시스템은 상호 운용가능한 Interface 요건만 만족시키면 된다.
- portability: 해당 Interface는 권한이 존재하는 모든 노드들이 사용할 수 있어야한다.
- extensible: 시스템은 Interface의 요건만 만족시키면 쉽게 기능을 추가하고 수정할 수 있어야 한다.
4. Scalability: 노드를 늘리고 줄이는 것을 말한다. 참고로 Elastic는 늘어나고 줄어나고를 말한다. AWS에서의 Elastic의 의미인 것을 처음 알게 되었다.
유저와 프로세스가 증가하게 될 경우의 Size Scalability와 노드간의 물리적 거리가 증가할 경우를 고려하는 geographical Scalability, 여러 개의 도메인 관리적인 측면에서의 Administration Scalability가 존재한다.
Scalability 기법
1. 비동기 처리.
Scalability가 커지면서 통신이 힘들어진다. 해당 통신을 비동기로 처리하면 쉽게 가능해진다. 비동기로 처리하므로 Client의 효율이 올라가게 되는 장점이 있으나, 모든 어플리케이션이 이 모델에 적합한것은 아니라는 것이다.
2. 파티셔닝
첫번째는 서버에서 체크폼을 하게 되어 Distribution이 서버에서 일어나게 된다., 두번째는 클라이언트에서 체크를 하여 서버의 Cost을 절약할 수 있는 장점이 있다.
3. 복제와 캐싱
수정시 복사된애들의 전파가 자동으로 이루어 진다. 복제를 하게 되면 스케일링이 좋아지며 가까운 Copy로 이동하면서 이용성도 증가하게 된다. CDN을 생가하면 된다.
하지만 여기에도 문제가 생기는데, 한 복제에서 변경이 이루어지면 다른 복제에서도 반영해야 한다는 것이다. 일관성 유지가 힘들다. 이러한 global propagation을 통해 일관성을 유지하면 매우 큰 트래픽이 일어나므로 타협을 해야 한다고 한다.
분산컴퓨팅에 대해서 갖게 되는 오해들이 존재한다.
- 네트워크는 신뢰가 있다.
- 네트워크는 안전하다
- 네트워크는 homogenous하다. (모든 노드는 동일하지 않다.)
- topology는 변하지 않는다.
- 지연시간은 0이다.
- BandWidth는 무한하다.
- 전송비용은 0이다.
- 1명의 관리자가 존재한다.
Overlay Network
오버레이 네트워크는 각 노드들은 자신들과 같은 계층에 있는 노드들하고만 연결이 가능한 네트워크이다. Physical 네트워크의 노드들은 그들끼리만 연결이 되고, 그 위의 Social 네트워크 노드들은 그들끼리만 연결이 된다. 대표적으로 p2p네트워크가 존재하며 2가지 타입이 존재한다.
1. Structured: node의 이웃이 프로토콜에 의해서 결정이된다. 즉, topology는 프로토콜에 의해서 결정이 됨.
2. UnStructured: 각 노드는 시스템에서 랜덤적으로 선택된 다른 노드들로 이웃을 구성한다.
Single Coherent System
이걸 어디서 언제 어떻게 사용하든지 동일한 시스템으로 보여야 한다. web이 제일 대표적인 분산 컴퓨팅 시스템이다. 사용자는 실제 데이터가 어디에 저장되는지, 어디서 계산이 수행되는지는 알 필요가 없다. 하지만 이 분산을 Failure가 발생했을 경우 100퍼센트 지원하는건 힘들다. 빠르게 Recovery을 하는 것은 매우 힘들며, 일부를 포기해야 한다고 한다.
MiddleWare
middle ware는 공통적으로 사용되는 컴포넌트와 함수들이다. 쿠버네티스가 대표적인 Middle Ware이다.
docker의 위에 올라가서 application에게 contanier 환경을 제공한다. Middle Ware는 Coherent 시스템을 만드는데에 근간이라고 . 할수 있으므로 중요하다.
그림을 보면, local os인 노드 4개가 있고 application B는 2,3에 겹쳐있다. 또 모든 os가 다 다른 os일수도 있다.
하지만 middleware는 아래의 os의 디테일한 차이를 제거하고 공통적으로 사용되는 컴포넌트와 함수들을 위의 application에게 제공해줄 수있다. middle ware가 아래 os들의 차이를 제거해 주는 것이다.
분산시스템의 3가지 타입
1. 컴퓨터 시스템
2. Distributed 시스템
3. Pervasive System
Parallel Computing
왼쪽은 멀티 프로세스 시스템으로 여러개의 프로세스가 동일한 메모리를 공유한다. concurrent access을 수핸한다.
오른쪽은 multicomputer으로 독자적인 메모리를 갖는다.
Distributed shared memory systems
멀티프로세서는 프로그램하기에 쉽지만 프로세서의 수가 증가하면 공유메모리에 대한 오버헤드가 커져서 성능이 떨어진다.
이를 해결하기 위해선 멀티컴퓨터의 위에 공유메모리 모델을 구축해야 한다. 가상 메모리 기법을 통해서, 로컬이 아닌 다른 컴퓨터의 address로 메모리를 맵핑시키는 방법이 있다. 하지만 현재로서는 . 잘안쓰인다고 한다.
Cluster Computing & Grid Computing
쿠버네티스와 같은 것을 클러스터 컴퓨팅이라고 한다. 클러스터의 목적은 병렬적으로 Computing을 수행하는 것이며 특징은 모든 컴퓨팅 노드가 homogeonous하다.
Grid Computing의 경우, Homogenous하지 않고, 다른 스펙을 갖으며 전세계에 흩어져 있을수 있다. 이들이 협력을 하게 하는것은 매우 어려운데 이를 위해 조직을 가상화해서 그린다.
Cloud Computing
- Hardware: 프로세서, 라우터, 파워, 쿨링등등 고객들은 이것들을 . 잘보지 못한다.
- Infrastructure: 가상화된 기술을 배포한다. 가상화된 서비스를 제공한다.
- Platform: 플랫폼 형태로 서비스를 제공한다. S3같은 서비스이다.
- Application: 구글 스프레드 시트 같은 것을 지칭한다. 어플리케이션 형태로 서비스를 제공한다.
How to Integrate application.
어플리케이션간 통신을 할때 자주 사용되는 트랜잭션이다. Nested Transaction은 SubTransaction으로 나뉜다. 다음의 예시는 비행기와 호텔을 동시에 예약하는 경우로서, 원자성에 의해 둘다 성공하거나 실패하는 경우만 일어나게 한다.
이러한 Nested Trnasaction을 위해 TPM Transaction Processing Mointer 기법을 사용한다.
트랜잭션 프로세싱 모니터는 Application을 데이터 관점에서 통합하게 해준다.
Data 관점이 아닌 Communication관점에서의 통합으로 Remote computer Procedure Call (RPC)방법과 Message Oriented MiddleWare (MOM)이 존재한다.
RPC의 경우 LPC와 같이 작동하게 하기 위해 메세지로 패키징하여 해당 컴퓨터에 함수를 콜하는 것이다.
MOM의 경우 메세지 큐와 같다. 이벤트가 발생할 경우 Published하고 해당 컴퓨터에 Subscribe하고 있는 컴퓨터들에게 이벤트가 전달된다.
Pervaisive Systems
다음세대의 분산컴퓨팅이라고 보면 된다. 매우 경량화되고 이동가능하며 임베디드한 노드들로 이루어져 거대한 컴퓨팅시스템을 구축한다. 자연 생태계와 같다.
- 유비쿼터스
- 모바일 컴퓨팅 시스템: 위치가 계속 바뀌어도 가능해야 함. 이를 위해 지속적으로 위치를 체크하고 disruption-tolerant-networking을 구축한다. 한번에 모았다가 보내는 식으로 구성한다.
- 센서시스템
'분산컴퓨팅' 카테고리의 다른 글
분산컴퓨팅 P2P (1) | 2023.10.30 |
---|---|
분산컴퓨팅 - 아키텍처 (0) | 2023.10.30 |