본문으로 바로가기

0. 선택의 갈림길

Django를 배우기 시작한 지 14일이 지났다.

이제 웹개발에 전념할 수 있는 시간은 6개월이 남았다.

 

지난 1주간 내가 코드를 타이핑한 시간은 42시간이다(WakaTime). Jupyter Notebook에서 보낸 시간은 합산이 안 된 건 속상하다 ㅠ
지난 1주 간 파이썬, 자바스크립트, HTML, CSS, Go를 위주로 코딩을 했다.

 

1. Django의 기능

Django는 FitCuration 프로젝트의 기능들을 구현할 수 있다.

    • 키워드 검색
    • 지역 검색 기능
    • 메인 페이지에서 카드 형식으로 운동 카테고리 간략하게 보여주기
    • 검색 결과 지도
    • 검색 결과 운동/센터 간략 설명
    • 개별 운동 상세 설명 페이지
    • 상단 배너, 하단 고정 배너 - Contact Me, About FitCuration 등
    • 프로젝트 소개 페이지: About Us
    • 후기 페이지 및 포럼

 

2. Django라는 프레임워크는 개발자에게 어떤 편리한 점을 주는가? 

Django와 Node(Express)는 사실 서로 다른 맥락에 있는 개발 도구 두 개다. 

 

밥 먹는 걸 예시로 들어보자.

  • 뷔페에서 자신의 마음에 드는 이런저런 요리를 가져와서 먹는 것이 Django로 웹을 개발하는 것이다.
  • 공유 주방에서 자신이 가져온 재료를 갖고 요리를 직접 해 먹는 것이 Node(Express)로 웹을 개발하는 것이다. 

남의 떡이 더 커보인다고, Express로 개발할 때 Django의 장점들이 보인다. 

  • 데이터 관련 웹 어플리케이션 프로젝트들이 파이썬으로 작성된 경우가 많다. 이는 데이터를 다루는 사람들이 파이썬을 주로 쓰기 때문이다. 이들은 주로 데이터 시각화 / 검색 등 기능을 Django나 Flask를 통해서 구현한다.
  • Django의 유저 관리 부분은 최고이다. 
  • Django가 디버깅이 쉽다. 웹을 로딩을 실패했을 때 어디서 에러가 났는지 정확하게 집어주니까 디버깅이 더 쉬운 것 같다.
  • 아무래도 파이썬으로 코드를 쓸 때 JavaScript로 쓸 때보다 더 편하다. 따라서 Django로 개발하는 속도가 더 빠른 것 같다.
  • Django는 old한 framework라기보다는, mature 한 framework라고 부르는 게 적합할 것 같다. 소스코드가 비록 오래됐더라도, 프로젝트를 구현하는 데 쓸만하다. 

 

3. Express.js 웹개발에 비해서 Django web framework에서 느끼는 불편함

  • 남이 써놓은 Django 프로젝트 코드를 봐도 무슨 말인지 이해를 못해먹겠다. 이에 반해서 자바스크립트는 프런트든 백엔드든 코드가 상당히 직관적이다(Thanks to Babel & ES6).
  • npm은 짱짱이다. 남이 써놓은 프로젝트 다운로드 받아서 환경설정하는 데 얼마 걸리지도 않는다. 하지만 장고는 Docker, pipenv, venv 등... 개발환경이 가지 각각이다. 
  • 자바스크립트는 배우면 frontend에도 쓰인다. 하지만 장고는 프론트엔드를 JS + CSS + HTML로 다시 짜야한다. 
  • Django의 경우 프로젝트들의 프론트엔드가 대부분 현대적이지 않다. Jquery or Bootstrap + Django 프로젝트 소스코드들을 구할 수 있지… ㅡㅡ; vue + django 예시도 구하긴 구했으나, 소스가 몇 개 없다.
  • Django App -> View -> URL & REST API 은 개발 시간이 너무 오래 걸린다. 반면 Node를 이용하면 GraphQL, Apollo로 개발하면 빠르다. 
  • Django ORM 덕분에 SQL을 다루지 않고도 Database를 다룰 수 있는 것은 좋다. 하지만 이 때문에 장고로 개발하는 것은 다소 Database 쪽에 치중된 것 같다. 차라리 간단한 프로젝트이면 NoSQL인 MongoDB를 Node로 사용하는 것도 좋은 방법인 것 같다. 
  • Django Documentation이 있어서 좋다고? 파묻히지나 않으면 다행이다. 무엇이 중요하고 무엇이 안 중요한 기능인지 아는 것이 중요한 것 같다. 

 

결론: 비교하는 것도 공부다. 

  • 고민은 계속 될 것 같다.
  • 지금까지 백엔드를 Flask, Express, Django로도 개발해보면서 어떤 것이 내 프로젝트를 구현하는 데 가장 적합할지는, 아마 계속 고민해야 할 문제일 것이다. 
  • 웹개발을 공부할 시간 180일 동안 나는 Django, Express, GraphQL, Vue를 공부하기로 결정했다.

 

 

[참고자료]