깨끗한 시스템. 깨끗한 아키텍처 | 클린코드 11장

/// <summary>
/// Nomad Coder - 클린코드 - 11장. 시스템
/// @author         : CloudD
/// @last update  : 2025. 06. 13.
/// @update
///     - 2025. 06. 13 : 최초 작성.
/// </summary>


Chat GPT 가 생성한 '개발자의 독서' 이미지 #11


오늘은 11장 "시스템"을 읽었습니다.
읽는 동안 인상 깊었던 내용과 기억하고 싶은 문장들을 정리해 봅니다.


"관심사 분리는 우리 분야에서 가장 오래되고 가장 중요한 설계 기법 중 하나"

- 이전 장에서 보았듯이, 큰 서랍 하나에 모든 것을 넣기보다는 작은 서랍 여러 개를 만들어 기능과 이름이 명확한 컴포넌트로 나누는 것이 바로 관심사 분리라고 생각합니다. 
하나의 모듈, 클래스, 함수가 하나의 책임이나 목적(관심사)을 가지도록 분리하는 것이 핵심인 것 같습니다.

"처음부터 올바르게 시스템을 만들 수 있다는 믿음은 미신이다. 대신에 우리는 오늘 주어진 사용자 스토리에 맞춰 시스템을 구현해야 한다. 내일은 새로운 스토리에 맞춰 시스템을 조정하고 확장하면 된다. 이것이 반복적이고 점진적인 애자일 방식의 핵심이다."

- 일을 하다 보면 기획이 자주 바뀌기도 하고, 우선순위가 갑자기 뒤바뀌기도 합니다.

- 예전에는 BDUF (Big Design Up Front: 모든 설계와 구조를 완벽하게 정의하고 문서화한 뒤에 작업에 들어가는 방식) 방식처럼 모든 설계를 미리 정의한 뒤 개발을 시작하곤 했습니다. 저도 과거에 이런 폭포수(Waterfall) 방식으로 프로그램을 개발했던 적이 있는데, 개발 중간에 프로그램의 방향성이 바뀌는 것이 매우 큰 스트레스로 다가왔습니다. 대공사를 진행해야 하기 때문입니다.

- 요즘은 반대로 MVP(Minimum Viable Product) 방식처럼 작고 실용적인 기능부터 구현하고, 피드백을 반영해 개선해 나가는 방식을 더 선호합니다.

- BDUF 와 MVP 의 차이를 표로 정리하면 다음과 같습니다:
BDUF 와 MVP 의 차이


"시스템 역시 깨끗해야 한다."
"시스템을 설계하든 개별 모듈을 설계하든, 실제로 돌아가는 가장 단순한 수단을 사용해야 한다는 사실을 명심하자."

- 이 문장을 읽으며, 예전에 들었던 "Simple is better than complex." 라는 문장이 떠올랐습니다. 단순하지만 잘 동작하고, 지금 테스트 가능한 구조를 선택해 시스템을 구현하는 훈련을 많이 해야겠습니다.


소감

11장 "시스템"은 유독 어렵게 느껴졌습니다.
하지만 몇 번 반복해서 읽다 보니, 저자가 하고 싶은 말이 조금씩 보이기 시작했습니다.

완벽한 시스템 설계는 처음부터 존재하지 않습니다.
지금 실행 가능한 작은 단위에서 시작해, 더 많은 고민과 피드백을 거쳐 점진적으로 개선해 나가는 것이 중요하다는 사실을 한번 더 배웠습니다.
가능한 한 깨끗하고 명확한 구조를 유지해서 제가 만드는 시스템을 건강하게 만들어야겠습니다.



CloudD

예술하는 프로그래머, 코딩하는 예술가

댓글 쓰기

다음 이전