RDB 서비스에 사용할 프레임워크 고르기 ( Springboot, Django )

우종선
fors
Published in
4 min readDec 24, 2019

--

RDB — Mysql을 사용해서 서비스를 개발하려고 했습니다.

그에 따라 개발 프레임워크를 비교하고 선택했습니다.

이 글은 제가 Springboot 와 Django 를 비교하고 선택한 글입니다.

서비스를 어떻게 설계할지 고민하면서 우선 NoSQL 보다는 RDB 가 적합하겠다는 결정을 내렸습니다.

그리고 프레임워크를 선택했습니다.

처음엔 3개 중에서 고민했습니다.

Typescript-rest (Express.js)

Django rest framework

Spring boot (Java)

Typescript, javascript는 서비스가 몽고DB같은 NoSQL을 사용하면서 mongoose ORM 을 사용할때 그 장점이 크다고 생각했습니다.

RDB 를 사용할 서비스에서는 굳이 선택하지 않았습니다.

그래서 Django와 spring boot 사이에서 고민했습니다.

컴퓨팅 성능 같은 것들을 비교하기 전에 일단 아주 기본적으로 쓰기에 어떤지 비교해보겠습니다.

  1. IDE 지원

Django 는 VScode 와 Pycharm을 사용했을때를 비교해봤습니다.

Django를 썼을때는 VScode와 Pycharm으로 개발하는 데 큰 차이가 없었습니다.

VScode를 사용하면 아래 명령어를 입력해서 프로젝트를 만듭니다.

pycharm 은 개발환경에서 프로젝트가 생성됩니다.

Spring boot 는 VScode 보다 Intellij를 사용하는 게 훨씬 편하다고 느꼈습니다.

특히 스프링을 코틀린과 쓰고 싶다면 VScode는 아직 지원이 약합니다.

VScode에서는 스프링 + 자바를 해야 확장 프로그램들과 함께 무난하게 쓸 수 있습니다.

원래는 코틀린+스프링과 장고를 비교하려고 했지만

똑같이 VScode를 쓴다는 가정하에 개발한다면

스프링+자바 vs 장고가 될 것 같습니다.

그래서 결론은 IDE상에서는 스프링+자바 랑 장고랑 큰 차이 없습니다.

비슷합니다.

2.타입 문제

두번째로는 타입 안정성 문제를 생각했습니다.

자바는 정적언어로써 컴파일되고 타입이 있습니다.

Python은 동적언어로써 타입을 코드에 명시하지 않습니다.

타입 지정이 되는 언어가 일단 IDE에서 자동완성이 더 편하다고 봅니다.

런타임시에도 더 안정적이라고 생각합니다.

이건 스프링 + 자바가 확실히 낫다고 생각했습니다.

3. 개발의 편리함

단적으로 장고에서 oauth를 구현하는 것과 스프링에서 oauth를 구현하는 것은 다릅니다.

그리고 장고는 csrf_token 기능 같은 것들을 구현하지 않아도 기본 제공합니다.

파이썬 코드가 자바보다 훨씬 짧습니다. 코틀린보다도 짧습니다.

파이썬은 list, dict 등의 자료형을 기본제공합니다.

주어진 비즈니스 로직을 구현할때는 파이썬이 더 쉽겠구나 싶었습니다.

4. 언어 차원에서 json 다루기

파이썬은 import json 후 json.dumps() , json.load() 같은 것들로 json을 다룰 수 있습니다.

이건 파이썬 압승이라고 생각했습니다.

코틀린이어서 Klaxon 같은 라이브러리를 사용하더라도 파이썬이 더 편합니다.

자바보다 훨씬 편합니다.

5. 언어 성능

이건 코틀린, 자바가 더 빠릅니다.(JVM)

그런데 아무리 빠른 언어로 개발해도 O(N제곱)으로 개발하는 건 느릴거라고 생각합니다.

느린 언어여도 알고리즘 자체가 좋으면 괜찮을거라는 생각이 듭니다.

6. 라이브러리 지원

단적인 예로 REST API를 개발함에 있어서 HAL을 적용할수도 있습니다.

스프링은 자체적으로 HATEOAS 라는 것을 제공합니다.

장고에서는 찾아보니 ripozo 라는 라이브러리가 따로 있습니다.

이런건 자바가 낫다고 생각했습니다.

라이브러리 문제는 파이썬 라이브러리가 훨씬 잘되어 있는 것도 있고

뭘 개발하냐에 따라 다를 것 같다고 생각합니다.

결론

현재로써는 아래 이유로 장고를 선택했습니다.

  1. 로직 작성의 편리함
  2. 짧은 코드
  3. 다루기 편한 json

덧붙여서 타입 문제에 대한 부분은 애플리케이션의 크기가 커지고 수 많은 사람이 같이 일할때 빛을 발한다고 생각했습니다.

그런데 점점 마이크로 서비스를 개발하는 형태로 개발 문화가 바뀌고 있는데 여기에 큰 장점이 있는 것 같지는 않았습니다.

두가지 모두 작은 REST API 를 개발해 봤을때 일단 파이썬이 훨씬 코드 작성이 짧습니다.

두 프레임워크 모두 잘 쓴다는 가정하에 생산성도 파이썬이 높아 보였습니다.

코틀린 스프링의 생산성은 자바보다 높은 것이지 파이썬 장고보다 높은 것 같지는 않았습니다.

--

--