BLOG | OFICINA DEL CTO

Cómo las interfaces declarativas democratizan la infraestructura

Miniatura de Lori MacVittie
Lori MacVittie
Publicado el 12 de noviembre de 2018

Las API son la nueva CLI. Pero el lenguaje declarativo es lo que manda cuando se trata del tipo de API que se crea.

Una API (una interfaz de programación de aplicação ) es una capacidad fundamental hoy en día. Las organizaciones los tienen en la capa empresarial, para promover la integración de socios y la innovación por parte de los llamados "desarrolladores ciudadanos". Las aplicações los tienen para facilitar la integración y disociar la lógica de negocios, que puede cambiar con frecuencia, de las interfaces, que no deberían cambiar con tanta frecuencia. Y la infraestructura los tiene. Desde conmutadores hasta enrutadores, desde servicios de aplicação hasta middleware y bases de datos, la infraestructura que comprende los canales de distribución e implementación está habilitada con API.

Eso, en sí mismo, debería ser motivo para hacer una pausa y reflexionar sobre lo que significa para la prometedora comunidad NetOps. Porque si bien las organizaciones tienden a estandarizar unos pocos componentes clave de infraestructura de aplicaciones , no es tan probable que lo hagan solo en unos pocos componentes clave de infraestructura de servicios de aplicação y redes.

De los dieciséis servicios de aplicação diferentes que las organizaciones utilizan en promedio para que sus aplicaciones sean más rápidas y seguras, es seguro que son proporcionados por más de un puñado de componentes de infraestructura. Si asumimos generosamente que la proporción es de tres servicios de aplicação por componente, todavía hay cinco dispositivos diferentes, con cinco API diferentes.

El problema con esto es que a menudo sucede que los proveedores de infraestructura tomaron la afirmación "La API es la nueva CLI" demasiado literalmente. Es decir, la API es simplemente un reflejo de la CLI habilitado para REST.

Cualquiera que haya trabajado con CLI en componentes de infraestructura entiende que la navegación de la CLI se corresponde muy de cerca con el modelo de objetos de la infraestructura. Con frecuencia las API no logran hacer más que trasladar este diseño a HTTP. Lo que significa que aquellos que intenten aprovechar la API necesariamente también deben aprender el modelo de objetos del dispositivo en cuestión.

Este nivel de abstracción está impidiendo el avance de la automatización y la orquestación, porque ahora necesitamos encontrar no solo talento en automatización, sino talento en automatización con algún grado de experiencia en cinco o más modelos de infraestructura de red diferentes. El nivel de experiencia requerido a menudo también exige conocimiento del dominio, que abarca desde una comprensión rudimentaria de la configuración y el enrutamiento de VLAN hasta las relaciones entre servidores virtuales, direcciones IP virtuales, nodos, miembros y grupos.

Exponer la complejidad subyacente de la infraestructura es perjudicial para fomentar la adopción y permitir la automatización. El propósito de las interfaces debería ser abstraer los modelos y la lógica para proteger a los usuarios y operadores de su complejidad. La GUI hace esto al eliminar la necesidad de navegar por las jerarquías de objetos para configurar un servicio simple.

Es por eso que a menudo resulta frustrante descubrir que la API ha reintroducido esta pesadilla de navegación.

Este problema no es exclusivo de la infraestructura de aplicaciones.  Es decir, MuleSoft en su investigación " El valor creciente de las API " encontró que la mayor demanda (47% de los encuestados) de clientes y socios para la integración de API era "API personalizadas que se ajusten a una necesidad comercial específica". Detrás de esto vienen una mejor documentación (19%), plantillas de integración "sin código" (19%) y envoltorios de SDK para las API que necesitan y usan (13%).

Todo lo cual puede resumirse en un llamado a la simplificación. Y en tecnología, simplificación significa abstracción.

Y eso nos lleva al punto de esta publicación, que es que las interfaces declarativas son esa abstracción. Al simplificar las interfaces que se utilizan hoy para aprovisionar, configurar, administrar e integrar la infraestructura, las interfaces declarativas democratizan la infraestructura y abren oportunidades. 

Declarativo versus Imperativo

En términos generales, tanto las declarativas como las imperativas pueden considerarse tipos de API. Las API imperativas son las que te vienen a la mente cuando alguien habla de API. Indican al sistema de destino exactamente cómo hacer algo. Si va a agregar un servidor virtual, deberá indicarle exactamente cómo hacerlo, incluso si se necesitan cinco, diez o más llamadas API independientes.

Eso significa decirle que cree un objeto específico con los atributos apropiados, digamos un nodo con una dirección IP. Luego por separado hay que indicarle al sistema que cree el pool al que se asignará, con un nombre. Entonces tienes que… bueno, ya entiendes la idea. Las API imperativas imponen a sus usuarios la carga de no sólo comprender el sistema y su modelo de objetos, sino también los pasos necesarios para lograr los resultados previstos.

Ese es el impuesto API que pagas con imperativo.

Ahora bien, en términos generales las API imperativas no son algo malo. Son muy importantes al crear una interfaz gráfica de usuario (GUI) o al integrarse con otros sistemas que requieren el tipo de granularidad que se obtiene con una API imperativa. También necesitamos API imperativas, pero no para NetOps y DevOps que se centran en la automatización y la integración.

Pero para el resto de nosotros, no necesitamos saber ese nivel de detalle. Y, de hecho, exigir esa profundidad de conocimiento puede resultar desalentador y ralentizar los esfuerzos de automatización y orquestación. Ciertamente no se presta a democratizar la infraestructura ni a habilitar modelos de autoservicio para DevOps y desarrolladores, y mucho menos para NetOps fuera del dominio de infraestructura específico.

Aquí es donde entran en juego las API declarativas.

Las interfaces declarativas especifican lo que desea hacer y dejan que el sistema se encargue de la lógica y el flujo de trabajo. Entonces, en lugar de decirle específicamente al sistema que cree un nodo y un grupo y que realice toda la lógica correcta en los objetos requeridos, usted los describe y describe sus relaciones.

Algunas interfaces declarativas utilizan JSON, otras XML y algunas incluso recurren a datos de formato simple. Lo que todos comparten es que asumen que los datos describen los objetos de una manera simple y directa que requiere muy poca comprensión de los modelos de objetos y las jerarquías del sistema.

Por ejemplo, esta declaración es bastante legible para humanos. Supone un nivel básico de comprensión del modelo de objetos, pero no tanto como para requerir una certificación en un producto específico para escribir la declaración: 

"web_pool": {
"clase": "Grupo",
"monitores": [
"http"
],
"miembros": [
{
"puertoDeServicio": 80,
"direccionesdelservidor": [
"192.0.1.10",
"192.0.1.11"
]
}
]
}

Aquí es donde el valor de las interfaces declarativas se hace evidente: en la reducción del conocimiento del dominio y la complejidad del aprovisionamiento y configuración de la infraestructura. Al reducir el nivel de experiencia requerido, NetOps no solo puede trabajar más rápido y de manera más eficiente, sino que también puede alentar a DevOps y a los desarrolladores a aprovechar la capacidad.

La adopción de interfaces declarativas como método estándar para gestionar la infraestructura amplía de inmediato el grupo de talentos del que puede sacar partido para ofrecer capacidades de autoservicio y automatización avanzada. La interfaz declarativa anterior necesita muy poca explicación para que DevOps y los desarrolladores la comprendan y puedan usarla. Por otro lado, una interfaz imperativa requeriría mucha más atención al aprendizaje del modelo específico de la infraestructura y de los flujos de trabajo antes de poder esperar resultados.

Las interfaces declarativas democratizan la infraestructura al simplificar el aprovisionamiento, la configuración y la gestión necesarios para automatizar los procesos de implementación e integrar sistemas con otros servicios de infraestructura. Y democratizar la infraestructura significa una automatización más rápida e inteligente y la capacidad de fomentar la colaboración y la cooperación entre los dominios operativos necesarios para obtener beneficios de los movimientos NetOps y DevOps.