컨퍼런스(Conference, Session)/우아콘(WOOWACON)

[2022 우아콘]기획자님들! 개발자가 아키텍처에 집착하는 이유, 쉽게 알려드립니다

Chaany 2022. 10. 19.
728x90

금일(2022.10.19)부터 시작한 우아콘 세션들에서 백엔드 개발자인 내게 직/간접적으로 도움이 될 세션들을 찜해서 보고 있는데 첫 번 째로 접한 세션은 바로 아키텍처에 대한 세션이었다. 아키텍처 설계가 왜 중요한 지에 대해 알 수 있는 시간이었다.

 


 

소프트웨어와 아키텍처

: 소프트웨어를 쉽게 변경할 있는 구조를 설계하여 유지보수 편리성을 향상 시키는

 

소프트웨어 = 도메인 + 인프라스트럭처 (서로 의존성이 존재함)

 

도메인

  • 소프트웨어를 통해 이루고자 하는 핵심적인 요소(프로세스, 정책)

인프라스트럭처

  • UI, DB, API 등

 

계층형 아키텍처

: 목적이 같은 코드들을 계층으로 그룹화(관심사의 분리)

 

직접 참조의 문제점

연쇄적인 참조관계 - 변경의 영향을 받음(=의존성을 갖는다) -> 코드 변경이 힘들고 테스트가 힘들어진다.

 

클린 아키텍처

  • Entities(기업의 업무규칙)
  • Use Cases(애플리케이션 기능[사용사례]) 
  • Controller 
  • External Interfaces (도메인과 업무정책 보호)

2022 woowacon - 클린 아키텍처

도메인 

  • Entity
  • Use case

어댑터

  • 외부의 데이터 흐름을 내부의 도메인흐름에서 사용해 있게 변환해
  • Presenter
  • Repository

Interface 

  • 의존성 역전 / 일종의 약속

 

2022 woowacon -클린 아키텍처

클린 아키텍처의 장점

  • 세부사항 변경 도메인 계층의 업무 규칙이 영향 받지 않음 <- 의존성이 안으로 향하고 있음
  • 바깥쪽 세부사항을 독립적으로 손쉽게 변경 가능 interface 지킨다면!!
  • 요소를 독립적으로 테스트 가능

헥사고날 아키텍처

  • 클린 아키텍처를 구체화한 아키텍처
  • 핵심요소 - Adapter, port

2022 woowacon - 헥사고날 아키텍처

아키텍처의 목표

  • 도메인에 집중
  • 개발비용 감소(덤으로)

아키텍처가 적용된다면 의존성이 낮아지고 유연해짐 -> 시장의 요구사항에 빠르게 대처할 있고 테스트 가능

좋은 설계를 해야하는 이유.jpg(마틴파울러의 디자인 스태미너 가설)

좋은 설계, 아키텍처 - 코드 컴포넌트화 -> 어떻게 소프트웨어의 기능을 변경할 정하고 변경하기만 하면

좋은 아키텍처가 어디를 변경해야 하는 알려줌 오히려 기능 추가에 가속도가 붙음 -> 기존의 코드가 플랫폼이

By 마틴파울러

좋은 아키텍처 설계는 고객에게 좋은 품질의 서비스를 더 빠르게 저렴한 비용으로 제공할 수 있게 만든다.
그것이 고객에게 집중하는 것이다.


<느낀 점>
프로젝트 할 때 분석/설계 단계 이후 구현 시에 항상 설계에 이 부분만 좀 더 고려해봤으면... 이라는 생각을 정말 많이 했는데 건전한 회고를 한 것 같다.
업무 규칙과 기능과 외부개체들과의 의존성을 끊어 도메인에 집중할 수 있게 하는 설계가 좋은 설계라는 배움을 얻었다.

 

사진 출처

- 2022 배달의 민족 우아콘(woowacon) '기획자님들! 개발자가 아키텍처에 집착하는 이유, 쉽게 알려드립니다 : https://www.woowacon.com/ko/detailVideo/13

728x90

댓글