Videos
My friend and I are starting a company of our own, where we develop software products that offers services to other companies and institutes.
We are in the phase of deciding what technologies and frameworks to use. For the back-end we are trying to choose between Django and Spring. Here is what we have come to:
Spring
Pros:
Simplified & version conflict free dependency management through the starter POMs.
You can just assemble the jar artifact which comes with an embedded Tomact, Jetty or Undertow application server and you are ready to go.
Offers better support for micro-services.
Cons:
Spring boot may unnecessarily increase the deployment binary size with unused dependencies.
spring Boot applications can range in size from 50 MB – 250 MB, if not larger. (99% is dependency JARs)
Spring promotes Dependency Injection (DI). But if you start using Spring, your project becomes dependent on Spring framework. This is a dependency that you are creating for your project. You may not be able to come out of it in the future.
Django
Pros:
Easier and faster deployment.
Smaller in size
More secure
Ability to integrate things like machine learning
Cons:
Not good with micro-services, Django really shines in an environment in which you can make use of all the included “batteries”, Django ORM + Admin + Generic Views.
Tightly coupled
can you offer more suggestions and provide feed back ?
Thank you.
Spring:
-
Is Java
Django:
-
Is Python
Those are the only criteria you're going to want to use in this comparison. Do you want the libraries from the Java ecosystem or from the Python ecosystem to better support your backend?
Neither is a great choice for a microservice architecture. If that's a requirement for you, you've chosen your comparison poorly.
There are a lot of quality of life things that would make me recommend Django over just about anything else (Django migrations vs Hibernate chaos would be a big one for me here, or faster development reloading), but at the end of the day my quality of life matters a lot less than the product we can deliver without excessive development times. That's going to come down to the ecosystem. There's no Jython for Python 3, so you can't use the latest Django now or any supported Django version on a JVM in early 2020.
Use the stack you know best.
If you know both equally well, decide per-project: use the one that makes more sense for the specific project.