함수, 펑터, 그리고 모나드2026.03.01함수, 펑터, 그리고 모나드Software Design#functional2026.03.01함수, 펑터, 그리고 모나드Software Design#functional복잡한 버그는 대개 거대한 기능이 아니라 사소한 데이터 변환 구간에서 시작된다. 문자열을 한 번 다듬고, 숫자를 한 번 바꾸고, 그 결과를 다음 단계로 넘기는 단순한 흐름이다. 그런데 조건이 조금씩 추가되는 순간 로직은 빠르게 복잡해진다. 값만 바꾸던 코드가 어느새 값의 부재, 비동기…
마약 조직으로 이해하는 책임 할당 패턴 GRASP2025.12.07마약 조직으로 이해하는 책임 할당 패턴 GRASPSoftware Design#responsibility#design-principles#architecture+2 more categories or tags2025.12.07마약 조직으로 이해하는 책임 할당 패턴 GRASPSoftware Design#responsibility#design-principles#architecture+2 more categories or tags<갱단과의 전쟁>을 보다가 또 하나의 흥미로운 생각이 들었다. 마약 조직이라는 대상은 도덕적으로 정당화될 수 없지만, 구조적인 관점에서 보면 규모를 키우고 오래 버티기 위해 꽤 일관된 설계를 갖추고 있다는 점이다. 이들의 설계는 멋있어서가 아니라 생존을 위해 필연적으로 그렇게 된 것처럼…
마약 조직으로 이해하는 객체지향 설계 원칙 SOLID2025.12.07마약 조직으로 이해하는 객체지향 설계 원칙 SOLIDSoftware Design#encapsulation#design-principles#solid+2 more categories or tags2025.12.07마약 조직으로 이해하는 객체지향 설계 원칙 SOLIDSoftware Design#encapsulation#design-principles#solid+2 more categories or tagsSBS에서 제작한 다큐멘터리 <갱단과의 전쟁>을 보다가 흥미로운 생각이 들었다. 마약 조직이라는 대상이 도덕적으로는 비난받아 마땅하지만, 구조적인 관점에서 보면 놀라울 정도로 객체지향적인 특성을 가지고 있다는 점이다. 상위 조직은 세부 구현에 관여하지 않는다. 전체적인 전략과 역할만 정…
inheritance v composition2025.01.30inheritance v compositionSoftware Design#object-oriented2025.01.30inheritance v compositionSoftware Design#object-oriented객체 지향 프로그래밍은 코드의 재사용성과 유지보수성을 높이기 위해 다양한 설계 원칙을 제시한다. 그중에서도 클래스 상속(Class Inheritance)과 클래스 합성(Class Composition)은 객체 간의 관계를 정의하는 대표적인 방법이며, 시스템의 유연성과 확장성에 직접적인…
비즈니스 로직은 어디에 있어야 할까2025.01.30비즈니스 로직은 어디에 있어야 할까Software DesignNest.js#object-oriented2025.01.30비즈니스 로직은 어디에 있어야 할까Software DesignNest.js#object-orientedNest.js에서 컨트롤러와 각각의 프로바이더는 분명한 책임을 갖는다. 하지만 막상 서버를 개발하다 보면, 이 책임들을 깊이 고민하지 않은 채 코드를 작성하게 되고, 그 결과 클래스들이 서로의 영역을 침범하는 상황이 반복된다. 나 역시 컨트롤러에 비즈니스 로직이 섞이거나, 서비스가 지나…
Feature-Sliced Design2024.12.22Feature-Sliced DesignSoftware DesignReact#fsd-architecture2024.12.22Feature-Sliced DesignSoftware DesignReact#fsd-architecture프론트엔드 애플리케이션이 커질수록 문제는 코드의 복잡성이 아니라 구조의 일관성에서 발생한다. 컴포넌트와 상태, 비즈니스 로직이 뒤섞이기 시작하면, 기능 추가는 점점 느려지고 변경에 대한 두려움은 커진다. **FSD(Feature-Sliced Design)**는 이러한 문제를 “어떻게 구…
UML2024.07.22UMLSoftware Design#object-oriented2024.07.22UMLSoftware Design#object-oriented소프트웨어 시스템은 코드로 구현되지만, 코드만으로 시스템 전체를 설명하기는 어렵다. 특히 여러 명이 함께 개발하거나, 시간이 지나 다시 코드를 바라보는 상황에서는 “이 시스템이 어떤 구조를 가지고 있고, 왜 이렇게 설계되었는지”를 빠르게 파악하기가 쉽지 않다. 이런 맥락에서 설계 의도를…