확장성을 위한 세가지 기술

유석현(SeokHyun Yu)·2023년 4월 11일
0

분산 시스템

목록 보기
8/27
post-thumbnail

1. 통신 지연 숨기기(Hiding communication latency)

먼 거리의 네트워크를 통해 서비스 요청을 보내야 할 경우 응답 대기 시간(communication latency)을 최소화하는 것이 핵심 기술 중 하나이다.

이를 위해 요청 애플리케이션을 비동기 통신을 사용하도록 설계하는 것이 한 가지 방법이다.

이는 애플리케이션이 원격 서비스로부터 응답을 기다리는 동안에도 계속 실행될 수 있도록 설계하는 것이다.

이를 인터럽트 기반의 단일 스레드다중 스레드를 사용하여 구현할 수 있다.

하지만 사용자가 응답을 기다리는 대화형 애플리케이션(interactive applications)과 같은 경우에는 비동기 통신을 효과적으로 사용할 수 없다.

이러한 경우, 서버에서 클라이언트로 계산 일부분을 이전하여 전체 통신을 줄이는 것이 더 나은 방법이다.

예를 들어, 양식(form)을 사용하여 클라이언트가 완성된 양식을 반환하도록 할 수도 있다.


2. 분산(Distribution)

분산(Distribution)은 구성 요소를 쪼개서 작은 부분으로 나누고, 이를 시스템 전체에 분산시키는 것을 의미한다.

이를 설명하는 뛰어난 예시 중 하나는 도메인 네임 시스템(DNS)이다.

DNS는 이름 공간을 계층적으로 구성된 도메인 트리로 나누며, 각 도메인은 서로 겹치지 않는 영역으로 분할된다.

또 다른 예시로는 월드 와이드 웹(WWW)이 있다.

웹은 각 문서가 고유한 URL 형태의 이름을 가지는 거대한 문서 기반 정보 시스템으로 보인다.

그러나 실제로 웹은 많은 서버에 물리적으로 분산되어 있으며, 각 서버는 여러 웹 문서를 처리한다.


3. 복제(Replication)

복제(Replication)가용성을 높이고, 각 구성 요소 간 부하를 균형있게 분산시켜 성능을 향상시킨다.

또한 지리적으로 넓게 분산된 시스템에서 통신 지연을 줄이는 데에도 도움이 된다.

복제의 특수한 형태인 캐싱은 자원의 사용자가 결정하는 반면, 복제는 소유자가 결정하는 것으로, 필요할 때에만 발생한다.

복제는 일반적으로 사전에 계획된다.

하지만 복제와 캐싱은 일관성 문제(Consistency problem)를 야기할 수 있다.

어느 정도의 불일치가 허용될 수 있는지는 자원의 사용 방법에 크게 의존한다.

예를 들어 브라우저에서 확인되지 않은 캐시 문서를 반환하는 것은 수분 이내에 확인할 필요가 없으므로 허용 가능하다.

그러나 전자 주식 거래나 경매와 같은 경우에는 강력한 일관성이 필요하다.

만약 두 개의 업데이트가 동시에 발생하면, 각 복제본이 동일한 순서로 업데이트되어야 한다.

이를 위해서는 전역 동기화 메커니즘(global synchronization mechanism)이 필요하다.


확장성 정리

Scalability(확장성)을 위한 기술들을 조합하고 일관성 유지에 대한 다양한 형태를 사용하는 것이 실제적으로 많은 경우 충분하다는 것이 입증되어 왔다.

크기 확장성(Size scalability)은 기술적으로 가장 쉬운 문제 중 하나이다.

단순히 기계의 용량을 늘리면 된다.

그러나 관리적 확장성(Administrative scalability)은 비기술적인 문제(nontechnical problems)를 해결해야 하기 때문에 가장 어려운 부분이다.

조직의 정치적인 문제인간간의 협력 등이 이에 해당한다.

따라서 이러한 문제를 해결하기 위해서는 기술적인 해결책 외에도 조직 내부의 인적 자원과 협력을 유지하는 것이 중요하다.

profile
Backend Engineer

0개의 댓글