단순함이 곧 신뢰성, 복잡성은 피하라!

by DD
5개월 전
조회수 15

Rich Hickey는 단순성이 소프트웨어의 신뢰성을 위한 필수 조건임을 강조하며, 쉬움(easiness)을 추구하다 복잡성에 갇히는 함정을 경계함.

상태(state), 객체(object), 상속(inheritance) 등 복잡한 구조 대신 값(values), 함수(functions), 네임스페이스(namespaces)와 같은 단순한 구조를 선택할 것을 제안함.

개발자들은 단순한 시스템 구축을 위해 추상화, 캡슐화, 단순한 아티팩트 생성 등의 방법을 활용하고, 코드의 가독성유지보수성을 높여야 함.

단순한 아키텍처 설계의 핵심 원리

Hickey는 소프트웨어의 복잡성을 야기하는 주요 원인으로 상태 관리를 지목하며, 불변성(immutability)을 통해 상태를 관리하는 방법을 제시한다. 구체적으로, 값(values)을 사용하고, 함수형 프로그래밍 패러다임을 적용하여 부수 효과를 최소화해야 한다. 따라서, 데이터 중심 설계를 통해 시스템의 유연성확장성을 확보할 수 있다.

단순성 vs. 쉬움: 개발 방식의 딜레마

Hickey는 쉬움(easiness)을 추구하는 것이 종종 복잡성을 초래한다고 지적하며, 개발자들이 익숙한 도구와 기술에 의존하는 경향을 비판한다. 반면, 단순성을 추구하는 것은 처음에는 더 어려울 수 있지만, 장기적으로는 코드의 이해도유지보수성을 향상시킨다. 따라서, 새로운 기술을 배우고, 단순한 구조를 선택하는 노력이 필요하다.

실용적인 단순성 구현 전략

강연에서는 추상화, 캡슐화, 모듈화를 통해 단순한 시스템을 구축하는 방법을 제시한다. 구체적으로, 인터페이스를 활용하여 구현 세부 사항을 숨기고, 단일 책임 원칙을 준수하여 각 모듈의 역할을 명확히 해야 한다. 결과적으로, 코드의 재사용성을 높이고, 변경에 유연한 시스템을 구축할 수 있으며, 테스트 용이성 또한 확보할 수 있다.

Rich Hickey: Simplicity is a prerequisite for reliability