Escoger la arquitectura correcta

Ayer en Ecuador se iba a dar acceso a una página web para registrarse para recibir la vacuna en contra de COVID-19 planvacunarse.ec, si eres de Ecuador probablemente ya sabes lo que pasó después, la página paso caída todo el día.

El tema me pareció interesante traerlo en esta publicación primero porque es de interés nacional y segundo porque cada día la tecnología afecta más y más a nuestras vidas y la de todos los que nos rodean.

Personalmente pienso que la vacunación no debía haberse hecho con registro previo, uno porque el acceso a esta opción está restringiendo a mucha gente que no tiene Internet, computadora y conocimientos para usar la página web; y dos creo que el gobierno debería saber lo suficiente de todos sus habitantes vía registro civil, IESS, escuelas, etc. como para hacer un listado y publicar el listado de las personas elegibles en cada fase.

Si no era una opción hacerlo de esa forma, ahora sí vamos a la parte técnica que también deja mucho que desear.

No tengo todos los requerimientos que debe cumplir el sistema de registro para vacunas, pero vamos a asumir los siguientes requerimientos funcionales:

Requerimiento informativo:

Como usuario visitante de planvacunarse.ec
Debo poder leer la información acerca de las fases de la vacunación
Para poder estar informado y saber cuando me va a tocar el turno.

Requerimiento de registro:

Como usuario visitante de planvacunarse.ec
Debo poder ingresar mi cédula de identidad
ingresar un email para recibir notificaciones
y contestar algunas preguntas médicas
Para poder quedar registrado y que me notifiquen
lugar y fecha de vacunación en un futuro.

Vamos a pretender que debemos diseñar un software que soporte estos requerimientos funcionales. Para un desarrollador junior es fácil tomar la herramienta que uso todos los días y hacer que cumpla estos dos requerimientos, en el caso de quien se encargó de esta página su herramienta fue wordpress para el sitio informativo y el plugin de formularios para el registro, funciona para algunos cientos de visitas concurrentes, dependiendo de las características del servidor, pero para millones de no-vacunados simplemente no.

Como arquitectos de software debemos hilar más fino y obtener requerimientos que no están expresados explícitamente en los anteriores, temas como: quiénes van a usar este software, desde qué plataformas, con qué tipos de red, a cuántas personas podemos dar servicio al mismo tiempo, cuál es el nivel de servicio mínimo esperado, etc. etc.

Escoger la arquitectura correcta se trata de analizar y tomar decisiones con todos los requerimientos explícitos e implícitos que el software debe tener. Es probable que las herramientas que tienes a disposición entren en conflicto con los requerimientos de la arquitectura y eso está bien, no siempre vas a poder usar las herramientas que te gustan o te sientes cómodo.

En mi opinión profesional este sitio de registro de vacunación debió haberse hecho con la siguiente arquitectura:

Esto solo fue un experimento mental, estoy seguro que hay muchos más requerimientos internos como validar cédulas con el registro civil, validar emails, etc. Para la brevedad del artículo decidí dejarlos afuera. Por otro lado estoy seguro que haya otras herramientas con las que se puede construir una arquitectura correcta, ustedes que hubieran usado?

Puedes contestarme registrandote y contestando al e-mail de bienvenida.