지속 성장 가능한 설계를 만들어가는 방법

신석진( Seokjin Shin)·2024년 8월 4일
0

개념과 격벽

각각의 서비스를 개념 단위로 묶고 벽을 친다.(격벽)
개념간 접근을 제어하는 격벽이 필요하다.
모든 개념간 참조는 벽을 통해서 진행되므로 벽은 방화벽처럼 들어올 서비스와 차단할 서비스를 구분하는 역할을 한다고 본다.

개념과 격벽의 사용

대출

기존
대출의 행위로 신청 실행 상환이 있는 구조
개념 적용
신청 -> 실행 -> 대출 -> 상환

상화의 경우 성공과 실패 개념이 붙어 확장될 수 있다.

  • 하나의 개념이 많이 쓰이면 분리를 검토하자
  • 상태에 의해 개념이 생기면 격벽을 세워보자
  • 상태나 행위를 개념으로 착각할 수 있다

커머스

상품을 직접관리하거나 외부에서 연동하여 가져올 수 있다.
상품과 외부 연동사 사이에 격벽을 세운다.
외부 연동사의 경우에는 개념이 아니다.
개념에도 계층이 있고 개념이 없는 곳도 존재한다.
외부 연동사는 개념이 아니므로 격벽을 넘을 수 없다.
외부 연동사의 경우에는 DB에 데이터를 수집이 정제하는 역할만을 해야한다.

  • 개념에도 계층이 있다
  • 모든 것이 개념이 되진 않는다
  • 개념 영역을 분리할 수 있다

설계

하드웨어나 건축에 비해 소프트웨어는 요구사항을 받아들이고 변경이 쉬워야한다.
인정하자

  • 요구사항은 계속변한다
  • 완벽한 설계란 없다
  • 소프트웨어는 유연해야한다.

하지말자

  • 요구사항이 완벽해야 설계 가능해요
  • 우리 설계에서 그건 개발 못해요
  • 설계해 봐야 개발 일정이 나옵니다

상기하자

  • 성급한 설계는 모든 것을 망가트린다
  • 과도한 설계는 모든 것을 망가트린다
  • 설계는 필요한 만큼만 하자

구현

설계에 시간을 쓰는 것보다 작은 단위의 구현을 지속하는 것이 유연하고 성장 가능한 설계이다.
개념 + 격벽 <—테스트코드—> 증명 + 피드백 = 설계

결론

개념을잡고
격벽을세워
구현을 채워나가
설계를 완성한다.

QnA

  • 격벽을 세우는 기준이 어떻게 되는가? 의심하는 기준은?
  • 개념과 행위를 나누는 기준?
  • 용어 정리 개념, 상태, 행위
    개념 계층별 특징 및 어떻게 나누는지?

0개의 댓글