일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링MVC
- 항해플러스 백엔드
- 자바연습문제
- JPA
- 스프링
- 분석함수
- 자바의정석 연습문제
- 자바공부
- 서블릿
- Spring
- Numpy
- 시큐어코딩
- 김영한
- 인프런
- 이것이자바다
- java
- 자바의정석
- inflearn
- 스프링 부트와 JPA
- 스프링입문
- 불친절한SQL프로그래밍
- 항해플러스
- REGEXP_SUBSTR
- 스프링 핵심원리
- 제네릭
- Secure Coding
- Python
- Java의정석
- 불친절한 SQL 프로그래밍
- docker
- Today
- Total
Continuous Challenge
[항해플러스 7기 백엔드] 2주차 회고 (1) - 클린 아키텍처 본문
클린 아키텍처
2주차 과제의 핵심 키워드는 아키텍처 였다.
클린 코드, 클린 아키텍처, 클린 코더의 저자, Robert C Martin은 대부분의 아키텍처는 세부적인 차이는 있어도 공통적인 목표는 계층을 분리하여 관심사의 분리하는 것이라고 말하는데, 이런 아키텍처가 동작하기 위해서는 의존성 규칙을 지켜야 한다고 한다.
의존성 규칙이란?
모든 소스코드 의존성은 반드시 외부에서 내부로, 저수준에서 고수준 정책을 향해야 한다.
레이어드 아키텍처
아직까지 많은 회사에서 사용하는 아키텍처 구조는 레이어드 아키텍처 일 것이다.
하지만 레이어드 아키텍처에서는 고수준 정책(Service)이 저수준 정책(DB의 구현체)을 직접 참조하게 되고 이는 위에서 언급한 의존성 규칙을 위반한다. 우리는 이것을 DIP(의존성 역전의 원칙, Dependency Inversion Principle)을 통해 해결할 수 있다.
클린-레이어드 아키텍처
이번 주차 과제에서는 레이어드 아키텍처의 구조에 DIP를 적용한 클린-레이어드 아키텍처 구조로 진행하였다.
내가 잡은 아키텍처 구조는 다음과 같다.
domain/ : 도메인 클래스와 관련 서비스 로직, Repository(interface)
infrastructure/ : DB 관련 로직(저장, 조회, 수정, 삭제 등), domain 패키지 내 Repository 인터페이스를 구현한 구현체 클래스
interfaces/ : Controller 클래스와 요청, 응답 객체 클래스
(application/) : 도메인 패키지의 서비스를 조합해서 사용하는 Facade 클래스
이번 과제에서는 Lecture 도메인 하나에서 모든 요구사항 구현이 가능하여 Facade 클래스를 따로 작성하지는 않았다.
레이어드 아키텍처 구조로만 코드를 작성해보다가 새로운 아키텍처의 개념을 이해하려고 하니 처음에는 어려움이 있었다.
하지만 코치님들의 멘토링을 열심히 청강하고, 과제를 진행하다보니 왜 이런 아키텍처 구조를 사용해야 하는지를 이해할 수 있었다!
클린 아키텍처책을 읽었던 당시에는 잘 이해되지 않아 읽고 있는데도 '글은 글이고....' 이런 느낌으로 글자만 읽는 느낌이었다.
지금 다시 읽게 되면 굉장히 재밌게 읽을 수 있을 것 같다는 생각이 든다. (틈틈히... 시간을 내어 다시 읽어봐야겠다. 🥲)
책의 내용을 다시 떠올려보자면... '우리는 유지보수가 용이한 아키텍처를 갖추어야 한다.'
이러한 아키텍처 구조를 갖추게 되면, DB 변경 등에 대한 확장이 용이하고 테스트 코드 작성하기에도 좋은 구조라는 것을 느꼈다.
아직 이 구조에 완벽하게 익숙해지지 않았지만, 의존성 규칙을 항상 상기하면서 개발을 해야겠다..
'Study > 항해플러스 7기' 카테고리의 다른 글
[항해플러스 7기 백엔드] 3주차 회고 - 서버 구축하기 (설계부터~) (1) | 2025.01.05 |
---|---|
[항해플러스 7기 백엔드] 2주차 회고 (2) - 트랜잭션 격리수준, 공유 락과 배타 낙관적 락과 비관적 락 (0) | 2024.12.30 |
[항해플러스 7기 백엔드] 1주차 회고 - TDD, 동시성 제어 (1) | 2024.12.21 |