공부기록/Spring
layered architecture
DGL
2021. 12. 29. 11:53
레이어드 아키텍처는
애플리케이션 개발에 있어서
프레젠테이션 레이어, 서비스 레이어, 레포지토리 레이어, 그리고 DB레이어로 나누어 개발하는 것입니다.
이런 것에 장점은, 가독성과 유지보수에 좋고, OCP 원칙을 지키기 쉽게 됩니다. 예를 들어 orcale에서 mysql로 DB를 변경한다고 하면, datasource를 oracle로 변경하고, 레포지토리를 oracle용으로 만들어서 repository bean을 교체해주면 됩니다. 기존 코드의 변경없이 쉽게 확장할 수 있습니다.
그리고 프레젠테이션 레이어는 자바의 캡슐화 역할을 해줍니다. 그래서 api역할을 해줍니다. 오직 어떤 요청이 들어왔을 때, 어떤 응답을 돌려준다는 정의만 해놓으면 됩니다. 내부 구현, implementation은 서비스로직에서 담당합니다. 그래서 다른 서비스를 사용하는 경우, 내부 구현을 변경하는 경우에는, 서비스 레이어의 객체를 변경해주면 됩니다. 이처럼 유연하고 가독성 높은 개발을 가능하게 해줍니다.
다만 레이어로 나누어서, 단순한 기능에 있어서 성능이 저하될 수 있기는 하지만, 요즘 워낙 기기들의 성능이 좋아서 큰 문제는 아닐 것으로 생각됩니다.