서비스 요구 사항을 만족하는 시스템을 구축하기 위해서
전체 시스템에 대한 구조를 정의한 문서로,
시스템을 구성하는 요소와 각 요소간의 관계,
그리고 요소를 다루는 정보를 정의한다.
즉 해당 서비스의 시스템 설계도 혹은 청사진을 의미한다.
아키텍쳐 설계 단계에서 확장성과 유지 보수 그리고 요소의 기능들을 고려하여
설계하게 된다면 기능 추가와 유지 보수 구현 단계에서의 시간이 덜 소모된다.
설계 단계에서 신경을 쓰지 못한다면 복잡성이 증가하며 결국 시간 더욱 더 오래 지체된다.
그렇게 지체된 시간은 결국 돈과 직결되는 문제이기에
우리는 아키텍쳐에 각 요소들을 알아두고 설계할 필요가 있다.
이와 같이 두 개의 구성 요소로 서비스를 분리시킨 것을
2티어 아키텍쳐라고 부른다.
클라이언트 : client , 손님
서버 : server , 서빙하는 사람
단어의 어원을 떠올리면 이런 역활을 하는 요소인지 파악하게 될 것 이다.
위와 같은 2티어 아키텍쳐에서 서버는 보통 일반적으로 리소스를 전달해 주는 역할만 담당하게 된다.
리소스를 저장하는 공간을 별도로 마련하게 되는데 이때,
그 공간은 '데이터 베이스' 라고 부르게 된다.
이때, 데이터 베이스의 어원도 들어가보면 정보 기지라고 파악하기 쉽다.
2 티어 아키텍쳐에 데이터베이스가 추가된 형태 즉, 아키텍쳐를 구성하는 요소가 하나 더 늘어난 아키텍쳐를
3티어 아키텍쳐라고 부른다.
우리는 개발자 직군에서 프론트 엔드 개발자, 백엔드 개발자 용어를 한번쯤은 들어봤을 것이다.
이때 프론트엔드와 백엔드는 해당 아키텍쳐의 어느 구성 요소를 다루는지에 따라 구분이 된다고 생각하면 좋다.
클라이언트처럼 사용자가 직접 눈으로 보고,UI와 상호작용 할 수 있는 서비스를 주로 개발한다면 프론트엔드 개발자이다.
서버와 데이터 베이스등 우리가 눈으로 보지 못하는 서비스 들을 다루게 된다면 백엔드 개발자이다.