3계층 구조는 3가지의 레벨을 나눠서 논리적이나 물리적으로 시스템을 구성하는 것을 말합니다. 이 구조를 쉽게 접할 수 있는 웹서버를 기준으로 말하자면 Web Server(frontend), Web Application Server(WAS, backend), DB를 예로 들 수 있습니다.
3계층 애플리케이션은 모든 통신이 서로의 계층을 통과하면서 발생하게 됩니다. 예를 들어 프레젠테이션 계층에서 직접적으로 데이터 계층과의 통신은 금지되어있습니다.
3계층 구조
(출처 : Three-tier architecture overview - AWS Documentation)
프리젠테이션 계층은 주로 사용자에게 보이는 계층입니다. 그렇기 때문에 최상위 레벨인 프리젠테이션 계층은 웹 브라우저 등에서 실행될 수 있습니다. 웹 프리젠테이션은 보통 다들 익숙히 알고있는 HTML, CSS, JavaScript, Vue.JS등 다양한 언어 나 프레임워크를 이용하여 개발이 되고 있습니다.
이 계층은 애플리케이션의 핵심으로 해당 계층에서 프리젠테이션에서 보내진 데이터들이 처리가 됩니다. 흔히 비지니스 로직, 미들웨어, 백엔드라고 할 때 보통 해당 계층을 말하는 경우가 많습니다. 국내에선 이 계층에 Spring Framework를 많이 사용하고 있습니다.
데이터 계층은 데이터베이스에 접근을 해서 데이터를 읽거나 쓰는 것을 관리하는 계층입니다. 주로 DBMS(Database Management System)이 해당 계층입니다. PostgreSQL, MySQL, MariaDB, Oracle 등이 해당 계층입니다. 데이터 계층도 백엔드로 불립니다.
이렇게 3계층으로 구성을 하게 되면 계층 별 업무 분담이 가능해지므로 업무 효율성이 증가 할 수 있습니다. 또한 이중화 등을 통하여 서비스의 리스크 및 업무 부하를 줄일 수가 있습니다. 마찬가지로 특정 계층의 서버에 대해서만 합리적인 스케일업을 고려할 수도 있습니다.
많은 계층이 있다는 것은 그만큼 관리 포인트가 증가한다는 의미입니다.
문제가 생겼을 경우 빠르게 대처가 어려울 수 있습니다.
또한 계층에 따라 서버가 많아지기 때문에 서비스 규모 및 사용자 증가에 따른 적당한 계층 구조 및 설계가 고려되어야합니다.