다중화 - DB 서버가 여러대로 나뉘어져 한대가 고장나도 다른 서버가 동작하여 서비스의 정지를 막는다.
아키텍처 - 시스템을 만들기 위한 물리 레벨의 조합. 어떤 기능을 가진 서버를 준비하고 어떠한 저장소나 네트워크 기기와 조합해서 시스템 전체를 만들기 구상하는 것. 즉, 하드웨어와 미들웨어의 구성.
> 이 구성을 시스템이 완수해야 할 목적과 비교하면서 결정하는 것이 '아키텍처 설계'
데이터베이스 아키텍처의 역사
1. Stand-alone(~1980년대)
2. 클라이언트/서버(1990년대~2000년대)
3. Web 3계층(2000년~현재)
Stand-alone
데이터베이스가 동작하는 머신이 LAN이나 인터넷 등의 네트워크에 접속하지 않고 '독립되어' 동작하는 구성. DBMS와 애플리케이션의 소프트웨어는 같은 DB서버에서 동작한다. 데이터베이스를 사용하고 싶은 유저는 DB 서버가 설치된 장소까지 물리적으로 접근해야됨
단점
1. 물리적으로 떨어진 장소에서 접근할 수 없다.
2. 복수 사용자가 동시에 작업할 수 없다.
3. 가용성이 낮다.
> 서버가 1대밖에 없어 장애 발생시 서비스가 정지함.
4. 확장성이 부족하다.
장점
구축이 매우 간단해서 소규모 작업이나 테스트를 빨리할 수 있다.
클라이언트/서버
단점
1. 인터넷에서 직접 데이터베이스에 접속하는 것에 대한 보안 위험
2. 불특정 다수의 사용자가 사용하는 클라이언트에서의 애플리케이션 관리비용이 많이 든다.
> 클라이언트/서버 시대에는 PC에 애플리케이션을 설치해 동작하게 하였다.(네이티브 애플리케이션) 때문에 각각의 버전관리나 버그 수정 버전을 배포하는데 비현실적이 비용이 필요하다.
Web 3계층
1. 웹서버 계층
> 웹 서버는 클라이언트로부터 접속요청(HTTP 요청)을 직접 받아서 그 처리를 뒷단의 애플리케이션 계층에 넘기고 그 결과를 클라이언트에 반환 한다.
2. 애플리케이션 계층
> 웹 서버로부터 연계된 요청을 처리하고, DB서버에 접속해서 데이터를 추출하고 이를 가공한 결과를 웹 서버로 반환한다.
3. 데이터베이스 계층
가용성을 높이는 2가지 전략
1. 고품질-소수전략
> 시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 낮게 억제해서 가용성을 높인다.
2. 저품질-다수전략
> 시스템을 구성하는 각 컴포넌트를 병렬화하여 가용성을 높인다.
클러스터란?
> 컴포넌트를 병렬화하는 것을 '클러스터링(Clustering)'이라고 한다. 동일한 기능의 컴포넌트를 복수 개 준비해 한 개의 기능을 실현한다는 의미
FT 서버(Fault Tolerant Server) - 1대의 물리 머신의 신뢰성을 매우 높이고 장애 발생률을 매우 낮게 억제하도록 만들어져 있다. 전환시간이 짧고 무정지에 가까운 서비스를 계속하는 것이 가능하다는 장점이 있다. 하지만 FT 서버도 내부는 CPU, 메모리, 네트워크 인터페이스 등 부품을 다중화해서 신뢰성이 높도록 설계된 부분이 많다.
DB서버의 다중화
1. Active-Active 클러스터를 구성하는 컴포넌트를 동시에 가동한다. (Oracle, DB2 만 가능)
> 장점 1. 시스템 다운시간이 짧다 2. 처리 성능이 좋다
> 단점 저장소가 병목이 될 수 있다
2. Active-Standby 클러스터를 구성하는 컴포넌트 중 실제 가동하는 것은 Active, 남은 것은 대기(Standby)하고 있는다.
> 서버가 전환될 때 시차가 생기고 그사이 시스템은 서비스가 다운된다.
> 1. Cold-Standby 평소에는 Standby DB가 작동하지 않다가 Active DB가 다운된 시점에 작동하는 구성이다.
> 2. Hot-Standby 평소에도 Standby DB가 작동하는 구성이다.
> 가격은 Active-Active, Active-Standby(Hot-Standby), Active-Standby(Cold-Standby) 순이다.
리플리케이션(Replication, 복제) 이란?
> DB 서버와 저장소 세트를 복수로 준비하는 것. 지진이나 태풍을 방지하기 위해 다른 1세트를 멀리 떨어진 위치에 놓는 것.
> 부하분산에 이용하여 성능 향상을 위해서도 사용된다.
> 매번 갱신되는 Active와 동기화가 필요한 Standby 측이 있는데 동기화의 기간이 DB서버 성능과 트레이드오프 관계이다.
> MySQL에서는 Active를 '마스터', Standby를 '슬레이브'라고 부른다. 리플리케이션에서 일반적으로 사용되는 방식이다.
Shared Disk
> 복수의 서버가 1대의 디스크(저장소)를 공유하는 구성
Shared Nothing
> 서버와 저장소 세트를 늘려서 저장소간에 데이터를 공유하지 않는다.
> Shared Disk방식의 저장소 병목 현상을 방지하기 위한 기술로 세트에 비례해서 처리율이 증가한다.
> 구조가 간단하고 비용대비 성능이 좋다. 단, 저장소간에 공유하지 않아 각각의 DB 서버가 동일한 1개의 데이터에 액세스할 수 없다.
> 커버링(Covering) - DB 서버가 다운되었을 때 다른 DB 서버가 이를 이어받아 계속 처리하는 방식