"Screaming Architecture" in .NET makes me want to scream
- 'Screaming Architecture'는 .NET 백엔드에서 재사용성과 유지보수성을 저해하는 폴더 구조 방식이다. 😠
- Uncle Bob의 'Clean Architecture'에서 유래했지만, 실제 .NET 개발에서는 문제점을 야기한다. 📚
- 'Screaming Architecture'는 애플리케이션의 폴더 구조가 그 기능을 명확히 드러내도록 하는 것을 목표로 한다. 🗣️
- 하지만, 이는 .NET에서 namespace 간의 불필요한 의존성을 초래하고 코드 재사용성을 떨어뜨린다. 🔗
- 특히, POCO(Plain Old CLR Object)를 공유하기 어렵게 만들어 여러 시스템 간의 통합을 방해한다. 🧩
- 올바른 방법은 'Shared' 어셈블리를 만들어 POCO와 인터페이스를 공유하고, 각 시스템은 필요한 구현체만 참조하도록 하는 것이다. 📦
- 이렇게 하면 코드의 재사용성이 높아지고, 각 시스템은 독립적으로 발전할 수 있다. 🌱
- 또한, 비즈니스 로직이 담기지 않은 계약(Contracts)을 고객에게 안전하게 배포할 수 있다. 🤝
- 소프트웨어는 스스로 말할 필요가 없으며, 개발자는 클린하고 재사용 가능한 코드를 만드는 데 집중해야 한다. 💻
- 'Screaming Architecture'는 아키텍처가 아닌 단순한 폴더 레이아웃이며, 백엔드에는 적합하지 않다. 📁
- Domain-Driven Design(DDD)의 원칙을 따르는 것이 더 나은 해결책이다. 💡
- 결론적으로, .NET 백엔드에서는 'Shared' 어셈블리를 활용하여 코드 재사용성을 높이고 시스템 간의 결합도를 낮추는 것이 중요하다. ✅