Saltar al contenido principal
Fully Booked Docker topology and Cloudflare DNS

Fully Booked - Implementación Dockerizada con DigitalOcean y Cloudflare

fully booked brand logoFully BookedIngeniería DevOpsabr 24, 2023 - jun 24, 20252 años 3 meses

Fully Booked salió como cinco servicios Docker en un único droplet de DigitalOcean detrás de Cloudflare, para que un equipo muy pequeño pudiera operar un marketplace que gestiona depósitos. Un solo repositorio construía cada imagen, un archivo compose y un Makefile reducían una publicación a pull, build y up, un proxy Caddy se encargaba de los certificados y las cabeceras de seguridad, y Playwright generaba en el servidor el PDF de cada presupuesto y factura. Como los servicios eran independientes desde el principio, más tarde pasaron a un clúster de Kubernetes autoalojado sin reconstruir nada.

DockerDigitalOceanCloudflareDNSSSL CertificatesCaddy
Md Moniruzzaman Image

Md Moniruzzaman

La historia completa

La infraestructura que permitió a un mercado que cobra depósitos llevar cinco servicios con un equipo pequeño y sin sorpresas.

Un mercado que guarda depósitos no puede caerse

Fully Booked cobra los depósitos de los clientes, envía a los operadores sus ganancias y entrega los documentos de los que dependen ambas partes. Aquí una caída no es una simple molestia: el cliente que no puede pagar reserva en otro sitio, y el operador que no puede abrir un presupuesto pierde el trabajo.

La plataforma son cinco servicios, una web para clientes, una web para operadores, un panel de administración, un sitio de documentación y un único backend, construidos y mantenidos por un equipo muy pequeño. El despliegue tenía que ser lo bastante sencillo para llevarlo a mano y lo bastante sólido para confiar en él.

Cinco servicios, un repositorio, un comando

Cada servicio se publica como su propia imagen de Docker desde un único repositorio. Las cuatro webs se compilan en pequeños servidores estáticos, el backend en NestJS lleva la API GraphQL, y MongoDB y los archivos subidos viven en volúmenes persistentes. Un archivo compose los conecta en una red privada, y un Makefile reduce cada lanzamiento a pull, build y up.

Brand colour backdrop
The Docker era production topology drawn from the compose file: Cloudflare, one droplet, Caddy, four sites, the backend, MongoDB and file volumes

Cloudflare delante, con dos excepciones deliberadas

Cloudflare gestiona el DNS de cada subdominio y hace de proxy de las webs públicas para la caché, los certificados y la protección. Dos registros quedan directos a propósito: la web de operadores, para que Apple pueda leer el archivo que permite que los enlaces abran la app, y la API, para que los webhooks de pago de Square lleguen sin bloqueos.

Equivocarse en cualquiera de los dos rompería los enlaces profundos de cada PDF o impediría que los pagos se confirmaran, y por eso ambos están documentados junto a la tabla de DNS.

Brand colour backdrop
The Cloudflare DNS table from the deployment guide, addresses masked: the API and operator records stay DNS only

Un proxy inverso que se encarga de la seguridad

Un contenedor de Caddy en el borde emite los certificados automáticamente, comprime las respuestas, redirige cada dirección con www, añade a la API las cabeceras de strict transport, frame y content type, y sirve los archivos de asociación de la app con el content type que esperan las tiendas.

Brand colour backdrop
The Caddy edge rules: one host per service, association files as JSON, security headers on the API, www redirects

Documentos generados en producción

Cada presupuesto, carta de cancelación, factura, confirmación de reserva y hoja de conductor se genera en el servidor con Playwright, que corre dentro de la imagen del backend. Conseguir instalar un navegador sin interfaz dentro de un contenedor de producción fue lo más difícil de todo el trabajo, y es lo que permite a un operador enviar un PDF impecable desde el móvil en segundos.

Brand colour backdrop
A quotation rendered on the server
An invoice rendered on the server
A driver trip sheet rendered on the server

De un droplet a un clúster

El droplet sostuvo la plataforma durante sus primeras fases. Cuando la factura mensual y los límites de una sola máquina empezaron a pesar, las mismas imágenes pasaron a un clúster de Kubernetes autoalojado sin tiempo de inactividad, algo posible porque desde el principio se habían construido como servicios independientes.

Para el fundador supuso no reconstruir nada ni sufrir caídas, y para operadores y clientes nada cambió, salvo que todo siguió funcionando. Los servicios en sí se cuentan en la historia de Fully Booked.

Lo que dijeron

Dominic Dormer

Fundador de Fully Booked

3 años 7 meses

Excellent time keeping, great attitude, brilliant skill. highly recommend

dic 05, 2024

(5,0)

Darren Cromer

Director en Fully Booked

3 años 7 meses

Monir is an exceptional developer with outstanding expertise in his field. His advanced skills enable him to deliver results that surpass those of competitors. He is very thorough and has keen attention to detail, Monir is an excellent listener who can transform your ideas into reality with precision.

nov 28, 2024

(5,0)

Dominic Dormer

Fundador de Fully Booked

3 años 7 meses

Today marks one year of working with Monir, and this time has allowed me to know Monir as a truly dedicated individual. We have collaborated on my project daily for the past year, and not once has Monir failed to respond. Monir has invested tremendous effort and focus into this project, working late nights and early mornings, always available to answer calls and resolve issues. There has never been a moment when Monir turned down work or shirked responsibility. The project is growing day by day, and if it becomes a success, it will be largely thanks to Monir's unwavering dedication.

jul 03, 2024

(5,0)

Dominic Dormer

Fundador de Fully Booked

3 años 7 meses

I cannot express enough gratitude for Monir's exceptional work as a full-stack developer. Over the past 8 months, Monir has been instrumental in bringing my vision to life by diligently crafting a sophisticated platform that exceeds all expectations. Monir's proficiency in his craft is unparalleled. His technical expertise, coupled with his creative problem-solving skills, has consistently resulted in innovative solutions that have elevated our platform to new heights. His ability to seamlessly navigate through complex challenges showcases his mastery of both front-end and back-end development. Beyond his technical prowess, Monir's professionalism and dedication are truly commendable. He has demonstrated unwavering commitment and reliability throughout the entire development process, ensuring that every aspect of the platform is meticulously crafted to perfection. Working with Monir has been an absolute pleasure. His clear communication, attention to detail, and proactive approach have made collaboration effortless and enjoyable. He has not only met deadlines consistently but has also gone above and beyond to deliver features that surpass expectations. In conclusion, Monir is not just a developer; he is a visionary who brings passion, expertise, and dedication to every project he undertakes. I am immensely grateful for his invaluable contributions to our platform, and I wholeheartedly recommend him to anyone seeking a top-tier full-stack developer. Thank you, Monir, for your outstanding work and unwavering commitment to excellence. You are truly a standout talent in your field.

mar 27, 2024

(5,0)

Dominic Dormer

Fundador de Fully Booked

3 años 7 meses

Monir is a very experienced developer. I have been working with him very closely for 8 months now. He has achieved every goal that we planned. He has taken on very complex challenges with the project that we have created and has been able to solve every issue that we've faced. He is extremely hard working. He works day and night. He's work ethic is excellent. He never complains or give excuses. My project is beautiful now and I can't wait to promote it to the world.

ene 21, 2024

(5,0)

Dominic Dormer

Fundador de Fully Booked

3 años 7 meses

Monir has been working on my project for the last 3-4 months. We have been speaking and creating ideas to improve this project on a daily basis. The project is now complete and I can honestly say Monir is one of the best people I've ever worked with. Every single commitment that Monir promised from the beginning of this journey he stuck to and achieved. He never moaned, complained or made an excuse about anything. He completed every single commitment that we agreed upon. Monir worked early mornings and late nights until he produce the project I asked of him, and now my business journey is ready to move forward and I'm completely glad that I choose Monir to create this platform for me. The project consisted of an admin panel a customer website and an app. All projects were built to high specification and have very sophisticated features. I would definitely recommend monir to anyone looking for a serious developer.

oct 18, 2023

(5,0)

También te puede gustar

fully booked brand logo
Fully Booked Video Editing
Servicios Adicionales
2 años 3 meses
fully booked brand logo

Fully Booked - Producción de videos promocionales y tutoriales

Un vídeo promocional que recorre con un operador de minibuses del Reino Unido las ventajas de Fully Booked en el orden en que le importan, hecho con la app real y no con imágenes de archivo. Empieza por el propio problema del operador, dedica a cada ventaja un momento en una pantalla real y se editó en varias duraciones, desde un gancho de pocos segundos para redes sociales hasta una versión completa para páginas de destino y las fichas de las tiendas.

Md Moniruzzaman Image

Md Moniruzzaman

jun 24, 2025

+1
Dominic Dormer
fully booked brand logo

Fully Booked - Migración sin Tiempo de Inactividad a Kubernetes Autoalojado

Fully Booked funcionaba sobre infraestructura gestionada en la nube, con una factura que crecía cada mes y una pila que nadie controlaba del todo. Trasladamos toda la plataforma a un clúster de Kubernetes autoalojado sin un minuto de interrupción para quienes la usaban. El cambio abarcó DNS, ingress, bases de datos y el pipeline de despliegue, escalonado de modo que el tráfico se movía solo una vez probada cada capa en el clúster nuevo. Nadie que usara la aplicación esa semana notó nada, que era exactamente el objetivo. La factura recurrente pasó a ser hardware propio, y ese mismo clúster sostiene hoy las publicaciones semanales de la plataforma.

Md Moniruzzaman Image

Md Moniruzzaman

jun 23, 2026

+1
Dominic Dormer
fully booked brand logo
Fully Booked Photoshop Design
Servicios Adicionales
2 años 3 meses
fully booked brand logo

Fully Booked - Diseño de activos visuales con Photoshop

Capturas para las tiendas, un gráfico destacado, un icono de app y el arte de los correos, creados en Photoshop a partir de pantallas reales para que una plataforma joven parezca consolidada ante los operadores. Las capturas cuentan la propuesta en cinco deslizamientos en cada tamaño que exigen Apple y Google, cada correo se abre con su propia ilustración en los colores de la marca, y el icono y las pantallas de bienvenida llevan el logotipo de dos manos que se encuentran.

Md Moniruzzaman Image

Md Moniruzzaman

jun 24, 2025

+1
Dominic Dormer
Read the Md Moniruzzaman blog

El blog son notas de campo desde producción: decisiones de arquitectura, sistemas de AI que sobrevivieron al contacto con usuarios reales e infraestructura que se paga sola. Escrito desde el trabajo, no sobre él.