아마 네트워크 어플리케이션 프레임워크를 처음부터 다시 작성하는 것이 이번이 다섯 번째인 듯 하다. 전부 이벤트 드리븐이었다. 첫재와 둘째 (네티 1)는 블러킹 I/O 기반이었다. 나머지 (네티 2, 미나, 네티 3)는 넌블러킹 I/O 기반이다.
다섯 번의 재작성… 때론 이제 네트워크 어플리케이션 프레임워크는 그만두고 그 위에서 뭔가를 할 시간이라는 생각이 든다. 항상 멋진 빌드 툴이나 좀 더 엔터프라이즈 스타일의 물건을 만들고 싶었으니까. 하지만 현실은 아직도 네트워크 어플리케이션 프레임워크를 만들고 있다는 것!
한편으로는 새로 작성할 때마다 흥미진진하고 신선한 무언가가 느껴진다는 것도 깨닫게 되었다. 같은 문제를 해결하는데는 다양한 방법이 있고, 다른 각도에서 접근했을 때 더 잘 풀리기도 한다. 아마도 네트워크 어플리케이션 개발의 다양한 측면을 전보다 더 잘 이해하게 되었기 때문이 아닌가 싶다. 그렇다. 이 세상의 네트워크 어플리케이션 디자인에는 개선의 여지가 많이 있는 것 같다… 아직은!
흥미진진한 기분 밑에는 두려움도 숨어 있다. 매일 아침 스스로에게 “이 다섯 번째 재작업이 네 번째에 비해 진일보한 것이 될까?” 라고 묻는다. 어려운 질문이지만, 그런 질문은 내가 최선을 다하고 알고 있는 모든 가능한 이슈를 고려하며 작업하도록 해 준다.
그래서? 조금 압박감이 있긴 하지만 정말 재미있다. 🙂