Entre Bastidores con Patrik Potocki

"Queremos ofrecer una plataforma de alto rendimiento que respalde a socios de todos los tamaños: la escalabilidad es extremadamente importante, tanto desde la perspectiva tecnológica como de costos. Además de ser escalable, la plataforma debe ser autosuficiente y flexible para que podamos probar nuevas soluciones y seguir evolucionando. Parte de ofrecer una excelente plataforma es contar con una gran visibilidad, y queremos monitoreo y alertas proactivas para asegurarnos de que siempre sepamos exactamente qué está sucediendo."
Mi historia en resumen: Juegos, Zapatos, Aviones y Plataformas
Mi interés por la tecnología comenzó muy temprano, influenciado por mi padre, quien siempre ha sido un apasionado de los ordenadores. Al principio, solo jugaba, pero (como cualquier persona que creció en los inicios de los videojuegos de PC sabe) nada funcionaba perfectamente, así que rápidamente aprendí a depurar y solucionar problemas.
Más tarde, fui introducido a la programación y me enamoré de ella. Comencé con ASP Classic y pronto me pasé al ecosistema .NET.
Pasé casi 10 años en el mundo de Microsoft/.NET, iniciando mi carrera en el equipo de e-commerce de una de las mayores empresas de calzado de Suecia. Luego, entré en la industria de la aviación, lo cual fue muy divertido y desafiante. Durante las temporadas de promociones, había enormes picos de usuarios, lo que nos obligaba a enfrentarnos a retos interesantes en términos de escalabilidad.
Para ser un desarrollador exitoso, es fundamental estar siempre aprendiendo. De lo contrario, tus conocimientos se volverán obsoletos rápidamente.
Personalmente, leo muchos blogs para obtener una visión general de diferentes soluciones e ideas nuevas. No entro en los detalles hasta que realmente lo necesito, pero cuando surgen desafíos, recuerdo: "Ok, leí sobre algo que podría ser exactamente lo que necesitamos." A partir de ahí, profundizamos en el tema y descubrimos qué funciona mejor para nosotros.
Hace cuatro años, me uní a Fast Track como Tech Lead. He sido testigo de casi toda la trayectoria de la empresa, desde la construcción de sitios de casino white label en PHP hasta el lanzamiento de Fast Track CRM con Golang.
Trabajando con tecnología que realmente me emociona
He tenido el privilegio de estar aquí desde el principio, diseñando toda la infraestructura de Fast Track desde cero. Siempre he sido muy curioso sobre los sistemas distribuidos, CI/CD (integración y entrega continua) y automatización, y sobre cómo estos conceptos pueden aplicarse para construir sistemas altamente escalables.
Cuando eres desarrollador, quieres trabajar en el entorno más optimizado y divertido posible. Mi objetivo era crear un ambiente donde el equipo pudiera avanzar rápidamente, manteniendo la estabilidad como prioridad, e innovar con velocidad. También quería asegurarme de que nuestro equipo de desarrollo pudiera centrarse en la programación sin preocuparse por los lanzamientos o configuraciones de máquinas virtuales.
"Estoy extremadamente motivado por la capacidad de Fast Track de adaptarse rápidamente a los cambios."
Cada cliente tiene una única instancia. En nuestro modelo anterior, esto significaba que cualquier tarea debía replicarse manualmente para cada cliente. Con pocos clientes, esto era manejable, pero a medida que crecimos, se volvió insostenible.
Decidimos rediseñar todo y empujar la organización en una nueva dirección. Tras algunas pruebas, llegamos a un nuevo stack tecnológico:
- Migración de PHP a Golang en el back-end
- Introducción de Vue.js como framework front-end
- Migración del alojamiento de Rackspace a AWS
- Uso de Terraform para infraestructura como código
- Implementación de Docker/Kubernetes para la orquestación de contenedores
- Mantenimiento de MySQL como base de datos principal
- Continuación del uso de RabbitMQ como sistema de mensajería
- Uso de Bitbucket/GitHub para control de versiones
- Redis para caché
- Elastic/Kibana/Grafana para logging
Esta stack fue elegida para crear nuevas oportunidades de eficiencia. También tuvimos que considerar factores prácticos: buenas prácticas de presupuesto, la elección de Golang sobre .NET Core (una batalla reñida) para evitar depender de productos de Microsoft que no satisfacían todas nuestras necesidades, entre otros.
Estoy extremadamente motivado por la disposición y capacidad de Fast Track para adaptarse rápidamente a los cambios. Esto, combinado con nuestro excelente equipo de tecnología, nos permitió reconstruir toda la plataforma desde cero y hacer la transición a esta nueva stack en menos de un año. En general, estamos muy satisfechos con lo que hemos construido. Siempre hay margen de mejora – por ejemplo, nos gustaría migrar todo de Bitbucket a GitHub para una mayor eficiencia – pero en este momento, esta stack nos permite escalar con facilidad.
Aprendizaje: Golang es elegante y súper estable
He trabajado con muchos lenguajes. Algunos son rápidos pero desordenados (ASP/Python), otros son completos pero menos eficientes en términos de recursos (.NET/Java/Swift). Golang logra el equilibrio perfecto: es limpio, simple y rápido, tiene herramientas integradas excelentes y una sintaxis muy amigable.
Una de las grandes ventajas de Golang es la estandarización del código. Esto significa que, incluso en proyectos gigantescos como Kubernetes, el código sigue siendo fácil de entender y revisar. Esto hace que el proceso de code review sea mucho más eficiente.
Después de ejecutar Golang en producción durante cuatro años, puedo decir que es la stack más estable y liviana con la que he trabajado, además de requerir la menor cantidad de configuración para alcanzar un estado óptimo de rendimiento.
Curiosamente, pocos miembros de nuestro equipo tenían experiencia previa con Golang. Aun así, la transición fue fluida y todos quedaron encantados con el lenguaje.
Si aún no has probado Golang, te lo recomiendo encarecidamente.
Entonces, ¿qué estamos construyendo? Fast Track CRM: Echemos un vistazo bajo el capó
Una de las preguntas más frecuentes que mi equipo y yo recibimos es: "¿Cómo funciona Fast Track CRM?"
Como muchas de las mejores tecnologías del mundo, Fast Track se basa en una idea y un diseño muy simples en su núcleo. En términos básicos, hemos creado un motor capaz de procesar y evaluar eventos entrantes y distribuir instrucciones a otros servicios en función de ellos (orquestación). La plataforma opera completamente en tiempo real: podemos recibir, procesar y actuar sobre cualquier evento en aproximadamente 100ms (o incluso más rápido).
Un motor de reglas evalúa los mensajes entrantes. Está conectado a un modelo de datos, que se usa para verificar la elegibilidad, y crea una estructura consistente para las instrucciones que se transmiten a otros servicios. En conjunto, lo llamamos una Actividad, que consta de un disparador, un segmento (un grupo de jugadores elegibles) y una o varias acciones (como enviar un correo electrónico o acreditar un bono).
A este nivel, no tiene una relación directa con el iGaming en sí, ya que el enfoque está en construir de una manera verdaderamente escalable. Lo que hace que nuestra plataforma sea una solución poderosa para los operadores de iGaming son las capas que agregamos sobre esta base y a su alrededor.
"La industria avanza rápido y estamos en una posición ideal para adaptarnos a cada nuevo desafío que puedan enfrentar nuestros socios."
Lo que hace que nuestra plataforma sea específica para la industria del iGaming es, ante todo, el hecho de que la construimos exclusivamente para operadores de iGaming. Tenemos experiencia directa con los desafíos de gestionar CRM e iniciativas de participación de jugadores en el juego en línea y hemos trabajado continuamente para combinar los procesos adecuados con la tecnología correcta para abordarlos.
Todo lo que hacemos pone a nuestros socios en el centro; ya sea desarrollando Lifecycles para orquestar interacciones complejas o integrando sus propios motores de bonificación. La industria avanza rápido y estamos en una posición ideal para adaptarnos a cada nuevo desafío que puedan enfrentar nuestros socios.
Excelente compatibilidad con la arquitectura orientada a servicios
Utilizamos una arquitectura orientada a servicios en nuestra plataforma. Esto significa que la plataforma está compuesta por múltiples servicios independientes; por ejemplo, un servicio de distribución de SMS se encarga del envío de mensajes de texto y un servicio de bonificación gestiona la asignación de recompensas.
Nuestra plataforma está formada por numerosos servicios, desde APIs de integración hasta distribuidores de correo electrónico.
Una arquitectura orientada a servicios permite moverse rápidamente, probar nuevas tecnologías con facilidad y experimentar en un entorno controlado. Se puede seleccionar un servicio específico para probar una innovación en lugar de implementarla en todo el sistema. De esta manera, es posible probar y lanzar funciones más "arriesgadas" primero en servicios menos críticos. Un ejemplo perfecto de esto fue la implementación de Kafka como complemento de RabbitMQen solo unas semanas.
Esta estructura también facilita la depuración de errores. Por ejemplo, si una cola de correos electrónicos deja de funcionar, es fácil identificar que el problema probablemente está en el distribuidor de correos y enfocarse en resolverlo.
El aspecto más importante al construir servicios es garantizar que cada uno sea autónomo y "posea sus propios datos". Si estos datos necesitan ser compartidos, se puede hacer a través de una API o exponiendo la información relevante y permitiendo que otros servicios "se suscriban" a los mensajes.
Toda nuestra plataforma se ejecuta en Kubernetes y todos nuestros servicios son imágenes Docker, lo que la hace extremadamente escalable.
Pero la arquitectura orientada a servicios también tiene sus desafíos
"Hemos reconstruido partes clave de la plataforma innumerables veces."
Desde que me uní a Fast Track, he visto cómo la empresa y nuestra plataforma han evolucionado continuamente. La realidad es que hemos reconstruido partes fundamentales de la plataforma muchas veces. Estoy realmente orgulloso de lo que nuestro equipo ha logrado en un período de tiempo tan corto.
Uno de los cambios que, en mi opinión, tuvo el mayor impacto fue la transición del uso de máquinas virtuales a Kubernetes.
Kubernetes nos permite alcanzar un nivel de eficiencia y automatización que antes no era posible. En lugar de configurar manualmente todos nuestros servicios, ahora simplemente le indicamos a Kubernetes qué queremos y cómo queremos que funcione, y él se encarga de ejecutarlo según lo solicitado. Además, reinicia automáticamente los servicios si algo falla y autoescala según sea necesario. Esto nos ahorra una gran cantidad de tiempo.
Pero no todo es fácil. Hay dos grandes desafíos en una arquitectura orientada a servicios, especialmente cuando se opera con single tenancy: la trazabilidad y los despliegues.
Estamos en constante evolución para mejorar cómo gestionamos estos aspectos.
En cuanto a los despliegues, decidimos invertir en el desarrollo de nuestras propias herramientas internas. Ahora creamos paquetes de lanzamiento, gestionamos cambios en la infraestructura y desplegamos todos nuestros entornos a través de un único portal. Esto funciona muy bien ahora, pero nos tomó tiempo perfeccionarlo.
También hemos invertido en un sistema de logging robusto con Elastic y Kibana, lo que nos proporciona una visibilidad completa. Hoy en día, solo en raras ocasiones el rastreo del flujo de mensajes e instrucciones entre diferentes servicios sigue siendo un desafío.
Lo que leo tarde en la noche
Como mencioné antes, la clave del éxito es estar siempre abierto al aprendizaje continuo. Estas son algunas de las fuentes que utilizo para mantenerme actualizado:
- Hacker News
- Reddit, siguiendo subreddits como Golang, AWS
- Medium y muchos otros blogs especializados en programación; en particular, me gustan los blogs de Netflix Technology y Spotify Engineering.
- Newsletters y actualizaciones de AWS, Google Cloud y Azure
Estamos contratando
Fast Track tiene el mejor equipo de tecnología con el que he trabajado, y creo que nuestra cultura ha sido clave para atraer a los mejores talentos.
Actualmente, tenemos muchas vacantes abiertas en tecnología. Si te interesa trabajar con nosotros, échale un vistazo a nuestras oportunidades: