내가 만들어보는 웹 프레임워크
2014년 5월 2일
Java & Servelt 3.0 기반의 웹 프레임 워크 만들기
아무래도 사용자에게 제공하기 위한 서비스 중심의 개발을 하면 도메인 지식이나 프레임워크를 추상적으로 학습만 하는 함정에 빠지기 쉽다. 예를 들면 Java와 Servlet에 대한 깊은 이해 없이 Spring Framework와 같은 프레임워크에 의존해 개발하게 되는 경우가 많다.
이러한 이유는 다양하고 수시로 변경되는 요구 사항에 유연하게 대처해야 하며, 속도를 내야하기 때문에 개발 생산성에 대한 우선 순위가 가장 높기 때문일 것이다.
하지만 개발자로서, 이러한 요구 사항을 해결하기 위한 방법으로 언제까지 외부의 프레임워크나 라이브러리에 의존 할 수는 없다고 생각한다. 장기적으로는 이러한 프레임워크가 왜 출현 했으며, 프레임워크를 구현하기 위해 개발자들이 어떠한 고민을 하였고 노력을 했는지 궁금해 졌고, 이 과정을 통해 학습을 유도하고 개인적인 성취감을 느껴 보고 싶다는 생각이 강하다. 해서 개인적으로 작지만 Java 기반의 웹 프레임워크를 만들어 보려고 한다.
먼저, 프레임워크를 만들기 위한 학습 요소부터 생각해 보았다.
기본적으로 준비하고 고민해 봐야 할 것
- HTTP 1.0 / 1.1 / URI Specification 분석
- Servlet 3.0 Specification 분석
- Java 기반의 기존 Spring Framework & Play Framework 의 아키텍쳐 분석
- 정규 표현식 / Tokenizer / Parser / 구문 분석기 / XML / Annotations 에 대한 이해
- Multi Thread 환경을 고려한 깊은 이해
- 웹 개발과 관련된 자료 구조 와 디자인 패턴 대한 공부와 적용
- Reponse 처리를 위한 String / JSON / XML / HTML / 기타 Template 과의 연동에 대한 전략
- 이외의 이슈와 적용 가능한 오픈 소스 또는 의존 라이브러리 선택 ( DB Connection Pool 등과 같은 )
진행하다보면 생각하지 못한 것이나 여러가 이슈가 존재할텐데, 처음부터 너무 많은 것을 고려하는 것은 아닌가 싶다. 일단 프로토 타이핑을 하면서 단계적으로 진행 해보려고 한다.
프레임워크가 목표해야 할 것의 우선순위
- 프레임워크를 사용하고자 하는 개발자 관점에서의 학습의 용이성. 보다 쉽게 사용 할 수 있고, 이로 인해 후배들이 프레임워크를 왜 사용하는지에 대한 고민을 쉽게 가질 수 있게
- 기존의 프레임워크에 비해 떨어지지 않는 성능. 성능이 가장 1순위의 목표는 아니다. (더 시간을 가지고 고민해 봐야 할 문제 인 것 같다.)
- 웹과 모바일 환경에서 보다 유연하게 사용 할 수 있는 구조 또는 모바일 환경만 을 위한 REST API 개발을 위한 프레임워크가 될 수 도 있다.
- 게임 서비스에 적합한 프레임워크 구조. 광범위하게 모든 영역을 제공하는 구조가 아닌, 특정 서비스의 편의를 위한 기능을 제공
개발자로 살아감에 즐거운 이유가 이러한 것들이 아닐까!