June 12, 2020

Conectando Lemmid Store con cocinas

Integrándose con sistemas externos que no controlas

Como parte de la aplicación de pedidos de comida que estoy desarrollando, necesitaba diseñar una forma confiable de vincular la aplicación a sistemas externos. Estos sistemas externos están fuera de mi control directo e incluyen diferentes cajas registradoras, sistemas de gestión de cocina e impresoras de tickets. Sigue leyendo para obtener más información sobre cómo diseñar para lo desconocido y poco confiable.

Aplicación para pedir comida

La aplicación que estoy desarrollando es Lemmid Store, es una aplicación fácil de usar que permite a las personas realizar (y pagar) pedidos de comida para llevar. Puedes encontrar all posts on Lemmid Store here.

Lemmid Store - una aplicación para pedir comida para llevar
Lemmid Store - una aplicación para pedir comida para llevar

Sistemas externos

La necesidad de conectar con sistemas externos está impulsada por el deseo de integrar la aplicación de pedidos de comida en los procesos comerciales relacionados con el servicio de entrega de alimentos. Piense en cosas como:

Ticket impreso - a través de una conexión externa - incluyendo datos detallados del pedido como modificadores de producto (elecciones del cliente por producto)
Ticket impreso - a través de una conexión externa - incluyendo datos detallados del pedido como modificadores de producto (elecciones del cliente por producto)

Desafíos al conectar con sistemas externos

Puede que no te des cuenta, pero conectarse a sistemas externos puede ser complicado. Si piensas en la aplicación de pedidos como una especie de "motor" (como el de tu coche), esencialmente quieres integrar este motor con piezas externas. Como puedes imaginar, no todas las piezas son igualmente adecuadas para caber bajo el capó figurativo. Para hacer las cosas aún más desafiantes: no sabes con certeza cuán confiables son las partes externas. Debes diseñar tu integración de tal manera que diferentes partes externas se puedan conectar fácilmente y que el rendimiento sea independiente de la confiabilidad de estas partes externas.

Integrar sistemas externos en tu aplicación es como adaptar piezas de terceros a un motor: debes considerar cuidadosamente su ajuste y confiabilidad (imagen de un motor de combustión, dominio público)
Integrar sistemas externos en tu aplicación es como adaptar piezas de terceros a un motor: debes considerar cuidadosamente su ajuste y confiabilidad (imagen de un motor de combustión, dominio público)

Al igual que con un motor de combustión, debes considerar la compatibilidad y la confiabilidad al conectar e integrar tu software con sistemas externos. No puedes asumir que el software externo:

Para diseñar para esta visión bastante sombría de las conexiones externas, pensé que era una buena idea dejar que el servidor backend principal de mi aplicación de pedidos de comida descargara la responsabilidad de conectarse con sistemas externos a un 'servidor conector' especialmente diseñado. El servidor conector se conectaría entonces de forma independiente al sistema externo. De esta manera, el servidor principal solo se comunica con partes y sistemas de 'primera mano', minimizando los riesgos de incompatibilidades y posibles tiempos de inactividad.

Separando el servidor backend principal de los sistemas externos introduciendo un 'servidor conector' diseñado específicamente
Separando el servidor backend principal de los sistemas externos introduciendo un 'servidor conector' diseñado específicamente

En la práctica, esto significa que el 'servidor conector' es en realidad una máquina diferente, que ejecuta su propia pila de software. Hay algunas ventajas importantes en esta segmentación:

Conclusión

Por muy tentador que sea simplemente agregar piezas nuevas y elegantes a tu aplicación, debes considerar cuidadosamente tu configuración para asegurarte de que funcione de manera confiable.

Diseñar software de servidor backend para conectarse con API externas es un desafío. ¡Debes esperar lo mejor, pero diseñar para lo peor!