저는 자바스크립트(Javascript), 자바(Java), 코틀린(Kotlin), 클로저(Clojure) 등을 범용 언어로 사용해왔으며 가장 익숙한 언어는 자바와 클로저입니다.
node.js, express.js 를 이용하여 실제 운영을 하며 밥벌이를 해본 적 또한 없으므로, 저는 감히 express.js 의 전문가라고 볼 수 없습니다. 하지만 읽기라는 행위는 모든 개발자가 밥 먹듯이 하는 것이며, 자바스크립트를 읽는 것은 개발자라면 누구나 할 수 있는 일이라고 확신합니다. 그러므로 누군가 대신 읽어보고 불필요한 내용을 걷어내고, 필요해 보이는 소스코드만을 편집해서 보여 드리는 것 또한 가치 있을 것이라고 믿습니다.
express.js 에 관심을 가진 동기는 reddit 커뮤니티에서 이 프레임워크에 대한 호불호에 대한 논쟁을 보고 흥미를 느끼게 되었다는 점입니다. 한 명이 간결하고 아름다운 코드라고 말하고 다른 한 명은 너무 느린 코드라고 말합니다. 많은 흥미로움을 보았지만, 정확히 무엇이 간결하고 아름다운 것인지, 무엇이 너무 느린지 설명해주는 분들을 찾기는 어려웠습니다. 그리고 그것을 제시해도 관련 링크가 없는 경우 진실 여부가 불분명했습니다.
근거가 부족하게 주장만 하는 곳에서 빠져나와 진실이 있는 github 저장소에서 express.js 의 소스코드를 직접 들여다보게 된 동기는 이렇게 자연스러웠습니다.
많은 시간을 쓰진 않았지만, 적은 시간을 쓰지도 않았습니다. 저야 소기의 목적을 이루었지만, 다른 많은 사람이 express.js 를 이해하는데 시간을 단축하게 할 수 있다면 더욱 멋진 일일 것이라고 생각이 들었죠.
2009년 자바스크립트 비동기 이벤트 중심 런타임인 node.js 를 발표되고 많은 사람이 빠져들었습니다. 하지만 node.js 만으로 웹서비스를 만들기에는 라우팅, 미들웨어, 에러 핸들링 같이 웹 개발자들에게 익숙한 기본적인 기능을 쉽게 수행하기에는 무리가 있었습니다.
누군가 표준을 제시해야 했을 것입니다.
아주 세심하게 오랜 고심을 하여 복잡하지만,마법처럼 모든 것을 대신해주는 프레임워크를 제시하는 것도 좋지만 당장 이 혼돈의 세상 속에서 모두가 살아남을 수 있는 간결한 코드베이스로 쉽게 사용할 수 있는 그런 라이브러리가 필요한 시대였을 것입니다.
부응하듯 express.js는 2010년에 TJ Holowaychuk에 의해 첫 릴리즈되었습니다. 오늘날 express.js 를 보면 강력한 성능이나 자랑할만한 기능들을 제공하지는 않습니다. 반대로 이것이 가지는 가벼움 (혹은 간결함)은 express.js 를 쉽게 확장할 수 있게 만들었습니다.
Node.js 개발자들은 expres.js를 빠르게 받아들였습니다. 그리고 MEAN 으로 표준으로 자리 잡게 되었습니다.
오늘날 express.js 는 소위 힙한 라이브러리는 아닙니다. 오히려 낡고 느린 라이브러리라는 말을 듣기 일쑤죠. 그럼에도 express.js를 이해하는 것이 의미 있을까요?
저에게는 나름대로 두 가지 의미가 있습니다. 하나는 고전서적을 읽듯이 하나의 언어가 세상에 나오고 웹 생태계에서 서버의 역할을 하고자 할 때, 시대를 풍미한 라이브러리를 읽어보는 것은 node.js
의 초창기 역사를 보는 것은 의미있다.
‘개발자로서 많은 라이브러리와 프레임워크의 도움을 받고 있지만 실제로 감사한 적이 얼마나 있었나’ 하는 저의 늦은 미안함입니다. 그들의 소스코드를 읽으며 감사해하며, 때로 소정의 금액을 후원하는 것이 오픈소스 생태계를 살리는데 기여를 하는 것이라고 생각합니다.
express.js 를 이해한다고 소위 슈퍼개발자가 되었다고 말할 수는 없을 것입니다. 하지만 express.js 를 이해하면 무엇이 express.js 를 느리게 하는 것인지, 왜 그 시절 많은 개발자가 간결하고 확장성이 있었다는 것인지 아는 데 도움이 될 것입니다. 또한, 단순히 벤치마크를 돌려보고 느리다고 결론짓는 것을 넘어서 어떻게 하면 더 나아질 수 있을까도 고민할 수 있지 않을까 싶습니다.
모든 지식인들에게 읽기는 숨쉬기와 같이 자연스럽고 어떤 면에서는 의무와 같습니다. 개발자는 회사에서 관리하는 소스코드를 읽고 관리합니다. 때때로 우리는 오픈소스의 라이브러리가 유명하다는 이유로 혹은 남들이 다 쓰니까 안전하다는 변명으로 검증을 하지않고 사용합니다. 마치 왜 인지는 모르지만 동작하는 마법의 주문처럼 사용합니다. 때때로 이것저것을 갖고 만드는 것이 너무나도 재미있고, 산출물이 빠르게 나올 것입니다. 또한 그렇게 해야하는 시기가 분명히 필요할 수 있습니다. 그때부터 조금씩이라도 읽기를 하고 있다면, 여러분이 쓰고 있던 알수없는 마법의 주문들은 어느새 여러분들의 것이 될 것입니다.