만들면서 배우는 클린 아키텍처를 요약한 글입니다.
우아한 형제들에서 주관, 진행하는 2022 우아한 스터디에 참여하게 되었다. 스터디의 주제는 헥사고날 아키텍쳐로 구현하는 작은 스프링 부트 토이 프로젝트.
데브코스 교육을 참가할 당시 프로젝트를 진행하기 위해서 구조를 먼저 짜야했다.
클린 아키텍처, 무슨 아키텍처 등 어디서 들은건 있어서 프로젝트의 구조를 어떻게 짤 것인가에 대한 고민하고 이 고민의 답을 원했지만 유튜브 영상을 보아도 쉽게 이해하기 힘들었으며, 멘토님들, 주변의 현직 개발자분들에게 다 물어봤지만 회사 바이 회사, 팀 바이 팀, 사람 바이 사람 모두 개발하는 방식이 달랐다.
빠듯한 기한 내에 프로젝트를 마무리하기 위해서는 개발을 시작해야했기에 1차로 도메인별로 일단 크게 디렉토리를 나누고, 그 안에서 컨트롤러, 서비스, 레포지토리, dto, entity 모든 클래스별로 하위 디렉토리를 평행하게 만들었고 이 부분이 찝찝하게 남게 되었다.
우아한 스터디는 책 발표나 토론 스터디에서 끝나지 않고 공부한 지식을 토이 프로젝트에도 바로 적용해볼 수 있는 좋은 기회다.
또한 개발 경력이 적다보니 스터디를 통해서 다른 분들은 어떻게 개발하는지, 환경은 어떠한지 다양한 주제로 얘기하고 공유하며 서로의 개발 능력치를 이끌어낼 수 있을 것이라고 생각했다.
정답은 없을 수 있다. 하지만 상황에 맞는 최선의 방식을 찾고 싶다. 책 내용을 수용하되 최대한 사소한 것들에도 질문을 많이 가지며 비판적으로 읽고 싶다.
열정 넘치고 최신 기술 동향에 관심 많은 조원들을 만난 것 같아서 기대가 된다 ☺
낮은 개발 비용으로 유연하고 적응이 쉬운 소프트웨어 아키텍처 구축하고자 한다.
불합리한 기한과 쉬워보이는 지름길은 이러한 아키텍처를 구축하는 것을 매우 어렵게 만든다.
전통적인 계층형 아키텍처(layered architecture) 스타일의 단점
로버트 마틴(Robert C. Martin)의 클린 아키텍처 & 알리스테어 콕번(Alistair Cockburn)의 육각형 아키텍처(hexagonal architecture) & 도메인 중심 아키텍처의 장점
프레젠테이션 계층(사용자와의 상호작용 담당)
⬇
도메인 계층
⬇
영속성 계층(엔티티의 영속성 처리)
사용자 인터페이스, 데이터베이스(외부 요소) ↔ (분리) 비즈니스 로직
프레젠테이션 계층(사용자와의 상호작용 담당)
⬇
도메인 계층
⬆
영속성 계층(엔티티의 영속성 처리)
육각형 아키텍처 = 포트와 어댑터 패턴
이 책은 유연하고 유지보수가 용이한 아키텍처를 구축하는 방법을 알려준다.
정말 하고 싶던 스터디인데 글 올라오는 거 열심히 읽겠습니다!