Computer 공부/Clean architecture

database architecture

살아가는 이유_EU 2024. 11. 26. 15:11
728x90
반응형

아키텍처(Architecture) 개념 설명

  1. 아키텍처의 정의
    • 시스템을 위한 물리적, 기능적 구성: 서버, 저장소, 네트워크 장비 등을 결합하여 시스템을 구축하는 방식.
    • 데이터베이스 설계에서 시스템의 구성: 아키텍처는 시스템 설계에서 중요한 역할을 하며, 이를 통해 시스템의 목적과 용도를 유추할 수 있음.
  2. IT 아키텍처
    • 효율적인 정보 시스템 구성: IT 아키텍처는 조직의 구성 요소와 그 관계를 분석하고, 이를 바탕으로 정보 시스템을 효율적으로 설계하는 방법론.
    • 서버, 운영체제, 미들웨어, 저장소 등 다양한 기술 지식 필요: 아키텍처 설계는 다양한 기술 요소에 대한 깊은 이해가 요구되며, 시스템의 목표에 맞게 적합한 구성 요소들을 결합해야 함.
    • 비용 효율적 시스템 구축: 효율적인 비용으로 필요한 시스템을 구현하는데 있어서 아키텍처 설계가 매우 중요.

아키텍처의 역사와 발전

  1. Stand-Alone (1980년대까지)
    • 특징: 네트워크 없이 독립적인 DBMS 서버만으로 시스템을 운영.
    • 장점: 시스템 구축이 간단하고 보안성이 뛰어남.
    • 단점: 물리적으로 분리된 장소에서는 접근이 불가능하며, 한 명만 사용할 수 있음.
  2. Client/Server (1990년대 ~ 2000년대)
    • 특징: 클라이언트와 서버가 네트워크로 연결되어 여러 사용자가 동시에 시스템을 사용할 수 있음.
    • 장점: 원격지에서도 사용 가능하고 다수의 사용자가 동시에 이용 가능.
    • 단점: 인터넷 환경에서는 보안 위협이 존재하고, 각 사용자 PC에 애플리케이션을 설치해야 하는 불편함.
  3. WEB 3 계층 (2000년대 ~ 현재)
    • 특징: 웹 서버(WEB), 애플리케이션 서버(WAS), 데이터베이스 서버(DBMS)로 구성된 3계층 아키텍처.
    • 장점: 보안이 강화되며, 비즈니스 로직을 애플리케이션 계층에 집중시켜 관리가 용이.
    • 단점: 이전의 방식들과 비교할 때 특별한 단점은 없음.
  4. 클라우드 시대: 기존 아키텍처를 넘어서 다양한 클라우드 기반의 새로운 시스템 아키텍처들이 등장.
    • 서버리스: 서버가 존재하지 않는 것처럼 운영되는 서버리스 모델도 적용 가능.

가용성(Availability)과 확장성(Scalability)

  1. 가용성
    • 정의: 시스템이 정상적으로 사용 가능한 상태를 유지하는 정도.
    • 계산식: 정상 작동 시간(Uptime)을 전체 시간(Uptime + Downtime)으로 나눈 값.
    • 고가용성(HA): 장애 없이 시스템을 지속적으로 운영할 수 있는 능력.
  2. 확장성
    • 정의: 시스템의 확장이 쉽고, 대규모 변화를 위해 재설계나 재설치 없이 용량을 늘릴 수 있는 능력.
    • 클라우드 시스템의 장점: 클라우드 시스템은 뛰어난 확장성 덕분에 더욱 주목받고 있음.

가용성 확보 전략

  1. 고품질-소수 전략
    • 설명: 높은 품질의 DBMS 서버 몇 대만 사용하여 시스템을 운영.
    • 장점: 서버의 신뢰성 및 안정성이 높음.
  2. 저품질-다수 전략
    • 설명: 품질이 낮은 DBMS 서버 여러 대를 사용하여 시스템을 운영 (클러스터링 기법).
    • 장점: 서버 수를 늘리면 장애 확률이 낮아지고, 성능 개선 가능.

DB 서버 다중화

  1. 다중화의 어려움
    • DB 서버는 영속적인 데이터 저장을 담당하기 때문에 다중화가 어려운 측면이 있음. 데이터 정합성도 중요한 요소임.
  2. DB 서버 다중화 유형
    • Active-Active: 두 개의 DBMS 서버가 동시에 동작하고, 저장소는 하나를 공유.
    • Active-Standby: 평소에는 Active 서버만 작동하고, 장애 발생 시 Standby 서버가 역할을 대신.
    • 리플리케이션: 서버와 저장소를 복수 세트로 준비해 실시간으로 동기화. 주로 재해 복구(DR) 시스템에 사용.
  3. Active-Active
    • 장점: 장애 시 거의 다운타임 없이 시스템을 운영할 수 있음. 성능 상 유리.
    • 단점: 저장소 병목 현상이 발생할 수 있음.

- 평소에(장애 상황이 아닌 경우)도 2대의 서버가 운영되므로 성능 상 유리
- 저장소의 병목 현상이 있을 경우 순간적으로 성능에 문제가 발생하는 경우가 있음
- Oracle DBMS의 RAC가 대표적인 Active - Active 다중화 제품임
- 국산 DBMS인 TIBERO도 TAC라는 Active - Active 다중화 기술을 지원함

 

 

  1. Active-Standby
    • 장점: 비용이 적고 관리가 용이.
    • 단점: 장애 시 다운타임이 발생.

 

- Cold-Standby : 장애 상황이 없을 때는 Standby 서버가 작동하지 않고 Active 서버가 장애일 때만 작동
- Hot Standby : 장애 상황이 없을 때에도 Standby서버가 작동 --> Active 서버에 장애 발생 시 Downtime 시간이 감소됨
- 저장소 병목으로 인한 성능 상 이슈는 없음
- 무조건 1대의 서버로만 운영되므로 그로 인한 성능 상 불리한 점이 존재
- Active - Active 구성에 비해 비용상 유리하고 관리가 용이함
- 대부분의 DBMS가 채택하는 방식

  1. 리플리케이션
    • 장점: 장애 발생 시 서비스가 중단되지 않음.
    • 단점: 데이터 동기화가 중요하며, 높은 비용이 듦.


성능을 위한 다중화

  1. Shared Disk vs. Shared Nothing
    • Shared Disk: 여러 서버가 동일한 저장소를 공유하지만, 저장소 병목 현상이 발생할 수 있음.
    • Shared Nothing: 각 서버가 별도의 저장소를 가지고 병렬 처리하여 성능을 최적화. 샤딩 기술이 대표적.

  1. 샤딩(Sharding)
    • 정의: 데이터를 수평적으로 나누어 여러 서버에 분산 저장하여 처리 성능을 높이는 기술.
    • 특징: 각 샤드는 독립적으로 동작하며, 데이터 분산으로 부하를 분산시킴.

 


최적 아키텍처 설계 전략

  1. 다양한 조건 고려
    • 가용성, 신뢰성, 성능, 보안, 비용 등 다양한 요소를 종합적으로 고려해야 함.
    • 비즈니스 성장성 및 사용자 수 증가에 대한 예측도 중요.
  2. 비용과 시간의 고려
    • 한번 구축한 시스템은 변경에 시간이 많이 소요되며, 비용도 많이 들기 때문에 초기 설계가 중요.
728x90
반응형