Safaribooksonline.com tiene un video [1] de Jacob Kaplan-Moss sobre cómo implementar una aplicación Django. Este video es de 2010. Se refiere a un sitio [2] que tiene una lista de muchos aspectos relevantes. Ahora el taller menciona cosas como máquinas virtuales, vagrant (como entornos de implementación) o Fabric y otras herramientas para la automatización de la implementación.
Me preguntaba cuánto ha cambiado desde entonces. Puedo pensar en Docker reemplazando a Vagrant. O Heroku o AWS en lugar de alquilar un servidor físico dedicado para la implementación (o máquinas virtuales). O usando Ansible o Chef/Puppet en lugar de Capistrano o Fabric.
Pero, ¿qué más ha cambiado? ¿Qué sigue siendo relevante? ¿Qué se hace diferente? ¿Cuál es el estado del arte en 2017 para implementar una aplicación Django lista para producción?
¿Alguien puede señalarme buenos blogs/libros/tutoriales?
[1] "Taller de implementación de Django", https://www.safaribooksonline.com/library/view/django-deployment-workshop/9781449396442/
[2] "infraestructura de sitios web modernos", https://randomfoo.net/2009/01/28/infrastructure-for-modern-web-sites
Honestamente, la respuesta a esta pregunta será extremadamente obstinada y definir las mejores prácticas en el área cambiante de DevOps puede ser un desafío. Algo es una mejor práctica un día, y mañana alguien hace una publicación en el blog sobre que eso es horrible y obsoleto.
Existen numerosas formas de realizar la implementación, pero todo se reduce a lo que necesita, cuánto desea automatizar y qué nivel de personalización se requiere.
Por ejemplo, en mi lugar actual usamos CircleCI, Heroku, Sentry y Rollbar.
Uno de mis clientes anteriores (hace tres meses) quería que usáramos CodePipeline, que incluye CodeCommit, CodeBuild, CodeDeploy para AWS.
Recientemente también trabajé en un proyecto que involucra Docker y un entorno flexible de Google App Engine.
Para mis proyectos personales simplemente uso Fabric y Heroku, pero realmente me gustaría probar el nuevo CodeStar o como se llame en AWS.
Define lo que quieres, cómo quieres personalizarlo y simplemente hazlo. Si algo no funciona, simplemente cámbielo. Las cosas son cada vez más fáciles de hacer y el reemplazo de un elemento en su tubería puede ocurrir en cuestión de minutos y no en días o semanas como ocurría. Hoy en día, todos los proveedores tienen soporte para Docker y CI, de una forma u otra.
YMMV.