Todos nuestros desarrolladores trabajan en un Macbook Pro y utilizan Docker para gestionar el entorno de desarrollo. El uso de Docker garantiza una entrada fácil para los nuevos desarrolladores (todo lo que necesita es clonar el repositorio, asegurarse de que Docker esté instalado y ejecutar el archivo docker-compose que se proporciona con el proyecto).
Usamos Git y Github para el control de versiones de nuestro código, y para asegurarnos de que nuestro código sea revisado por otros desarrolladores (a través de Pull Requests) y hacer cumplir los estándares de codificación.
Hacemos uso de Jira para proyectos más grandes, para gestionar el progreso y las tareas. Para proyectos más pequeños, esto se hace principalmente a través de Trello o simplemente hablando en Slack.
Aunque no forma parte de la experiencia diaria de desarrollo, la infraestructura que utilizamos para implementar nuestros sitios web es tan importante para nosotros como nuestro código.
Desplegamos nuestro frontend separado del backend. Para orquestar ambos, hacemos uso de Jenkins y Github Actions como una canalización de CI/CD.
Nuestros frontends son normalmente sitios web generados estáticamente, que se pueden implementar en una CDN. Actualmente hacemos mucho uso de Google Firebase, pero con pocos cambios podríamos implementarlo en Cloudfront, Netlify o cualquier otra herramienta que surga. La parte más importante es que, al implementar un sitio web estático, nuestros usuarios siempre tienen un nodo principal cerca. Esto permite sitios web muy rápidos, lo que a su vez es bueno para el SEO (y la experiencia del usuario).
Nuestros backends se implementan en nuestros propios servidores como contenedores Docker (haciendo uso de Cloud66 para administrar los servidores) o para Fly.io (nuevamente como un contenedor Docker que se convierte en Máquinas virtuales Firecracker). Tendemos a usar este último, ya que permite una API multirregión que vuelve a estar cerca del usuario. Sin embargo, si la seguridad de los datos es importante, lo implementamos en nuestros propios servidores.