개발에서 가장 기초가 되는 애플리케이션 인터페이스 흐름에 대해 알아보려합니다.
Layered Architecture는 소프트웨어 개발에 가장 기본이 되는 아키텍쳐 중 하나이다. 구성 계층에 따라 N 계층이라고 부른다.
일반적으로 4계층으로 레이어로 많이 얘기를 한다.
Presentation Layer
사용자가 데이터를 전달하기 위해 화면에 정보를 표시하는 것을 주 관심사로 둔다. Presentation Layer 는 비즈니스 로직이 어떻게 수행되는지 알 필요가 없다. 대표적인 구성요소는 View와 Controller가 있다.
Business Layer
비즈니스 로직을 수행하는 것을 주 관심사로 둔다. 마찬가지로 화면에 데이터를 출력하는 방법이나 혹은 데이터를 어디서, 어떻게 가져오는지에 대한 내용은 알고있지 않다. 그저 Persistence Layer에서 데이터를 가져와 비즈니스 로직을 수행하고 그 결과를 Presentation Layer 로 전달하면 된다. 대표적인 구성요소는 Service와 Domain Model 등이 있다.
경우에 따라 아래처럼 Service와 Domain Model을 별개의 계층으로 나누거나, 아예 Domain Model을 Layered Architecture 와 별개의 것으로 분리하는 경우도 더러 있는 것 같다
Persistence Layer
어플리케이션의 영속성을 구현하기 위해, 데이터 출처와 그 데이터를 가져오고 다루는 것을 주 관심사로 둔다. 대표적인 구성요소는 Repository, DAO 등이 있다.
Database Layer
MySQL, MariaDB, PostgreSQL, MongoDB 등 데이터베이스가 위치한 계층을 의미한다.
정리
참고로 필자는 JAVA를 공부하고 있는데 MVC 모델과 연관지어 생각하면 좋은듯 하다.
https://www.baeldung.com/cs/layered-architecture
https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html
https://hudi.blog/layered-architecture/