[SQLD/P] DB 아키텍쳐

Hyo Kyun Lee·2022년 7월 26일
0

SQLD/P

목록 보기
3/82

1. 아키텍쳐 개요

좁은 의미로 시스템, application을 구축하기 위해 필요한 물리레벨의 조합을 일컫는다(Server/저장소/네트워크 등).

DB설계를 하는 것은 단순히 "DB만"을 설계하는 것이 아니라, 곧 시스템 전체를 어떠한 방식으로 설계할 것인가도 포함이 된다.

따라서 DB설계시 반드시 시스템의 용도 및 목적도 고려대상에 포함되어야 한다.
또한 시스템적으로 보았을때 전체적인 기능/체계 구성 요소를 파악하여 구조적 관계를 명확히 한 이후에 진행되어야 한다.

아키텍쳐는 결국, 넓은 의미로 본다면 전체 시스템 용도 및 목적 등에 알맞게 DB 및 application 구축 과정을 설계하는 행위를 의미한다.

2. 아키텍쳐 역사

시스템 아키텍쳐는 각 시기별 처리방안에 최적화되어 설계되었고, 이를 살펴보면 시스템 운용 방안이나 당시의 정보처리대응 과정 등을 파악할 수 있다.

2-1. only DB

DB만으로 시스템을 운용한다.

DB 운용 서버와 server manager(개발자)가 1:1로 매칭하여 application을 운용하였다.
네트워크없이 단독 서버를 운용하여 보안성 측면에선 유리하지만, 가용성이 낮고 확장성이 부족할 수 밖에 없다.

2-2. client - server

DB Server를 네트워크로 연결하여 다수가 이를 managing할 수 있다.

즉 네트워크 환경에서 DB Server를 운용하여 다수의 개발자가 1대의 server를 관리하는 아키텍쳐이다.
하지만 그만큼 보안성이 낮아지고, 각 PC에서 작업한 내용이 모두 상이하므로 수정 및 배포에 어려움이 많았다.

2-3. WEB3 Layer

웹3계층이라고도 하며, application의 구조 뿐만 아니라 작동 원리와 연관되는 아키텍쳐 구조이다.

application은 WAS(business logic)을 거쳐야하는 것이 핵심이며, 직접적인 접속 및 요청은 web에 한정하는 구조이다.

정적인 자원이나 index.html 등 1차적인 정보처리는 web server에서 이루어질 수 있지만, business logic을 거쳐 data를 가진채로 운반되는 index.html은 반드시 WAS를 거쳐야 한다.

3. 가용성 및 확장성

가용성

  • 서버 네트워크 등의 정보시스템이 정상적으로 동작한 정도를 의미한다.
  • 전체 가동시간 중 정상적인 사용시간이 비율을 의미하며, 가용성이 100%라면 오류없이 잘 동작하였음을 의미한다.

확장성

  • IT시스템 상 대규모적인 재설계 및 재설치없이 확장이 얼마나 용이한지에 대한 정량적인 값이다.
  • 서비스 규모에 따른 사용자 수요, 해당 수요에 유연한 대응이 가능해야 하며 클라우드가 많이 사용되는 이유이기도 하다.

4. DB서버의 다중화

server 구성을 여러 대로 분할하여, 한 DB의 작동이 멈추어도 다른 DB를 통해 업무 수행을 지속하기 위한 작업이다.

시스템 아키텍쳐 고려사항 중 하나는 바로 SPOF이다.
Single Point of Failure, 즉 하나가 동작하지 않으면 전체 시스템이 중단되는 요소(결합도가 매우 높은)로, 이 요소 하나만으로도 가용성과 신뢰성에 매우 많은 영향을 미친다고 할 수 있다.

그러나 DB서버는 다른 컴포넌트에 비해 다중화가 어렵고, Data의 영속적인 성질을 확보하는 것까지 고려해야하므로 신중한 접근이 필요하다.

  • 장기간 보존되어야 하며
  • 모든 사용자에게 일관된 데이터가 보여져야 하며
  • 데이터 다중화시(분할 및 복사저장) 갱신을 통해 정합성을 유지해야 한다.

4-1. DB서버 다중화의 종류

다중화는 구성 방법에 따라 크게 3가지가 존재한다.

  • Active - Active
    2개의 DBMS 엔진 서버를 운영, 저장소는 1곳(Shared Disk)
  • Active - StandBy
    DBMS 엔진을 항상 가동 + 가동 대기 상태로 운영
    저장소는 1곳, 대부분의 DBMS 시스템이 이 방식을 채택
  • 리플리케이션
    DB와 저장소를 하나의 세트화하여, 다양한 DB server를 구성한다(병렬처리, 커버링 전략 필요)

4-2. 샤드(Shard)

Database Shard, DB 및 웹 검색 엔진 데이터를 파티션화 한다.
즉, table 및 data 구성요소 등에 맞게 DB 등을 파티션화(수평분할)하며 각 파티션을 서버 인스턴스에서 부하 분산을 위해 보유하고 있다.
샤드별 데이터를 소유하는 정도나 분산 정도가 다르다.

5. 적절한 아키텍쳐의 설계

위 내용들을 종합하면, 결국 가용성/신뢰성/성장성 등을 고려하여 적절한 시스템 아키텍쳐 설계가 필요함을 알 수 있다.

성장 가능성이나 수요, 서비스 등을 종합적으로 고려하고 모니터링하여 지속적으로 대응할 수 있는 아키텍쳐 설계가 필요하다.

6. 참고자료

WEB3 layer
https://coinpan.com/coin_info/282863698

패스트캠퍼스 - 데이터베이스와 SQLD

0개의 댓글