유지보수성과 확장성을 동시에 잡는 설계 원칙
많은 프로젝트가 초반에는 잘 돌아갑니다.
하지만 몇 달만 지나도 코드가 복잡해지고,
작은 수정 하나에도 전체가 흔들리기 시작합니다.
왜 그럴까요?
유지보수성과 확장성 사이에는
트레이드 오프가 숨어있기 때문입니다.
유지보수만 고려하면
때로는 과도한 설계가 필요 없어지고
간단하게 만드는게 좋습니다.
다만 이후 기능 추가시에는
점점더 복잡도가 올라가게 됩니다.
반대로 확장성만 고려하면
처음부터 과도한 설계를 할 확률이 커집니다.
Product Engineer는 이 균형을 잡아야 합니다.
제가 중요하게 생각하는 원칙은 세 가지입니다.
1. 경계를 먼저 설계하기
읽기와 쓰기, 서버와 클라이언트, 도메인과 인프라.
경계가 명확해야 유지보수성과 확장성 사이
균형을 잡을 수 있습니다.
2. 의도를 코드 구조에 드러내기
“이 컴포넌트는 절대 상태를 갖지 않는다”
“여기는 반드시 사용자 이벤트를 포함한다”
이런 설계 의도를 구조로 남겨야 수정이 쉽습니다.
3. 변경 가능성과 안정성을 분리하기
자주 바뀌는 영역과
절대 바뀌지 말아야 하는 영역을 구분하세요.
안정된 부분은 Entities로,
변경이 일어나는 부분을 mapper 로 감싸서
안정된 부분을 변경으로부터 격리합니다.
AI 시대에도 이 원칙은 그대로 유효합니다.
AI가 구현을 대신해줄수록,
우리는 설계의 균형을 잡는 일에 집중해야 합니다.
혹시 여러분은
지금 하고 있는 프로젝트가
유지보수성과 확장성 사이의 균형을
잘 잡고 있다고 느끼시나요?
다음 내용이 궁금하다면?
이미 회원이신가요?
2025년 9월 10일 오전 11:37