좁은 의미로 시스템, application을 구축하기 위해 필요한 물리레벨의 조합을 일컫는다(Server/저장소/네트워크 등).
DB설계를 하는 것은 단순히 "DB만"을 설계하는 것이 아니라, 곧 시스템 전체를 어떠한 방식으로 설계할 것인가도 포함이 된다.
따라서 DB설계시 반드시 시스템의 용도 및 목적도 고려대상에 포함되어야 한다.
또한 시스템적으로 보았을때 전체적인 기능/체계 구성 요소를 파악하여 구조적 관계를 명확히 한 이후에 진행되어야 한다.
아키텍쳐는 결국, 넓은 의미로 본다면 전체 시스템 용도 및 목적 등에 알맞게 DB 및 application 구축 과정을 설계하는 행위를 의미한다.
시스템 아키텍쳐는 각 시기별 처리방안에 최적화되어 설계되었고, 이를 살펴보면 시스템 운용 방안이나 당시의 정보처리대응 과정 등을 파악할 수 있다.
DB만으로 시스템을 운용한다.
DB 운용 서버와 server manager(개발자)가 1:1로 매칭하여 application을 운용하였다.
네트워크없이 단독 서버를 운용하여 보안성 측면에선 유리하지만, 가용성이 낮고 확장성이 부족할 수 밖에 없다.
DB Server를 네트워크로 연결하여 다수가 이를 managing할 수 있다.
즉 네트워크 환경에서 DB Server를 운용하여 다수의 개발자가 1대의 server를 관리하는 아키텍쳐이다.
하지만 그만큼 보안성이 낮아지고, 각 PC에서 작업한 내용이 모두 상이하므로 수정 및 배포에 어려움이 많았다.
웹3계층이라고도 하며, application의 구조 뿐만 아니라 작동 원리와 연관되는 아키텍쳐 구조이다.
application은 WAS(business logic)을 거쳐야하는 것이 핵심이며, 직접적인 접속 및 요청은 web에 한정하는 구조이다.
정적인 자원이나 index.html 등 1차적인 정보처리는 web server에서 이루어질 수 있지만, business logic을 거쳐 data를 가진채로 운반되는 index.html은 반드시 WAS를 거쳐야 한다.
가용성
확장성
server 구성을 여러 대로 분할하여, 한 DB의 작동이 멈추어도 다른 DB를 통해 업무 수행을 지속하기 위한 작업이다.
시스템 아키텍쳐 고려사항 중 하나는 바로 SPOF이다.
Single Point of Failure, 즉 하나가 동작하지 않으면 전체 시스템이 중단되는 요소(결합도가 매우 높은)로, 이 요소 하나만으로도 가용성과 신뢰성에 매우 많은 영향을 미친다고 할 수 있다.
그러나 DB서버는 다른 컴포넌트에 비해 다중화가 어렵고, Data의 영속적인 성질을 확보하는 것까지 고려해야하므로 신중한 접근이 필요하다.
다중화는 구성 방법에 따라 크게 3가지가 존재한다.
Database Shard, DB 및 웹 검색 엔진 데이터를 파티션화 한다.
즉, table 및 data 구성요소 등에 맞게 DB 등을 파티션화(수평분할)하며 각 파티션을 서버 인스턴스에서 부하 분산을 위해 보유하고 있다.
샤드별 데이터를 소유하는 정도나 분산 정도가 다르다.
위 내용들을 종합하면, 결국 가용성/신뢰성/성장성 등을 고려하여 적절한 시스템 아키텍쳐 설계가 필요함을 알 수 있다.
성장 가능성이나 수요, 서비스 등을 종합적으로 고려하고 모니터링하여 지속적으로 대응할 수 있는 아키텍쳐 설계가 필요하다.
WEB3 layer
https://coinpan.com/coin_info/282863698
패스트캠퍼스 - 데이터베이스와 SQLD