데브허브 | DEVHUB | 이펙티브 아키텍쳐 - 1. 설계와 코드 오너쉽이펙티브 아키텍쳐 - 1. 설계와 코드 오너쉽
- AI 시대에는 전통적인 소프트웨어 설계 기법의 유효성에 대한 의문이 제기되며, AI를 활용한 개발 환경에서는 설계 오류의 비용 부담이 줄어들어 '최적해'를 찾는 공학적 접근이 더 유용해질 수 있습니다. 🤖
- 소프트웨어 설계에는 '정답이 없다'는 관점(시니어 다수 지지)과 '주어진 상황 내 최적해가 존재한다'는 관점(공학적 접근)이 있으며, 전자는 책임 회피 수단으로 활용되기도 합니다. ⚖️
- 소프트웨어 공학은 수학적, 논리적, 과학적 해법보다는 조직 이론이나 커뮤니케이션 이론에 기반하고 있어, 엄밀한 의미의 '엔지니어링'으로 보기 어렵다는 비판적 시각이 존재합니다. 🧪
- 소프트웨어 공학의 핵심 문제는 '코드 오너십' 관리이며, 소유자가 없는 코드는 빠르게 블랙박스화되어 유지보수가 불가능해지므로, 변화율에 따라 오너십을 효율적으로 배분하는 전략이 중요합니다. 🔑
- 사람이 소유할 수 있는 코드의 양은 한정적이며, 개발 인력을 늘리면 커뮤니케이션 비용이 기하급수적으로 증가하여 효율적인 코드 오너십 배분과 커뮤니케이션 비용 절감이 설계의 주요 과제입니다. 👥
- 코드 오너십 문제를 해결하기 위해 DDD, MSA 등으로 코드 소유를 줄이거나 격리하려는 시도와, CMMI, UML 같은 문서화, 그리고 실행 가능한 명세(자동화 테스트, Swagger, IAC)를 통한 공유 및 자산화 노력이 있었습니다. 📚
- 실행 가능한 명세는 DSL화 부족, 설명 부족 등의 한계로 인해 문서를 완전히 대체하기 어려우며, 역사적으로 소프트웨어가 적시에 개발된 적이 없다는 사실은 소프트웨어 공학의 실패를 방증합니다. 📉