cleanArchitecture(39)
-
3장. 패러다임 개요
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 패러다임 개요 구조적 프로그래밍(Structured Programming) 최초로 적용된 패러다임은 구조적 프로그래밍으로, 1968년 에츠허르 비버 데이크스트라(Edsger Wybe Dijkstra)가 발견했다. 데이크스트라는 무분별한 점프(goto)는 프로그래밍에 해롭다는 사실을 제시하고 if/then/else와 do/while/until 과 같은 더 익숙한 구조로 대체 했다. 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과 한다. 객체 지향 프로그래밍(Object-Oriented Programming) 1966년, 올레 요한 달(Ole Johan Dahi)과 크리스텐 니가드(Kristen ..
2023.05.19 -
2장. 두 가지 가치에 대한 이야기
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 두 가지 가치에 대한 이야기 모든 소프트웨어 시스템은 이해관계자에게 서로 다른 두 가지 가치를 제공하는데, 행위(behavior)와 구조(structure)가 바르 그것이다. 행위 소프트웨어의 첫 번째 가치는 바로 행위(behavior)다. 프로그래머를 고용하는 이유는 이해관계자를 위해 기계가 수익을 창출하거나 비용을 절약하도록 만들기 위해서다. 이를 위해 프로그래머는 이해관계자가 기능 명세서나 요구사항 문서를 구체화 할 수 있도록 돕는다. 많은 개발자들이 기계를 구현하고 버그를 수정하는 일이 자신의 직업이라고 믿지만 틀렸다. 아키텍처 소프트웨어의 두 번째 가치는 소프트웨어(software)와 관련 있다. 부..
2023.05.18 -
1장. 설계와 아키텍처란?
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 설계와 아키텍처란? 설계(design)와 아키텍처(architecture)는 어떤 차이가 있는가? 아키텍처는 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬때 사용 된다. 반면, 설계는 저수준의 구조 또는 결정사항 등을 의미 할 때가 많다. 소프트웨어 설계에서 저수준의 세부사항과 고수준의 구조는 모두 소프트웨어 전체 설계의 구성요소다. 이 둘은 단절 없이 이어진 직물과 같으며, 이를 통해 대상 시스템의 구조를 정의한다. 개별로는 존재할 수 없고, 실제로 이 둘을 구분 짓는 경계가 뚜렿하지 않다. 고수준에서 저수준으로 향하는 의사결정의 연속성만 있을 뿐이다. 목표는? 소프트웨어 아키텍처의 목표는 필요한 시..
2023.05.18 -
12장. 아키텍처 스타일 결정하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 아키텍처 스타일 결정하기 언제 실제로 육각형 아키텍처 스타일을 사용해야 할까? 언제 육각형 아키텍처 스타일 대신 전통적인 계층형 아키텍처 스타일을 고수 해야 할까? 이 두가지가 가장 궁극적인 질문 이다. 도메인이 왕이다. 외부의 영향을 받지 않고 도메인 코드를 자유롭게 발전시킬 수 있다는 것은 육각형 아키텍처 스타일이 내세우는 가장 중요한 가치다! 육각형 스타일과 같은 도메인 중심의 아키텍처 스타일은 DDD의 조력자라고까지 말할 수 있다. 도메인을 중심에 두는 아키텍처 없이는, 또 도메인 코드를 향한 의존성을 역전시키지 않고서는, DDD를 제대로 할 가능성이 없다. 즉, 설계가 항상 다른 요소들에 의해 주도되고 말 것이다...
2023.05.15 -
11장. 의식적으로 지름길 사용하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 의식적으로 지름길 사용하기 절대 갚을 길 없는 기술 부채를 쌓아가면서 항상 지름길의 유혹을 느낀다는 사실을 저주한다. 지름길을 방지하기 위해서는 먼저 지름길 자체를 파악해야 한다. 왜 지름길은 깨진 창문 같을까? 1969년 심리학자 필립 짐바르도(Philip Zimbardo)는 나중에 깨진 창문 이론이라고 알려진 실험을 했다. 어떤 것이 멈춘 것처럼 보이고, 망가져 보이고, [부정적인 형용사를 넣어보자], 혹은 관리되지 않는다고 여겨지면 인간의 뇌는 이를 더 멈추고, 망가뜨리고, [부정적인 형용사를 넣어보자] 해도 된다고 생각하게 된다. 이 이론은 삶의 많은 부분에 적용할 수 있다. 기물 파손이 흔한 동네에서는 방치된 차를..
2023.05.15 -
10장. 아키텍처 경계 강제하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 아키텍처 경계 강제하기 일정 규모 이상의 모든 프로젝트에서는 시간이 지나면서 아키텍처가 서서히 무너지게 된다. 계층 간의 경계가 약화되고, 코드는 점점 더 테스트하기 어려워지고, 새로운 기능을 구현하는 데 점점 더 많은 시간이 든다. 경계와 의존성 아키텍처 경계를 강제한다는 것은 의존성이 올바른 방향을 향하도록 강제하는 것을 의미한다. 아키텍처에서 허용되지 않은 의존성을 점선 화살표로 표시했다. 위 그림은 육각형 아키텍처의 요소들이 클린 아키텍처 방식과 유사항 4개의 계층에 어떻게 흩어져 있는지 보여준다. 가장 안쪽의 계층에는 도메인 엔티티가 있고 애플리케이션 계층은 애플리케이션 서비스 안에 유스케이스를 구현하기 위해 도메..
2023.05.14