47_[db]아키텍쳐
아키텍쳐
What is “Architecture”?
- 시스템을 만들기 위한 물리적 레벨의 조합(서버의 기능, 저장소와 네트워크 기기의 조합 등)
- DB 설계에서 시스템의 구성을 의미
- 아키텍쳐를 통해서 시스템의 용도와 목적 추측 가능
- AS-IS, TO-BE 시스템을 설계
- 참고 아키텍쳐 업무를 맡은 사람을 “TA(Technical Architect)”라고 하고, 이 업무는 보통 PM(Product Manager)가 담당함
IT 아키텍쳐
- 정보 시스템을 효율적으로 구성하기 위한 방법
1. Stand-alone 단계
- DBMS 서버와 사용자가 직접적으로 연결된 방식(네트워크 접속 ❌)
- 20C 현대적 컴퓨터의 최초 등장 시점에서 등장
2. 클라이언트/서버 단계
- 네트워크 연결을 통해서 복수 사용자가 동시 사용 가능
- DB 서버 1대에 복수 사용자가 접속
- DBMS 서버가 서버가 됨(DBMS 관점)
3. WEB3 계층(DBMS 관점)
- 애플리케이션을 WAS 서버에서 관리
- 시스템을 웹서버, WAS 서버, DBMS 서버의 3계층(3TO구조, WEB3계층)으로 인식
- 클라우드(GCP, AWS, Naver Cloud 등) 의 등장으로 경향이 변화
가용성과 확장성
가용성 Availability
- 정보 시스템이 정상적으로 사용 가능한 정도
- (예시) 1초에 1000명의 요청에 대해서 처리
- 고가용성 HA; High Availabilty : 가용성이 높은 것
$Availability=(Uptime/(Uptime+Downtime))*100$ (%)
-Uptime: 정상적인 사용시간
-Downtime: 비정상적인 사용시간
-Uptime+Downtime: 전체 사용시간
확장성 Scalability
- 대규모적인 재설계 및 재설치 없이 확장이 얼마나 쉽고 가능한 지에 대한 용이성을 의미
- DBMS 설계자: DBMS의 확산이나 거대한 성장을 도모해야
↔️절대적인 사용자 수가 증가하더라도 이를 수용할 수 있도록 확장성 있게 설계해야 함
- 클라우드 시스템은 scale-out 등을 이용해서 탁월한 확장성을 지원하여, 각광을 받음
- scale out : 동일한 업무를 접속된 서버의 수를 늘려서 처리하여 효율성을 향상시킴(“수평적 스케일”)
- scale up : 서버 자체의 성능을 증가시킴(“수직 스케일”)
가용성을 높이는 전략
- 고품질-소수 전략의 경우, 은행 등 보안이 필요한 경우에 주로 사용됨
- 저품질-다수 전략의 경우, 게시판 등 보안이 보다 덜 필요한 경우에 주로 사용됨
- 저품질- 다수 전략의 용이성
이미지 참고: 패스트캠퍼스 SQLD 강의 && kerpect님 블로그
- 비정상적인 시간 Downtime을 줄일 수 있음
- 동일 기능을 하는 DBMS 서버를 여러 대 설치 및 운영하여 병렬화
- 여러 대의 DBMS 서버가 한 대의 시스템을 위해서 존재
- 다중화/여유도 확보
SPOF; Single Point of Failure
- 시스템 구성 요소 중 동작하지 않으면 전체 시스템이 중단되는 요소
- 높은 가용성을 요하는 네트쿼트, SW 애플리케이션, 상용 시스템에 SPOF가 있는 것은 바람직 하지 ❌
- 높은 신뢰성을 요구하는 시스템은 단일 컴포넌트(독립적인 단위 모듈)에 의존하지 ❌
신뢰성과 가용성
DB 서버의 다중화
- 다른 컴포넌트에 비해서 다중화 어려움
- 영속(Persistence) 계층의 특성
-데이터 장기간 보존 필요
-일시적 처리를 담당하는 애플리케이션 서버 드오가 차이
-데이터 다중화 시 갱신을 통한 정합성 중요(데이터가 모순이 없이 일치해야 함)