Chapter03. 데이터베이스 아키텍처

2022. 6. 30. 14:33Database/데이터베이스와 SQLD 합격패스 Online.

3-1 아키텍처(Architecture)란
- 시스템을 만들기 위한 물리 레벨의 조합, 데이터베이스 설계에서 시스템의 구성, 아키텍처 통해 시스템의 용도와 목적 추측 가능

3-2 아키텍처 역사와 개요
- Stand-alone > 클라이언트/서버 > WEB 3계층 (WEB, WAS, DBMS)
> Stand-alone 단계 (DBMS 관점)
 DBMS 서버가 네트워크 접속 없이 독립적으로 작동, 20세기 현대적 컴퓨터의 최초 등장 시기
 장점
     구축 과정이 간단함(소규모 작업 및 테스트를 빨리 처리할 수 있음)
    높은 보안(네트워크 연결 불가)
 단점
     물리적으로 떨어진 장소에서 접근 불가
     복수 사용자가 동시에 작업 불가(1명만 이용가능)
     낮은 가용성 (Availability) – (서버가 단 1대임)
    확장성 부족(성능개선 여지가 부족함)
    


 클라이언트/서버 단계 (DBMS 관점)
 네트워크 연결을 통한 복수 사용자가 동시에 사용가능, DB 서버 한 대에 복수 사용자가 접속하는 구성이 주를 이룸
 장점
     원격지에서도 사용 가능
     복수의 사용자가 동시에 사용가능
 단점
     인터넷 환경에서 접속 시 보안이 위험
     각각의 사용자 PC에서 애플리케이션 설치(수정 및 배포의 어려움 존재)
    


 WEB3 계층 (DBMS 관점)
 애플리케이션을 WAS 서버에서 관리, 시스템을 3가지 계층의 조합으로 인식하기 시작함 (WEB, WAS, DBMS)
 장점
     직접적인 접속 요청을 웹서버 계층에 한정하여 보안이 향상
     애플리케이션 계층에 비즈니스 로직이 집중됨(관리의 용이성 및 비용 절감)
 단점
     Stand Alone 및 클라이언트 서버 방식에 비해 크게 단점이 존재하지 않음
    



3-3 가용성과 확장성 확보
 가용성(Availability)
- 서버와 네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용 가능한 정도, 가동률
- 가용성(Availability) = 정상적인사용시간(Uptime) / 전체사용시간(Uptime+Downtime)
- 고가용성(HA, High Availability)
-


- 가용성이 100이라하면 단 한번도 장애없이 동작한 시스템을 뜻
-


-



 확장성(Scalability)
- IT 시스템에서 대규모적인 재설계 및 재설치가 필요없이 확장이 얼마나 쉽고 가능한지에 대한 용이성
- 클라우드 시스템

 단일 장애 점 (SPOF, single point of failure)
- 동작하지 않으면 전체 시스템이 중단되는 요소
- 높은 가용성을 추구하는 네트워크, 소프트웨어 애플리케이션, 상용 시스템에 단일 장애점이 있는 것은 바람직하지 않음
- 높은 신뢰성을 요구하는 시스템은 단일 컴포넌트에 의존하지 않는 것이 좋음 (ex. 금융권 시스템)

 신뢰성 VS 가용성
- 신뢰성
 하드웨어나 소프트웨어가 고장 나는 빈도 및 고장 기간
 컴포넌트 자체의 문제
- 가용성
사용자 입장에서 시스템을 어느 정도 사용할 수 있는가
 시스템 전체 수준의 문제
- 신뢰성이 낮아도 여러 대의 서버를 구축하는 클러스터링 기법(저품질 다수)을 통해 가용성 확보가 가능

3-4 DB 서버의 다중화
 DB 서버의 다중화
- 다른 컴포넌트에 비해 다중화 어려움
- 영속 (Persistence) 계층의 특성
데이터 장기간 보존 필요
 일시적 처리만 담당하는 애플리케이션 서버 등과 차이
데이터 다중화 시 갱신 시 데이터 정합성 중요
-


 Active-Active 구성 다중화
-


 Active-Standby 구성 다중화
-


 리플리케이션 다중화
-



3-5 성능 추구를 위한 다중화
 Shared Disk 와 Shared Nothing
-


 성능 비교
-



 Shard
- 데이터베이스 샤드(database shard)는 데이터베이스나 웹 검색 엔진의 데이터의 수평 분할이다. 개개의 파티션은 샤드(shard) 또는 데이터베이스 샤드(database shard)로 부른다. 각 샤드는 개개의 데이터베이스 서버 인스턴스에서 부하 분산을 위해 보유하고 있다
- 데이터베이스 내의 일부 데이터는 모든 샤드에 존재하지만 일부는 하나의 샤드에만 존재한다. 각 샤드 또는 서버는 이 데이터 부분을 위해 하나의 소스로서 동작한다

3-6 적합한 아키텍처를 설계하기 위해
 최적의 아키텍처 설계 전략
- 가용성, 신뢰성, 재해대책, 성능, 보안, 조직, 비용 등 다양한 조건을 고려 해야함
- 해당 비즈니스의 성장성이나 사용자의 유입 예측 도 감안해야 함
- 한번 구축하면 변경 시 비용과 시간이 소요됨
-