#3 Judopay's Sho~dan Programme

Tras el segundo blog de nuestra serie: Creating Judopay's Next-Gen Tech Platform, analizamos cómo el equipo de ingeniería de Judopay:
- Nos enfrentamos a un sistema obsoleto.
- Reconstruimos los sistemas centrales en una nueva pila tecnológica.
- Creación de una plataforma de pago de última generación en el marco de su programa Sho~dan.
Utilizamos la tecnología para desafiar el statu quo y la aprovechamos como una oportunidad para innovar. Estamos muy orgullosos de compartir con ustedes cómo lo hemos conseguido.
Presentación del programa Sho~dan de Judopay
¿Qué es "Sho~dan"?

- [ ʃo - dɪn ]
sho - Palabra japonesa que significa primero, nuevo o comienzo.
dan - sistema de clasificación de cinturones negros utilizado habitualmente en las artes marciales, introducido por el fundador del judo (el deporte, no Judopay...)
Sho~dan no es sólo un juego de palabras con nuestro nombre, sino que tiene una relevancia más profunda y significativa como nombre elegido para la nueva visión tecnológica de Judopay.
Sho~dan es el primer cinturón negro "dan" en las artes marciales de judo, y representa un nivel superior reconocido de competencia técnica. Pero no se llega a cinturón negro de la noche a la mañana. Tu trayectoria previa sienta las bases sobre las que se ha alcanzado este nuevo nivel.
Tampoco es nuestro destino final. Con perseverancia y compromiso continuos podemos ascender, mejorando y evolucionando nuestra plataforma más allá del nivel de Sho~dan.
Si la pila tecnológica de Judopayera estable y funcionaba para su demanda inminente, ¿por qué embarcarse en la iniciativa Sho~dan?
Le pregunté a David Judopay, Jefe de Ingeniería de Infraestructuras y Automatización, por qué embarcarse en la iniciativa Sho~dan.

"En 2019, nuestro equipo de ingeniería se enfrentaba a una serie de retos. Judopay acababa de pasar los primeros 7 años de su existencia construyendo y ejecutando un monolito .NET.
Durante este tiempo, la empresa pivotó múltiples veces, cambiando drásticamente los requisitos de nuestros sistemas.
La necesidad de moverse rápidamente y adaptarse a estos requisitos cambiantes introdujo una enorme cantidad de deuda técnica.
El sistema se había vuelto tan enrevesado y difícil de manejar que pensamos que sería más fácil empezar de cero.
No fue una decisión fácil. Reconstruir los sistemas centrales de su empresa es increíblemente difícil, costoso y entraña riesgos de desastre. Es importante considerar cuidadosamente el alcance del trabajo que se está asumiendo.
En nuestro caso, pensamos que era la única opción que nos permitiría cumplir nuestros objetivos empresariales a largo plazo. Trabajar con las limitaciones del sistema existente nos había llevado demasiado tiempo".
Los fundamentos del Sho~dan

David reflexiona sobre cómo nació Sho~dan, la plataforma tecnológica de nueva generación de Judopay.
Sho~dan nació de nuestro deseo de alcanzar los siguientes objetivos:
- Sustituir nuestro monolito por una arquitectura basada en microservicios para:
- Permitir un escalado más dinámico
- Aplicar principios de diseño orientados al dominio
- Reducir el tamaño de los desplegables para permitir despliegues rápidos y frecuentes. - Reducir la complejidad de nuestros sistemas actuales reimplantando el software para satisfacer las necesidades actuales, en lugar de las de hace 5 años.
- Aprovechar las capacidades de la plataforma en nube para:
- ayudarnos a escalar rápidamente
- aprovechar los servicios gestionados para ahorrarnos tiempo creando soluciones a problemas ya resueltos. - Automatice todo lo posible para reducir el trabajo manual.
- Cambiar la mentalidad del equipo para construir componentes pequeños, reutilizables y coherentes y adoptar paradigmas de programación funcional.
Llamamos a estos componentes reutilizables el marco de microservicios Sho~dan. - Adoptar principios de software reactivo para desacoplar las dependencias del sistema y beneficiarse de una mayor flexibilidad y escalabilidad.
Sho~dan se basa en la entrega de software escalable, sólido y coherente, centrado en maximizar la agilidad empresarial, permitiendo la entrega rápida, frecuente y fiable de aplicaciones grandes y sofisticadas sin complejidad innecesaria.
El resto de este blog trata un aspecto de Sho~dan: nuestro marco de microservicios.
Descomponer la complejidad con el marco de microservicios Sho~dan
Como parte de Sho~dan quisimos ir un paso más allá y crear un marco común de microservicios sobre el que se formara toda nuestra tecnología para producir servicios que pudieran construirse, replicarse, actualizarse y gestionarse fácilmente.
En esencia, se trata de componentes que juntos representan un conjunto de herramientas con las que construir microservicios, con la confianza de saber que las preocupaciones comunes -aunque a menudo difíciles- ya están cubiertas. Estos pueden incluir lo siguiente:
- Ofuscación de datos
- Normas de seguridad
- Normas de ensayo
- Comunicación interservicios
- Persistencia
- Métricas, registro y supervisión
- Concurrencia
El marco de microservicios Sho~dan utiliza este conjunto de herramientas para proporcionar un estándar de referencia de plantillas de servicios comunes y paradigmas de programación enriquecidos que permitan la entrega rápida, frecuente y fiable de aplicaciones grandes y complejas.
Como ilustran los minirobots de microservicios de Judopay , cada robot representa una aplicación o servicio independiente.

Los componentes necesarios pueden imaginarse "encajados" en un robot determinado, como se ilustra a continuación, convirtiéndose en un elemento de todo el proyecto.
Los desarrolladores pueden así trabajar con la seguridad y confianza de que los fundamentos básicos de cada proyecto son ya correctos y estables.
Trabajar de este modo permite a nuestros desarrolladores centrarse en la redacción de las reglas empresariales y los flujos de trabajo específicos necesarios para una función, en lugar de en las compilaciones básicas del proyecto, lo que permite obtener valor más rápidamente.
Las plantillas de microservicios también significan que, aunque cada servicio distinto tiene un propósito específico, los elementos comunes compartidos entre los servicios hacen que su código base sea más fácil de reconocer y de trabajar para todos los desarrolladores. Esto ayuda a reducir la carga cognitiva general del desarrollador del sistema y a contener la complejidad de la plataforma.
Sho~dan Interior
Aparte de construir servicios y entregar características rápidamente, el Marco de Microservicios Sho~dan significa que en cualquier proyecto tenemos ciertas "garantías" Sho~dan. Por ejemplo:
- CONTROL DE CALIDAD
- Requisitos reglamentarios y de cumplimiento
- Requisitos de seguridad
- Estructura del proyecto
- Modelos de aplicación
- Rendimiento y disponibilidad del servicio
Permitiendo a nuestros desarrolladores la libertad de centrarse en la lógica de negocio y ofrecer valor más rápido = entrega de soluciones ágil y eficiente.
La base de código no es el único lugar para gestionar la complejidad. La repetición manual y la gestión de la capacidad también pueden representar otras formas de complejidad del sistema que dificultan la agilidad.

Evolución hacia una biblioteca común...
Philip, uno de los ingenieros principales de Judopay, comparte su visión de cómo la identificación de patrones de programación comunes evolucionó hasta convertirse en una biblioteca común:
"Cabe mencionar que no nos propusimos estandarizar el código común en componentes de microservicios comunes.
Más bien, cuando empezamos a desarrollar más servicios en el proyecto Sho~dan, nos dimos cuenta de que teníamos algunos posibles patrones de programación comunes.
Por ejemplo:
- Conexión a nuestra base de datos Postgres
- Añadir metadatos de seguimiento a los mensajes de registro
- Carga de la configuración
Así que, en lugar de copiar y pegar estos patrones en cada nuevo servicio, decidimos trasladarlos a una biblioteca común. Así fue fácil importarlos y reutilizarlos en los nuevos servicios que íbamos escribiendo, para evitar duplicaciones innecesarias.
La biblioteca creció a partir de ahí. Añadimos más y más código compartido, hasta que descubrimos que habíamos construido nuestra propia extensión del marco Lagom.
Como tal, fue algo que evolucionó. Aprendimos y descubrimos lo que sería un código común útil, en lugar de intentar diseñar algo desde el principio."

Una regla de oro...
Citando de nuevo a Philip,
"Como ya se ha dicho, el desarrollo del código común y la biblioteca común no estaba predeterminado:
Decidimos que los componentes comunes de microservicios deberían ser únicamente un conjunto de "herramientas de software" que nos permitieran construir microservicios de forma rápida, fiable y coherente.
Un servicio debe ser dueño de su lógica de negocio, incluso si esta lógica se repite a través de los servicios.
Lo que quiero decir con esto es:
Nuestro próximo blog de la serie Sho~dan ofrecerá una visión más profunda de cómo hemos aplicado la ingeniería de automatización y el escalado a nuestros microservicios.