Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 깃허브 토큰 인증
- 백준 4358번
- 깃 연동
- SQL
- 모두의네트워크
- 데이터베이스
- React Native
- 네트워크
- 딥러닝
- 모두의 네트워크
- 백준
- 백준 5525번
- 리액트 네이티브 시작하기
- 팀플회고
- 자바
- 깃 터미널 연동
- 머신러닝
- 스터디
- 리액트 네이티브
- 모두를 위한 딥러닝
- 데베
- 백준 4358 자바
- HTTP
- 깃허브 로그인
- 모두를위한딥러닝
- 리액트 네이티브 프로젝트 생성
- 백준 4949번
- 문자열
- 지네릭스
- 정리
Archives
- Today
- Total
솜이의 데브로그
4장 ) 데이터베이스와 아키텍처 구성(1) 본문
Reference : 데이터베이스 첫걸음
다중화에 대해 생각해 보자
- 데이터베이스는 견고하게 유지되는 것이 요구된다.
- DB서버 2대가 있다면 1대가 고장나더라도 나머지 1대가 동작하면 서비스의 정지를 막을 수 있는데, 이를 '다중화'라 한다.
아키텍처란
- 시스템을 만들기 위한 물리 레벨의 조합
- 어떤 기능을 가진 서버를 준비하고 어떠한 저장소나 네트워크 기기와 조합해서 시스템 전체를 만들 것인가
- 즉, 하드웨어와 미들웨어의 구성.
- 아키텍처를 보면 그 시스템이 어떤 용도로 사용되고 무엇을 목적으로 하고 있는지 추측 할 수 있다.
- 시스템에 요구되는 조건을 충족하기 위해 어떤 아키텍처가 적당한지 시스템 개발의 초반에 시행.
데이터베이스의 아키텍처
역사와 개요
아키텍처의 역사는 구체적으로 다음 3단계로 나누어서 파악 할 수 있다.
- Stand-alone (~1980년대)
- 클라이언트/서버 (1990년대~2000년)
- Web 3계층 (2000년~현재)
Stand-alone
- 데이터베이스가 동작하는 머신(데이터베이스 서버)이 LAN이나 인터넷 등의 네트워크에 접속하지 않고 '독립되어' 동작하는 구성.
- 데이터베이스의 미들웨어(DBMS)와 애플리케이션의 소프트웨어는 같은 DB 서버에서 동작한다.
- 따라서 데이터베이스를 사용하고 싶은 사용자는 DB서버가 설치된 장소까지 물리적으로 접근하여 사용해야함.
Stand-alone의 단점
- 물리적으로 떨어진 장소에서 접근할 수 없다.
- 복수 사용자가 동시에 작업할 수 없다. (동시에 서버를 이용할 수 있는 사람은 1명)
- 가용성이 낮다. 서버가 1대이므로 이 서버에 장애가 발생하면 서비스가 정지한다.
- 확장성이 부족하다. 성능이 나쁠 때 개선 수단이 부족하다.
Stand-alone의 장점
- 구축이 매우 간단해 소규모 작업이나 테스트를 빨리 할 수 있다.
- 보안이 매우 높다. 네트워크를 매개로 침입할 위험이 없기 때문.
- 데이터 유출 위험이 낮다. (위와 같은 이유)
클라이언트/서버
- 데이터베이스를 네트워크에 연결해 복수 사용자가 물리적으로 떨어진 장소에서 접속 가능.
- 데이터베이스 서버 1대에 복수 사용자의 단말이 접속하는 구성. C/S 또는 클라서버로 부르기도 함.
- 시스템이 클라이언트와 서버의 2개 레이어로 구성되므로 '2게층 구성'이라고 부르는 경우도 있음.
- DB서버에서는 DBMS가 동작, 클라이언트에서는 업무 애플리케이션이 동작.
- '클라이언트'란 엔드 사용자가 직접 조작해서 수행하고 싶은 처리 명령을 내보내는 머신.
- '서버'란 클라이언트로부터 받은 명령을 실행하여 업무 처리를 실행하기 위한 머신.
- 주로 기업이나 조직 내에 닫힌 네트워크(LAN)에서 이용되었다. 외부로부터의 접속을 막기 위해.
클라이언트/서버 구성의 단점
- 인터넷에서 직접 데이터베이스에 접속하는 것에 대한 보안 위험
- 불특정 다수의 사용자가 사용하는 클라이언트에서의 애플리케이션 관리 비용이 많이 드는 점.
- 애플리케이션은 각종 환경에 대으앻 애플리케이션을 작성해야 하고 각각에 대해 버전 관리나 버그 수정 버전을 배포하는데 비현실적인 비용이 필요함.
Web 3계층
- 웹 서버 계층 + 애플리케이션 계층 + 데이터베이스 계층 의 조합
- 웹 서버는 클라이언트로부터 접속 요청(HTTP 요청)을 직접 받아서 그 처리를 뒷단의 애플리케이션 계층에 넘기고 그 결과를 클라이언트에 반환.
- 애플리케이션 계층은 비즈니스 로직을 구현한 애플리케이션이 동작하는 층. 웹 서버로부터 연계된 요청을 처리, DB서버에 접속해 데이터를 추출하고 이를 가공한 결과를 웹 서버로 반환.
- 사용자로부터 직접적인 접속 요청을 받는 역할을 웹 서버 계층에 한정하여 애플리케이션 계층과 데이터베이스 계층의 보안을 높인다.
가용성과 확장성의 확보
Stand-alone구성의 단점 중 가용성이 낮고 확장성이 부족한 문제의 해결책에 대해 생각해보자.
가용성을 높이는 2가지 전략
- 심장전략 : 시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 낮게 억제해서 가용성을 높인다. 소수 정예 노선.
- 신장전략 : '사물은 언젠가 망가진다'란 체념을 전제로 여분을 준비해둔다. 이를 철저히 대비하는 것을 '물량작전'이라 부른다. (컴포넌트를 병렬화)
★클러스터
- 동일한 기능의 컴포넌트를 병렬화하는 것을 '클러스터링'이라고 한다.
- 동일한 기능의 컴포넌트를 복수 개 준비해 한 개의 기능을 실현한다.
- 클러스터 구성으로 시스템의 가동률을 높이는 것을 '여유도(Redundancy)를 확보한다' 또는 '다중화'라고 한다.
- 다중화 : 내구성이 더 높고 견고하다
단일 장애점
- 다중화되어 있지 않아서 시스템 전체 서비스의 계속성에 영향을 주는 컴포넌트.
- 단일 장애점의 신뢰성이 시스템 전체의 가용성을 결정한다.
- 단일 장애점을 없애기 위해 대부분 이중화(가장 비용이 많이 듬)는 해두지만, 그 이상 어느 정도 돈을 들여 다중화할지는 예산 제약과 바라는 신뢰성 수준에 따라서 결정해야한다.
신뢰성과 가용성
- 신뢰성 : 하드웨어나 소프트웨어가 고장나는 빈도나 고장 기간을 나타내는 개념
- 가용성 : 사용자 입장에서 볼 때 시스템을 어느 정도 사용할 수 있는지
- 따라서 신뢰성이 낮은 하드웨어나 소프트웨어를 사용하고 있더라도 다중화(클러스터링)한다면 시스템 전체의 가용성을 높일 수 있다.
'CS > Database' 카테고리의 다른 글
4장 ) 데이터베이스와 아키텍처 구성(2) (0) | 2021.10.13 |
---|---|
9,10강 ) 정렬, 복수의 열 지정 정렬 (0) | 2021.10.08 |
7,8강 ) 조건 조합, 패턴 매칭 검색 (0) | 2021.09.29 |
3장 ) 데이터베이스의 운영비용 (0) | 2021.09.28 |
5,6강 ) 테이블 구조 참조하기, 검색 조건 지정하기 (0) | 2021.09.26 |