본문 바로가기
DATA

분산시스템 이해

by bzerome240 2023. 3. 18.

 

분산 시스템이 필요한 이유

데이터베이스를 중심으로 여러대의 서버로 scale-out이 가능하면서도 상태와 데이터 공유가 가능하고 유저가 사용하는 기능에는 변화가 없는 소프트웨어가 필요해졌다.

 


 

분산 시스템 특징

Concurrency

자원은 공유하면서 리소스 내에서 동시에 여러가지 작업을 수행한다.

동시 실행 자원을 늘려서 처리량을 늘릴 수 있다.

No Global Clock

시스템의 각 부분이 비동기식으로 동작한다. 어떤 부분의 상태 때문에 다른곳에 Lock이나 Bottleneck이 걸리면 안된다.

Independent Failure

시스템의 한 부분의 장애가 전체 시스템에 장애를 주면 안된다.

 


 

분산 시스템 고려 요소

1. Heterogeneity

서로 다른 시스템에 설치 가능해야 한다.

OS, HW 관계없이 일관된 개발을 할 수 있는 언어를 선택한다. ex) Java, Golang 등 (C, C++는 라이브러리 dependency가 커서 어렵다)

2. Openess

서로 다른 요소 사이의 연결과 확장, 상호 운용이 가능해야한다.

3. Security

권한 제어, 접근 제어 등이 가능해야한다.

  • Cofidentially : 권한이 없다면 공개 불가
  • Integrity : 허가되지 않은 방법으로 변경할 수 없다.
  • Availability : 권한이 있다면 접근 가능해야 한다.

4. Scalability

시스템 자원이나 사용자 수에 따라 확장 가능해야한다. ex) 수평적 확장

성능이 좋아지고, 처리량이 많아지고, 가용이 높아져야 한다.

고려해야할점: 물리적 자원의 비용, 성능 병목 ex) DNS

5. Failure Handling

장애에 대한 대응을 자동화로 할 수 있어야 한다.

Detecting failure-> Masking failure -> Tolerating failure -> Recovery failure -> Redundancy

6. Concurrency

여러 client가 하나의 공유 자원에 접근하는 동시성 문제를 해결해야 한다.

7. Transparency

사용자로부터 내부에 있는 정보를 보이지 않게하고 투명성을 달성해야한다.

 


 

Base Principle

Basically Avaliable - 전체가 이용 불가능한 상태는 없다. 부분적인 장에는 가능 ex)replica를 만든다, 한 종류의 data를 여러 노드에 분산한다.

Soft State

응답하는 데이터 상태는 inconsstency할 수 있다.

Eventually Consistent

입력된 데이터는 약간의 지연이 있을수 있지만 결국언젠가 조회가 된다.

 

CAP Theorem

CAP 로 대표되는 특징 중 분산시스템에서는 3가지를 모두 지원할 수 없고 한가지는 포기해야 실제 소프트웨어 구현이 가능하다는 딜레마

Trade-off를 고려해 CA, AP를 가장 많이 선택한다.

Availability는 빠질 수 없는 가장 중요한 요소이다.

Consistency (일관성)

분산된 환경이라도 모든 동일한 요청에 대한 응답은 같다.

동시에 여러개의 병렬 요청에도 같은 결과를 제공한다.

Availability (가용성)

어떤 상황에도 기능 이용이 가능하다.

분산 환경 일부에 장애가 있어도 전체는 문제 없다.

Partition-Tolerance (분할내성)

분산시스템을 구성하는 노드간 통신 문제가 발생해고 각각의 부분 시스템은 정상 동작한다.

 

CA

안정적인 시스템 운영. 데이터 정합성이 중요한 경우 선택한다.

ex) 전통적인 RDBMS, MongoDB

 

AP

안정적인 시스템 운영. 데이터 정합성 보장은 불가하다. 특정 시점에 write 동기화 여부에 따라 데이터가 달라질 수 있다.

Eventual Consistency : 시간이 지나면 결과적으로는 consistency가 보장된다.

ex) Cassandra, HBase 등의 모던 분산 DB / Druid 등의 OLAP 시스템

 

 

PACELC Theorem

CAP 이론의 단점들을 보완하기 위해 나온 이론

P(partition)상황에서 A(availability)과 C(consistency)의 상충 관계와 E(else 정상) 상황에서 L(latency)과 C(consistency)의 상충 관계를 설명한다.

Partition -> Availability & Consistency Else Latency & Consistency

 


 

결론

내가 원하는 시스템의 요구사항에서 어떤 것을 원하는지 정의가되고 선택할 수 있는 기술 요소들에서 구현가능한지를 파악후 trade-off를 감안해서 시스템을 구현하고 요구사항이나 기능을 조정해야 한다.

 


 

분산 시스템의 use case

 

1. Software LoadBalancer

 

2. 분산 메시지 큐 Kafka

여러개의 큐를 두고 처리량을 늘린다.

단점: 하나의 Topic에는 여러개의 partition으로 구성되는데

각 partition별로는 순서를 보장할 수 있지만 전체 Topic에 대해서는 순서를 보장할 수 없다.

 

3. 분산 데이터 저장소

대용량의 분산 시스템이 가장 필요한 곳

대량의 데이터를 나누어 저장하면서도 유실되면 안되고 언제든 조회 가능해야한다. ex) Hadoop

 

 

728x90
반응형

댓글