Django와 Express의 차이점

올해 8월은 꽤 재미있었다. 갓 스타트업을 시작하신 두 형님이 일하시는 곳이 옥수동에 있는데, 한 달 동안 거의 매일 그 곳에 놀러 갔다. 형들이 일하는 동안 나는 그 옆에서 Node를 공부했다. 그동안 외롭게 개발 공부를 했던 나에게는 가장 가까이에 물어볼 수 있는 사람이 둘이나 있었고, 무엇보다 두 형과 코드 (그 코드가 아니다…) 가 잘 맞았기 때문에 더할 나위 없이 좋았다.

난 꽤 오래 Django를 썼다. 하지만 잘 쓰지는 못했다. Django에게는 Python만큼 큰 흥미를 느끼지 못하고 있었기에 열심히 하지 않았다. 초보 개발자의 눈으로 보기엔 Django는 이미 너무 거대해져서 진입장벽이 높아 보이는 프레임워크였다.

Django는 Python의 “batteries included” 철학을 그대로 차용했다. 웹 개발시 필요한 기능들은 대부분 이미 내장되어 있으므로, 사용하고자 하는 기능이 있다면 도큐먼트를 보고 Django에 내장된 라이브러리를 import해서 사용하면 된다. 돌이켜보면 이러한 Django의 편의성이 내 개발능력 발전에 벽이 된 것 같다.

많은 기능을 담았기에 문서의 양 또한 방대했고, 필요한 기능을 찾아서 써도 내 것이 되지 않았다. 당장 필요하지 않은 기능들임에도 불구하고, 모르고 있는 것이 너무 많다는 것이 부담되었다. 어떻게 구현해야 좋을지 몰라서 구글링하면, 내장 라이브러리를 import하는 것만으로도 끝났다. 열심히 직접 구현했더니 이미 내장된 라이브러리가 있는 경우도 꽤 있었다. 제공된 기능을 커스터마이징하려면 여기에 엮여있는 다른 Django의 기능들도 함께 학습해야만 했다. 스크롤의 압박이 있는 영어문서를 읽는 것이 고역이었다. 분명 문서를 보면 해답을 찾을 수 있음에도 문서는 팽개쳐둔 채 바로 보고 이해할 수 써먹을 수 있는 코드를 찾아 구글링을 계속했다.

아무튼 그렇게 Django에 대한 흥미가 떨어져 가고 있을 때, Javascript를 해보기로 했다. 선택에 대단한 이유가 있는 건 아니였다. 여기저기서 ‘올해의 대세는 Javascript다’ 라고 어렴풋이 들었다. 두 형님의 스타트업 기술스택도 Javascript 기반이었다.

Javascript를 익히는 건 어렵지 않았다. 예전에 jQuery와 묶어서 공부해본 적이 있었고, es6부터 대부분의 문법이 다른 언어에서도 익숙한 것들이었기 때문에 한 번 훑어보기만 해도 바로 사용할 수 있을 정도였다.

3년 전 출판된 책을 보면서 Express를 공부하는데, 코드가 작동을 안 했다. 기존에 Express 안에 있던 기능들을 모듈화해서 밖으로 빼냈기 때문에, 필요하면 따로 모듈을 설치해주어야 한단다. Django와는 전혀 다른 방향이다. Django에서는 내장된 코드만 정답 같아 보였지만, 여기선 정답 대신 다양한 선택지가 있었다. 필요한 기능이 있으면 다른 사람들은 어떤 걸 많이 쓰나 찾아보고 설치했다.

이때부터 문서를 읽기 시작했다. 마음먹고 읽으면 잘 읽을 수 있음에도 영어 울렁증 때문에 읽으려고 하지 않았던 게 극복되었다. 문서를 읽으면서 처음보는 이름들을 검색해서 찾다 보니 babel이나 webpack 등 Javascript 개발시에 자주 쓰이는 툴들도 쉽게 적용할 수 있었고, SPA나 JWT처럼 웹 개발과 관련된 개념들도 알 게 되었다.

지금까지가 올해 8월 한 달 동안 있었던 이야기다. Django를 붙잡고 몇 달동안 공부하던 것을 Node+Express로는 겨우 한 달 만에 해냈다.

어떻게 보면 결과론적인 이야기다. Django는 문서화가 잘 되어있기로 손꼽히는 프레임워크 중 하나라, 만약 지금 Django를 다시 쓴다면 이전보다는 더 잘 쓸 수 있을 것 같다. Django 대신 flask를 주로 썼거나, Python보다 Javascript를 먼저 썼더라면, 이 글은 위에 쓴 내용과 정반대가 되었을지도 모른다. 사실 난 지속적으로 성장하고 있었을 뿐, 다른 언어나 다른 프레임워크를 사용하는 게 내 성장에 큰 영향을 미치지 않았을 수도 있다. 하지만 난 지금 Javascript를 사용하게 된 것에 대해 만족하고 있기에 이렇게 글을 남긴다.