웹 프레임워크, 실행 흐름을 코드 구조로 파악한다면?

by DD
4개월 전
조회수 34

기존 웹 프레임워크의 복잡한 실행 흐름으로 인해 발생하는 문제점을 지적하며, 실행 순서의 명시성 부족을 핵심 원인으로 분석

Spine 프레임워크는 요청 실행 순서를 단일 모델로 고정하고, 실행 흐름을 코드 구조로 명확하게 표현하는 것을 목표로 함

컨트롤러 호출과 실행 판단 분리, 인터셉터 기반 확장, 명시적 구조를 통해 유지보수성 및 디버깅 효율 향상을 추구

기존 프레임워크의 자동화된 기능 대신 명시적인 코드를 요구하여 초기 개발의 불편함이 존재

Spine은 Spring, NestJS를 대체하기 위함이 아닌, 실행 흐름에 대한 새로운 관점을 제시하며, 에코시스템 확장을 계획

Spine의 핵심 원리: 실행 흐름을 하나의 모델로

Spine은 기존 웹 프레임워크와 달리 요청 실행 순서를 단일 모델(Single Execution Model)로 관리한다. 기존 프레임워크는 Filter, Interceptor, AOP 등 여러 컴포넌트가 분산되어 실행 흐름을 파악하기 어려웠다. Spine은 실행 파이프라인(Execution Pipeline)을 통해 요청 처리의 모든 단계를 제어하며, 이는 코드 구조만으로 실행 흐름을 파악할 수 있게 한다.

단일 책임 원칙(Single Responsibility Principle): 각 컴포넌트가 자신의 역할에 집중

명시적인 확장 포인트(Explicit Extension Points): Interceptor를 통한 제한적인 확장

코드 가독성(Code Readability): 실행 흐름을 직관적으로 파악 가능

이러한 구조는 디버깅(Debugging)을 용이하게 하고, 팀 협업(Team Collaboration) 효율을 높이는 데 기여한다.

Spring, NestJS와의 차이점: 실행 흐름의 명시성

Spine은 Spring, NestJS와 같은 기존 프레임워크와 비교하여 실행 흐름의 명시성(Explicit Execution Flow)을 강조한다. Spring과 NestJS는 다양한 기능을 제공하지만, 실행 순서가 여러 컴포넌트에 분산되어 있어 코드만으로 전체 흐름을 파악하기 어렵다. Spine은 컨트롤러 호출과 실행 판단을 분리(Separation of Concerns)하여, 실행 순서를 명확하게 드러낸다.

컨트롤러(Controller) 역할 축소: 유즈 케이스 표현에 집중

Invoker와 Pipeline 분리: 호출과 실행 판단 분리

확장 제한: Interceptor를 통한 제한적인 확장

이러한 차이점은 Spine이 유지보수성(Maintainability)디버깅 효율(Debugging Efficiency)을 높이는 데 기여한다.

Spine 개발 과정의 어려움: 명시성의 대가

Spine 개발 과정에서 가장 큰 어려움은 명시성(Explicitness)을 확보하기 위한 설계였다. 기존 프레임워크에서는 자동화되어 있던 기능들을 명시적으로 코드로 표현해야 했기 때문이다. 이는 초기 개발 단계에서 불편함(Inconvenience)을 야기하지만, 장기적으로는 시스템의 안정성을 높이는 결과를 가져온다.

명시적인 코드(Explicit Code): 자동화된 기능 수동 구현

아키텍처적 판단(Architectural Decisions): 구현보다 구조 설계에 집중

초기 학습 비용(Initial Learning Cost): 새로운 구조에 대한 이해 필요

Spine은 이러한 불편함을 감수하고, 실행 흐름에 대한 통제력(Control over Execution Flow)을 확보하는 것을 목표로 한다.

Spine의 확장성: 에코시스템 구축 계획

Spine은 현재 작은 프레임워크이지만, 장기적으로는 에코시스템(Ecosystem)을 구축할 계획이다. 세션 관리, 트랜잭션, 메시징과 같은 공통 문제를 명시적인 실행 모델 위에서 해결하는 것을 목표로 한다. 이는 자동화된 기능보다는 구조적인 접근 방식(Structural Approach)을 통해 이루어질 것이다.

명시적인 실행 모델(Explicit Execution Model): 확장성 확보

구조적 확장(Structural Extension): 자동화 지양

지속적인 개발(Continuous Development): 커뮤니티 기여 유도

Spine은 기존 프레임워크를 대체하는 것이 아니라, 실행 흐름에 대한 새로운 관점(New Perspective on Execution Flow)을 제시하며, 웹 프레임워크 생태계에 새로운 가능성을 열어갈 것이다.

Spine의 장점: 디버깅 및 팀 협업 효율 증대

Spine은 명시적인 실행 구조를 통해 디버깅(Debugging)팀 협업(Team Collaboration)의 효율성을 높인다. 기존 프레임워크에서는 문제 발생 시 실행 흐름을 파악하기 위해 여러 단계를 거쳐야 했지만, Spine에서는 실행 단계가 고정되어 있어 문제 해결 속도가 빠르다.

문제 해결 속도 향상(Faster Problem Solving): 실행 단계 고정

팀 내 지식 공유 용이(Easier Knowledge Sharing): 코드 구조로 실행 모델 표현

신규 개발자 적응 용이(Easier Adaptation for New Developers): 그림 한 장으로 설명 가능

이러한 장점은 팀 규모가 커질수록 더욱 두드러지며, 유지보수 비용(Maintenance Cost)을 절감하는 데 기여한다.

웹 프레임워크 Spine을 직접 만들며 깨달은 것들