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 클래스가 담당. |
단순한 도구 선택 | 프로젝트의 규모와 목적에 맞는 가장 단순하고 적절한 기술 스택을 선택. | 간단한 블로그를 만드는데 복잡한 마이크로서비스 아키텍처 대신 워드프레스나 정적 사이트 생성기를 사용. |