Existen muchos boom’s en el medio, siempre hay cosas nuevas que salen, que se mueren, que se ponen de moda, y normalmente generan mas confusión que otra cosa en el medio de las TI y ahora áreas relacionadas como son Marketing Digital, Marketing, Comercialización Híbrida, etc.
Quiero compartirles unas ideas al respecto de este gran tema, pues creo que en ocasiones encarecemos mucho los productos (desarrollado e instalados) por esta falta de claridad y el desarrollo pasa de ser divertido y útil a un proyecto complejo desde antes de iniciarse.
Recuerden que no es un tratado de tesis ni la verdad absoluta… luego hay cada clavado hehe.
En tiempos recientes se habla mucho al respecto de como se deben implementar los microservicios, arquitecturas, infraestructuras, clouds, etc. Esto entre otros múltiples factores nos lleva a un punto crucial del proceso: Las API’s.
¿Pero realmente estamos creando las API’s de forma correcta, pensando en su impacto en los sistemas legacy actuales y que la migración podrá llevar mucho tiempo?.
Los requerimientos de diseño para aplicaciones móviles con microservicios son especiales y deben considerar sobre todo temas de seguridad y escalabilidad.
¿API’s?
¿Qué son?. Veamos la definición de diccionario:
La interfaz de programación de aplicaciones, abreviada como API del inglés: Application Programming Interface. Es un conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
Y la simple:
Es el contrato a cumplir por ambas partes: Servidor vs Cliente de consumo.
De ahi la importancia de su correcto diseño, implementación y administración.
¿Porqué debes diseñar una correcta API (API Design)?
Hay unos puntos del porque debemos cuidar al máximo el diseño de las API’s
- Asegura la correcta utilización de la implementación. Seguro y Confiable.
- Minimiza el tiempo de desarrollo de una aplicación.
- Minimiza la cantidad de código a desarrollar. Y como cada línea de código es un bug potencial …
- A veces el término contrato no es claro.
¿Y la seguridad?
Como es un punto de acceso público en muchos casos, la seguridad ya no es un tema opcional, simplemente debemos entender el grado de protección dependiendo que nivel de datos expuesto u operaciones son sensibles de realizar.
Entonces tenemos varias alternativas (que se pueden usar independientemente o en conjunto) para proveerlas de Seguridad:
- Mecanismos de Token propietarios.
- Encriptación de request y response.
- Uso de canales seguros (https).
- Uso de medios seguros (VPN).
- Frameworks de autenticación (OAuth, AccessToken, JWT, etc).
El diseño de las API’s es la única forma en que los contratos entres los back end’s y sus clientes aseguren una arquitectura con las características de alta disponibilidad, resilencia y robustez que por requerimiento del cliente o de implementación se definan.
Por lo anterior, imaginemos cuando una aplicación (y sus clientes) se vuelve mas compleja, requiere que desde el propio diseño se usen herramientas para su definición, implementación y publicación correcta. Y el número de servicios expuestos (además de sus instancias disponibles) pasan de las decenas a los cientos o miles de ellas.
Y a tal grado se potencia el problema que a fechas recientes se ha generado toda una corriente de aplicaciones, frameworks y conjuntos de éstas para lograrlo, a lo anterior se le ha denominado API Management.
Administración de API’s (API management).
Si se echan una búsqueda en internet podrán ver que existe no mil formas, pero muchas disponibles en todos los sabores posibles. Pero para no inventar el hilo negro de todo esto les compartiré un post de Raúl Galán Gómez que de forma muy práctica nos platica más:
API Management: ¿qué es y para qué sirve? por Raúl Galán Gómez
Como se darán cuenta viene un camino difícil, hasta de especialización al respecto, no dudo que pronto aparezcan los expertos en el API Management por la cantidad de conocimientos que deben poseer y poner en practica.
Pues si tienen dudas al respecto o ayuda que pudiera brindarles, ya saben en la sección de contacto pueden hacérmelas llegar y platicar al respecto.
Y pues nos vemos hasta el próximo post.
Saludos.
Y como siempre sigamos #Javeando