금일(2022.10.19)부터 시작한 우아콘 세션들에서 백엔드 개발자인 내게 직/간접적으로 도움이 될 세션들을 찜해서 보고 있는데 첫 번 째로 접한 세션은 바로 아키텍처에 대한 세션이었다. 아키텍처 설계가 왜 중요한 지에 대해 알 수 있는 시간이었다.
소프트웨어와 아키텍처
: 소프트웨어를 쉽게 변경할 수 있는 구조를 설계하여 유지보수 편리성을 향상 시키는 것
소프트웨어 = 도메인 + 인프라스트럭처 (서로 의존성이 존재함)
도메인
- 소프트웨어를 통해 이루고자 하는 핵심적인 요소(프로세스, 정책)
인프라스트럭처
- UI, DB, API 등
계층형 아키텍처
: 목적이 같은 코드들을 계층으로 그룹화(관심사의 분리)
직접 참조의 문제점
연쇄적인 참조관계 - 변경의 영향을 받음(=의존성을 갖는다) -> 코드 변경이 힘들고 테스트가 힘들어진다.
클린 아키텍처
- Entities(기업의 업무규칙)
- Use Cases(애플리케이션 기능[사용사례])
- Controller
- External Interfaces (도메인과 업무정책 보호)
도메인
- Entity
- Use case
어댑터
- 외부의 데이터 흐름을 내부의 도메인흐름에서 사용해 줄 수 있게 변환해 줌
- Presenter
- Repository
Interface
- 의존성 역전 / 일종의 약속
클린 아키텍처의 장점
- 세부사항 변경 시 도메인 계층의 업무 규칙이 영향 받지 않음 <- 의존성이 안으로 향하고 있음
- 바깥쪽 세부사항을 독립적으로 손쉽게 변경 가능 interface만 지킨다면!!
- 각 요소를 독립적으로 테스트 가능
헥사고날 아키텍처
- 클린 아키텍처를 구체화한 아키텍처
- 핵심요소 - Adapter, port
아키텍처의 목표
- 도메인에 집중
- 개발비용 감소(덤으로)
아키텍처가 적용된다면 의존성이 낮아지고 유연해짐 -> 시장의 요구사항에 빠르게 대처할 수 있고 테스트 가능
좋은 설계, 아키텍처 - 코드 컴포넌트화 -> 어떻게 소프트웨어의 기능을 변경할 지 정하고 변경하기만 하면 됨
좋은 아키텍처가 어디를 변경해야 하는 지 알려줌 오히려 기능 추가에 가속도가 붙음 -> 기존의 코드가 플랫폼이 됨
By 마틴파울러
좋은 아키텍처 설계는 고객에게 좋은 품질의 서비스를 더 빠르게 저렴한 비용으로 제공할 수 있게 만든다.
그것이 고객에게 집중하는 것이다.
<느낀 점>
프로젝트 할 때 분석/설계 단계 이후 구현 시에 항상 설계에 이 부분만 좀 더 고려해봤으면... 이라는 생각을 정말 많이 했는데 건전한 회고를 한 것 같다.
업무 규칙과 기능과 외부개체들과의 의존성을 끊어 도메인에 집중할 수 있게 하는 설계가 좋은 설계라는 배움을 얻었다.
사진 출처
- 2022 배달의 민족 우아콘(woowacon) '기획자님들! 개발자가 아키텍처에 집착하는 이유, 쉽게 알려드립니다 : https://www.woowacon.com/ko/detailVideo/13
'컨퍼런스(Conference, Session) > 우아콘(WOOWACON)' 카테고리의 다른 글
2022 배달의민족 우아콘(Woowacon) 시청 후기 (0) | 2022.10.31 |
---|---|
[2022 우아콘] API Gateway 패턴에는 API Gateway가 없다 (0) | 2022.10.27 |
[2022 우아콘] 회원시스템 이벤트 아키텍처 구축하기 (0) | 2022.10.21 |
댓글