단일 서버에서 분리된 데이터베이스 서버

eomprgrm·2023년 4월 13일
0

'가상 면접 사례로 배우는 대규모 시스템 설계 기초'를 읽고 작성하는 글.


1. 개요

단일 서버 운영 중 사용자가 늘게 된다면, 단일 서버만으론 원활한 서비스를 구축하기가 곤란한 상황이 오게 된다. 이번에는 웹/모바일 트래픽 처리 용도의 서버와, 데이터베이스용 서버를 따로 두는 설계에 대해 배워볼 것이다. 웹 계층 서버와 데이터 계층 서버를 분리하면 각각을 독립적으로 확장해 나갈 수 있는 장점이 있다.


2. 설계도

단일 서버의 흐름과 달라진 점은 웹 계층과 데이터 계층 서버의 분리이다.
웹 계층과 데이터 계층에서 네트워크 통신을 통해 읽기/쓰기/수정/삭제 작업 등이 이뤄진다.


3. 데이터 베이스 선택

전통적인 관계형 데이터베이스와 비-관계형 데이터베이스 사이에서 고를 수 있다.

3-1) 관계형 데이터베이스

관계형 데이터베이스 관리 시스템(Relational Database Management System, RDBMS)이라고도 부른다. MySQL, Oracle, PostgreSQL 등이 있다. 관계형 데이터베이스의 특징은 자료를 테이블과 열, 컬럼으로 표현한다. SQL을 사용하여 여러 테이블의 데이터를 관계에 따라 조인(join)해서 합치거나 불러올 수 있다.

3-2) 비 관계형 데이터베이스

비 관계형 데이터베이스는 NoSQL이라고도 부른다. 대표적으로 CouchDB, Neo4j, Cassandra, MongoDB 등이 있다. NoSQL은 네 부류로 나눌 수 있는데, key-value 저장소, graph 저장소, column 저장소, 문서 저장소가 있다. 일반적으로 조인 연산은 지원하지 않는다.

어떤 데이터베이스를 선택?

대부분의 경우 관계형 데이터베이스를 사용한다. 그러나 아래와 같은 경우엔 비 관계형 데이터베이스가 적절한 선택이 될 수 있다.

  1. 아주 낮은 응답시간이 요구되는 경우
  2. 다루는 데이터가 관계형 데이터가 아닐 경우 (비정형)
  3. 데이터를 직렬화하거나 역직렬 할 수 있기만 하면 되는 경우
  4. 아주 많은 양의 데이터를 저장할 필요가 있는 경우
profile
오늘의 학습을 기록하는 공간

0개의 댓글