[요약집] 데이터베이스와 아키텍처 구성

Updated:

데이터베이스와 아키텍처 구성

아키텍처

  • ‘시스템을 만들기 위한 물리 레벨의 조합’ 이란 의미로 사용한다.
  • ‘어떤 기능을 가진 서버를 준비하고 어떠한 저장소나 네트워크 기기와 조합해서 시스템 전체를 만들 것인가’ 즉, 하드웨어와 미들웨어의 구성을 가르킨다.

데이터베이스의 아키텍처. 개요

  • stand-alone
    • 데이터베이스가 동작하는 머신(DB 서버)이 LAN이나 인터넷 등의 네트워크에 접속하지 않고 독립되어 동작하는 구성이다.
    • 데이터베이스의 미들웨어(DBMS)와 애플리케이션의 소프트웨어는 같은 DB서버에서 동작하므로 DB서버가 설치된 장소까지 물리적으로 접근해서 사용해야 한다.
  • 클라이언트/서버
    • 서버 1대에 복수 사용자(클라이언트)의 단말이 접속하는 구성이다.
    • 인터넷에서 접속하므로 물리적 거리에 상관없이, 그리고 복수 사용자가 접속할 수 있다.
    • 그러나 직접 데이터베이스에 접근하므로 보안상 위험과 클라이언트에서의 애플리케이션 관리 비용이 많이 든다.
  • Web 3 계층
    • 비즈니스 로직을 실행하는 애플리케이션을 서버에서 관리해 비용을 절감시키기 위해 제시된 구성이다. Web 3 계층은 3가지 계층의 조합으로 이루어진 모델이다.
      • 웹 서버 계층 <-> 애플리케이션 계층 <-> 데이터베이스 계층
    • 클라이언트가 직접 데이터베이스에 접근하지 않고 웹 서버와 애플리케이션 서버를 거쳐서 접근하므로 보안에 유리하다.
    • 클라이언트로부터 직접적인 접속요청을 받는 역할을 웹 서버 계층에 한정한다.
    • 클라이언트가 아닌 애플리케이션 계층에서 비즈니스로직을 수행하므로 비용이 절감된다.

데이터베이스와 아키텍처. 가용성과 확장성의 확보

  • 가용성을 높이는 2가지 전략
    • 심장 전략(고품질-소수 전략) : 시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 낮게 억제하여 가용성을 높인다.
    • 신장 전략(저품질-다수 전략) : ‘사물은 언젠가 망가진다’ 라는 체념을 전제로 여분을 준비해 가용성을 높인다.
  • 클러스터
    • 신장 전략처럼 동일한 기능의 컴포넌트를 병렬화하는 것을 ‘클러스터링’이라고 한다. 시스템 세계에서는 ‘동일한 기능의 컴포넌트를 복수개 준비해 한 개의 기능을 실현한다’는 의미로 사용한다.
    • 클러스터 구성으로 가동률을 높이는 것을 ‘여유도를 확보한다’ 또는 ‘다중화’ 라고 한다.

DB 서버의 다중화 - 클러스터링

  • 가장 기본적인 다중화
    • DB 서버만을 다중화하고 저장소는 하나만 두는 구성. DB 서버가 두 대가 있다면 두 가지 구성으로 나뉜다.
      • Active-Active.: 클러스터를 구성하는 컴포넌트(DB 서버)를 동시 가동한다.
      • Active-Standby : 실제 가동하는 것은 Active, 남은 것은 대기(Standy)하고 있는다.
    • Active-Active 구성
      • 복수의 DB 서버가 동시에 동작하고 있으므로 한 대에서 장애가 발생해도 처리를 계속할 수가 있다.
      • 각 DB서버의 CPU나 메모리가 동시에 가동되므로 처리 성능이 향상된다.
    • Active-Standby 구성
      • Active인 DB 서버에 장애가 생기면 Standby인 DB 서버가 장애를 인식하고 수십초에서 수분 안에 서비스를 재가동한다. 그 사이에는 서비스가 불능상태가 된다.
      • Active-Standby 구성은 다시 두 개의 구성으로 나뉜다.
        • Cold-Standby : 일반적인 Active-Standby의 특징이다.
        • Hot-Standby : 평소에도 Standby DB가 작동하는 구성으로 서비스 재가동을 위한 전환 시간이 짧다.

DB 서버의 다중화 - 리플리케이션

  • 리플리케이션이란 DB 서버와 저장소 세트를 복수로 준비해 두어 데이터를 복제(다중화)해 데이터 손실을 방지한다.
  • 지진이나 화재 등으로 저장소가 부서질 것에 대비해 멀리 떨어진 곳에 다른 1 세트를 두는 것이다.

성능을 추구하기 위한 다중화 - Shared Nothing

  • Active-Active 구성에서는 복수의 서버가 1대의 저장소를 공유하기 때문에 병목현상이 생길수 있다. 이런 구성을 ‘Shared Disk’ 라고 한다.
  • Shared Nothing : 네트워크 이외의 자원을 모두 분리하며 아무것도 공유하지 않는 방식이다. 즉, DB 서버와 저장소 세트를 복수개로 늘려서 저장소가 병목이 되는 것을 방지해 처리율을 증가시킨다. 리플리케이션과 햇갈릴 수 있으나 리플리케이션은 한 세트의 DB 서버가 다른 세트의 DB서버와 동기화를 하여 저장소의 데이터를 갱신하지만 Shared Nothing은 한 세트와 다른 각 세트들이 데이터를 공유하지 않는다.

Categories:

Updated:

Leave a comment