아키텍쳐

[강의 정리] Distributed System 1.1: Introduction

hayz 2023. 2. 21. 13:52

#  강의 영상 

 


개요

먼저, 병렬 시스템은 동일 프로세스 안에 여러 스레드가 있는 경우로, 동일한 리소스에 대한 접근을 어떻게 제어할지 등에 관한 이슈가 존재 합니다. 이러한 병렬 시스템과 비슷하게 분산 시스템에 관하여 살펴볼 텐데, 분산 시스템은 단일 컴퓨터가 아닌 여러 컴퓨터 노드와 네트워크를 통해 연결되는 상황이라는 것이 병렬 시스템과의 차이입니다. 

 

강의 초반에 분산 시스템이란  아래와 같이 얘기합니다. 

" ... a system in which the failure of a compute you didn't even know existed can render your own computer unusable." - Leslie Lamport

직역하면, 내가 존재하는지도 몰랐던 컴퓨터의 오류로 인해 나의 컴퓨터를 사용하지 못하게 되는 시스템이다. 라고 합니다. 

사실 이 말만 들어보면 분산 시스템을 안좋게 표현한 것 처럼 느껴지기도 합니다. 하지만 이 말을 하신 분은 분산 시스템을 몇 십년간 다뤘던 분이라고 하니.. 왜 이런 말을 하셨는지,  분산 시스템에 대하여 공부하면서 이해해 볼 수 있을거라 생각합니다. 

 

보다 분산 시스템을 쉽게 정의하자면 아래와 같이 애기할 수 있습니다. 

- multiple computers communicating via a network
- trying to achieve some task together

단순히 하나의 컴퓨터가 아니라, 네트워크로 연결된 다수의 컴퓨터에서 동작하는 시스템이라고 볼 수 있습니다. 

 

분산 시스템을 공부하기에 추천되는 책 목록입니다. 

 

왜 시스템을 분산으로 만들어야 하는가?

1. 모든 시스템은 사실 원래부터 분산되어 있다고 볼 수 있다. 

- 예를 들어, 내가 다른 컴퓨터로 통신을 하려고 한다면 서로다른 두 컴퓨터가 네트워크로 연결되어 있는 상태일 것입니다. 그렇다면, 이러한 상태도 분산된 시스템이라고 큰 범위에서는 얘기할 수 있습니다. (사족: 개요에 해당하는 부분이므로 "분산"에 대한 개념을 넓게 확장하여 설명한것 같음)

 

2. 보다 안정적이다. 

- 하나의 컴퓨팅 노드가 고장이 나도, 전체 시스템에는 큰 영향없이 정상적으로 운영됩니다. 

 

3. 보다 성능이 좋다.

- 네트워크 측면에서, 컴퓨팅 노드가 여러 지역에 존재한다고 가정했을때, 나의 위치와 가까운 노드와 통신할 수 있기 때문에 빠르게 통신이 가능합니다. 

 

4. 대용량 처리를 해결하기 위해 

- 빅 데이터는 단일 컴퓨팅 노드로 연산을 진행하면 많은 시간이 소요 되므로, 여러 노드가 합세 해서 연산을 한다면 빠르게 해결할 수 있습니다. 3번의 이유와 비슷한 맥락입니다. 

 

분산 시스템의 문제

1. 네트워크에 취약하다. 

- 통신이 단절되거나, 데이터 신호가 약하다면 노드간 통신이 불가능하다.

 

2. 프로세스가 충돌 될 수 있다. 

 

3. 이러한 문제들은 모두 문제가 생길 당시 판단이 어렵고, 대처할 수 없다. 

 

그렇기 때문에, 분산 시스템을 만들때 

Fault Tolerance 한 (내결함성을 가진) 시스템을 만들기 위해 노력해야 합니다. 

 

Fault Tolerance 는 노드중 하나가 고장이 나고, 문제가 생겨도 시스템에 영향이 없는 상태로, 분산 시스템에 Fault Tolerance 를 적용하는 것은 쉽지 않은 문제입니다. 

 

위의 단점들을 고려해서.. 하나의 노드에서 실행시키기 충분산 시스템이라면 그렇게 하는 것을 추천합니다. 하지만, 실제로 분산 시스템이 필요해진 경우가 생긴다면 여러 고려해야할 것들을 판단하며 설계해야할 것이고, 앞으로의 강의에서 이러한 것들을 살펴볼 것입니다.