#1 클린 아키텍처 - 로버트 C. 마틴

2023. 12. 22. 11:53·📚 Books 📚/클린 아키텍처

엉클 밥

 

클린 아키텍처

소프트웨어 아키텍처의 보편 원칙을 적용하면 소프트웨어 수명 전반에서 개발자 생산성을 획기적으로 끌어올릴 수 있다. 《클린 코드》와 《클린 코더》의 저자이자 전설적인 소프트웨어 장인

www.aladin.co.kr

소프트웨어 아키텍처의 보편 원칙을 적용하면 소프트웨어 수명 전반에서 개발자 생산성을 획기적으로 끌어올릴 수 있다. 《클린 코드》와 《클린 코더》의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 《클린 아키텍처》에서 이러한 보편 원칙들을 설명하고 여러분이 실무에 적용할 수 있도록 도와준다.

단순히 선택지들을 나열하는 책이 아니다. 상상할 수 있는 모든 분야의 소프트웨어 환경에서 반 세기를 살아온 저자의 경험에 기초하여, 성공하기 위해서는 어떤 선택을 해야 하고 무엇이 결정적인지를 이야기해 준다. 저자의 명성에 걸맞게 이 책에는 여러분이 직면할 현실적인 도전들을 극복할 수 있는 진지한 해결책으로 가득 차 있다.

 

 

얼마 전 원티드 온보딩 챌린지를 통해 추상화 원칙에 따른 좋은 컴포넌트 작성법을 공부할 때 많이 인용되고 소개되었던 책이었다. 

비단 프론트 엔드 혹은 더 작은 영역인 React 뿐만 아니라 프로그래밍에 모두 적용 가능한 내용이 들어있다.

 

1. 서문

나는 수많은 앱을 만들었다. 수많은 시스템을 구축했다. 그리고 이 모두를 경험하고 고민한 끝에 놀라운 무언가를 깨달았다.

아키텍처 규칙은 동일하다!
- 클린 아키텍처(xx)

아빠 안 잔다

 

2. 1부 소개

반면 소프트웨어를 제대로 만들게 되면 마법과도 같은 일이 벌어진다.
...
제대로 된 소프트웨어를 만들면 아주 적은 인력만으로도 새로운 기능을 추가하거나 유지보수할 수 있다. 변경은 단순해지고 빠르게 반영할 수 있다.
- 클린 아키텍처 (2p)

개발에 가장 많은 시간이 할애되는 부분이 유지보수라고 한다. 그렇기에 그 시간을 줄이기 위해 가장 많이 고민하고 개선법을 찾으려 하는 것 같다. 자연스레 자료와 정보도 많이 있다.

 

빨리 가는 유일한 방법은 제대로 가는 것이다.
- 클린 아키텍처 (13p)

가장 담백하게 한 마디로 잘 표현한 것 같다.

개발자가 속는 거짓말로 "지저분한 코드를 작성하면 단기간에는 빠르게 갈 수 있고, 장기적으로 볼 때만 생산성이 낮아진다."라고 표현을 했는데, 실제 실험을 통해 단순한 프로그램을 개발할 때도 TDD를 사용한 것이 사용하지 않을 때 보다 개발 시간이 빠르다고 한다.

2024

 

3. 3부 설계원칙

좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작한다. 좋은 벽돌을 사용하지 않으면 빌딩의 아키텍처가 좋고 나쁨은 그리 큰 의미가 없는 것과 같다. 반대로 좋은 벽돌을 사용하더라도 빌딩의 아키텍처를 엉망으로 만들 수 있다. 그래서 좋은 벽돌로 좋은 아키텍처를 정의하는 원칙이 필요한데, 그게 바로 SOLID다.
...
1. 변경에 유연하다.
2. 이해하기 쉽다.
3. 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트 기반이 된다.
- 클린 아키텍처 (62p)

서문에서 말한 것처럼 많은 경험을 통해 좋은 아키텍처를 위한 공통점을 발견하였는데 그 기준으로 3부 설계원칙에선 SOLID 원칙을 하나하나 소개해 준다.

주석이 되어버린 보기

 

4. 4부 컴포넌트 원칙

컴포넌트 사용자들을 필요하지 않는 것에 의존하게 강요하지 말라.
- 클린 아키텍처 (111p)

CRP(Common Reuse Principle) 공통 재사용 원칙을 설명하는 첫 문장이다. 재사용되는 경향이 있는 클래스와 모듈들은 같은 컴포넌트에 포함해야 한다고 말한다. 재사용 가능한 클래스는 다른 클래스와 상호작용을 하는 경우가 많기 때문이다.

https://medium.com/@anca.rebeca/clean-architecture-component-cohesion-principles-8c9722abd9bd

 

Clean Architecture: Component Cohesion Principles

In software development, component principles are a guide for organising classes into components to make them more organised and…

medium.com

 

컴포넌트 의존성 그래프에 순환이 있어서는 안 된다.
- 클린 아키텍처 (116p)

ADP(Acyclic Dependencies Principle) 의존성 비순환 법칙

어제 퇴근 전까지 잘 되던 코드가 야근했던 동료가 내가 작성한 코드 중 의존하고 있던 무언가를 수정한다면 오늘 아침 문제가 발생할 수 있다. 책에선 이러한 현상을 '숙취 증후군'이라고 부른다.

이를 방지하기 위해 개발 환경을 릴리스 가능한 컴포넌트 단위로 분리하여 컴포넌트 간 순환 의존성을 제거해야 한다.

https://medium.com/brainstation23/a-brief-introduction-to-acyclic-dependencies-principle-c43ca7f3bd36

 

A Brief Introduction to Acyclic Dependencies Principle of Development Process

This article is going to have a gist of the Acyclic Dependencies Principle (ADP) of Development Process.

medium.com

 

변경이 쉽지 않은 컴포넌트가 변동이 예상되는 컴포넌트에 의존하게 만들어서는 절대로 안 된다. 한번 의존하게 되면 변동성이 큰 컴포넌트도 결국 변경이 어려워진다.
...
모듈을 만들 때는 변경하기 쉽도록 설계했지만, 이 모듈에 누군가가 의존성을 매달아 버리면 당신의 모듈도 변경하기 어려워진다.
- 클린 아키텍처 (125p)

SDP(Stable Dependencies Principle) 안정된 의존성 법칙

https://medium.com/javarevisited/uncle-bobs-advice-on-stability-and-abstraction-b96ea8623e97

 

Uncle Bob’s Advice on Stability and Abstraction

My brief and concise summary of Uncle Bob’s old Clean Code series. Namely, the episode about Acyclic Dependencies, Stable Dependencies, and…

medium.com

 

'📚 Books 📚/클린 아키텍처' 카테고리의 다른 글
  • #2 클린 아키텍처 - 로버트 C. 마틴
Yeonhub
Yeonhub
✨ https://github.com/yeonhub 📧 lsy3237@gmail.com
  • Yeonhub
    비 전공자의 Be developer
    Yeonhub
  • 전체
    오늘
    어제
    • 전체보기 (169)
      • 🔍 Tech 🔍 (19)
        • Front-End (11)
        • Back-End (4)
        • AI (1)
        • Server (1)
        • Etc (2)
      • 💡 원티드 프리온보딩 챌린지 💡 (14)
        • PRE-ONBOARDING_AI (11월) (1)
        • PRE-ONBOARDING_FE (2월) (2)
        • PRE-ONBOARDING_FE (1월) (2)
        • PRE-ONBOARDING_FE (12월) (9)
      • 🔥 부트캠프-웹 개발 🔥 (118)
        • HTML5 (7)
        • CSS3 (21)
        • JavaScript (27)
        • JavaScript_advanced (9)
        • React (24)
        • Next (1)
        • MYSql (5)
        • Node (5)
        • 오늘하날(개인프로젝트) (12)
        • 이젠제주투어(팀프로젝트) (7)
      • 💻 CS 💻 (1)
        • 알고리즘 (1)
      • ⚡ 코딩테스트 ⚡ (11)
        • JavaScript (11)
      • 📚 Books 📚 (6)
        • 클린 아키텍처 (2)
        • 인사이드 자바스크립트 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    라스콘
    node crontab
    expo 길찾기
    react native bottom sheet
    react native firebase analytics
    expo deep linking
    expo map
    php node
    expo fcm push
    python node
    expo 지도
    node cron
    Node
    react native expo fcm
    react native analytics
    node fcm
    node.js fcm
    react vite
    rn admob
    rn bottom sheet
    react native admob
    expo google map
    expo node fcm
    컴파운드 컴포넌트 패턴
    javascript fcm
    bottom sheet
    프론트엔드 테스트코드
    expo admob
    expo fcm
    라스콘4
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Yeonhub
#1 클린 아키텍처 - 로버트 C. 마틴
상단으로

티스토리툴바