개요

KISS는 Keep It Simple, Stupid 또는 Keep It Simple and Straightforward의 약자이며 1960년대 미 해군에서 출발한 설계 원칙입니다. 소프트웨어에서는 불필요한 복잡성을 제거하고 이해와 변경이 쉬운 구조를 지향합니다. 목표는 적은 개념과 짧은 경로로 같은 가치를 제공하는 시스템을 만드는 것임

핵심 개념

  • 단순함 추구: 필요 최소의 개념, 규칙, 구성 요소 유지
  • 이해 용이성: 읽고 추론하기 쉬운 흐름과 명명
  • 유지보수 용이성: 응집도 높이고 결합도 낮춰 변경 영향 최소화

적용 방법

  • 처음부터 모든 시나리오를 포괄하려 하지 말고 현재 요구에 맞춘 최소 기능으로 시작
  • 큰 만능 모듈 대신 작고 역할이 분리된 구성으로 나누기
  • 공개 인터페이스를 최소화하고 기본값을 합리적으로 설계
  • 데이터 흐름을 단방향으로 단순화하고 예외 경로는 명시적으로 처리

관련 원칙

  • DRY: 중복 제거로 변경 비용과 오류 가능성 감소
  • YAGNI: 지금 필요 없는 기능은 만들지 않음

간단 예시

모든 옵션을 받는 doSomething(config) 하나로 처리하려는 유혹을 경계. 대신 doSimpleA, doSimpleB처럼 명확한 역할의 작은 함수로 분리하고 기본 동작을 안전하게 설계함. 설정이 꼭 필요할 때만 제한된 형태로 노출

주의와 한계

지나친 단순화는 요구 사항을 놓치거나 성능 병목을 숨길 수 있음. 단순함은 기능 포기나 임시방편이 아니라 핵심을 분리하고 불필요를 걷어내는 구조적 선택이어야 함. 변경 가능성, 운영 환경, 팀 역량 같은 제약을 고려해 균형 잡힌 트레이드오프 설계 필요

마무리

KISS의 본질은 덜 하는 것이 아니라 더 잘 하는 것에 있음. 작게 시작하고 반복적으로 다듬으면서 복잡성이 자연스럽게 커지지 않도록 경계하는 습관이 유지보수 가능한 코드베이스를 만든다 함

참고자료