2025-08-29 01:38

Tags: 소프트웨어 공학

KISS 원칙 Keep It Simple Stupid!

  • 가장 중요한 기능에 집중하고, 불필요한 복잡성을 제거하여 시스템의 신뢰성과 효율성을 극대화
  • 1960년대 냉전 시기 미국의 항공기 개발팀의 ‘켈리 존슨’에 의해 제트 전투기를 설계하는 엔지니어에게 강조한 디자인 원칙 에서 시작
    • 평범한 정비병이 최소한의 도구로 현장에서 고칠 수 있을만큼 시스템이 단순해야 한다.
  • 핵심에 집중한다는 점에선 MVP와도 연결
  • 단순함은 쉬움이 아니라 오히려 훨씬 많은 노력이 필요할 수 있다.
  • 불필요한 단순화나 과도한 단순화는 오히려 더 큰 문제를 낳을 수 있다. (있어야 하는게 빠져버림)

“Simplicity is the ultimate sophistication.” (단순함은 궁극의 정교함이다.) - 레오나르도 다빈치

소프트웨어 개발에서의 KISS

적용 기법설명예시
리팩토링]복잡하고 긴 함수나 클래스를 더 작고 명확한 단위로 계속해서 쪼개고 개선하는 작업.100줄짜리 processOrder 함수를 validateInput, checkInventory, createShippingLabel 등 여러 개의 작은 함수로 분리.
YAGNI 원칙”You Ain’t Gonna Need It” (넌 그게 필요 없을 거야)의 약자. 지금 당장 필요하지 않은 기능은 미리 예측해서 만들지 말라는 원칙.”나중에 사용자들이 통계 기능을 원할 수도 있으니 미리 만들어두자”가 아니라, 실제 요청이 들어왔을 때 개발 시작.
단일 책임 원칙 (SRP)하나의 클래스나 모듈은 오직 하나의 책임(기능)만 가져야 한다는 원칙.User 클래스는 사용자 정보(이름, 이메일)만 관리하고, 데이터베이스 저장 로직은 UserRepository 클래스가 담당.
단순한 도구 선택프로젝트의 규모와 목적에 맞는 가장 단순하고 적절한 기술 스택을 선택.간단한 블로그를 만드는데 복잡한 마이크로서비스 아키텍처 대신 워드프레스나 정적 사이트 생성기를 사용.