Header Ads Widget

Ticker

6/recent/ticker-posts

El regreso de la CLI: CLI que utilizan las empresas relacionadas con API


 Antes del auge de las interfaces gráficas y los llamativos escritorios de usuario, la interfaz de línea de comandos (CLI) era la única forma de interactuar con una computadora. Pero la CLI retro está regresando.

Es una forma básica de computación: la CLI acepta comandos de texto y los interpreta en funciones en el sistema operativo. Debido a su atractivo para desarrolladores y capacidades de scripting, la CLI se ha convertido en un elemento vital para la gestión de la computación en la nube, pero cada vez más empresas relacionadas con API están comenzando a ofrecer una CLI en el lado de su API también.

En este artículo, exploraremos algunas CLI en la naturaleza para rastrear su reaparición dentro de la pila de la plataforma SaaS. Veremos cómo empresas como Zapier , Curity , Amazon y más están lanzando CLI junto con sus ofertas de API para maximizar el uso de su plataforma y satisfacer mejor las necesidades de sus desarrolladores. Algunas empresas relacionadas con API pueden darse cuenta de que ofrecer una CLI podría mejorar su experiencia como desarrollador externo.

CLI vs API: ¿Cuál es la diferencia?

Mientras que las CLI están diseñadas para ser legibles por humanos, las  API se programan en aplicaciones .

Mientras que los usuarios típicos confían en una interfaz gráfica de usuario (GUI) interactiva en sus dispositivos, una interfaz de línea de comandos (CLI) es otra ruta hacia el mismo fin. Una CLI es la línea de comandos básica basada en texto para acceder al sistema operativo; Un usuario ingresa texto, espera una respuesta de la máquina y así sucesivamente para completar las acciones.

Sin embargo, sigue siendo relativamente legible por humanos en comparación con una interfaz de programación de aplicaciones (API), que es un instrumento muy flexible para crear herramientas. Mientras que las API permiten crear y conectar aplicaciones en un sentido máquina-máquina , una CLI es posiblemente mejor para tareas ad hoc u operaciones de exploración rápidas , ya que es más legible por humanos. Cuando la integración de una API puede ser excesiva, la CLI está bien preparada para cambios rápidos únicos y tareas que no se repiten.

Los usuarios avanzados de computadoras a menudo prefieren la interfaz de línea de comandos, ya que proporciona los medios más poderosos para controlar un sistema operativo y permite automatizaciones con secuencias de comandos. Si se inicia desde un shell de línea de comandos, muchos programas normales también permiten una mayor manipulación desde dentro de una CLI. Algunas aplicaciones pueden incluso admitir una API, CLI y una GUI, o ser ejecutadas por comandos CLI envueltos en una GUI.

Dado que la CLI es una puerta directa, visual y legible por humanos para interactuar con un sistema, tiene sentido que una CLI sea la puerta más directa y legible por humanos a los datos, servicios y funcionalidades de una empresa.

Si bien ese privilegio se ha regulado a las API web en los últimos años, la interfaz de línea de comandos está resurgiendo a medida que muchas empresas recurren a ella para permitir un control matizado que ofrece los datos y el procesamiento en la nube del consumidor. Por ejemplo, Google Cloud ofrece un Cloud Shell para manipular los recursos de la nube directamente desde un navegador web que simula un shell de Linux.

En muchos casos, una interfaz de programación de aplicaciones controla la CLI y la GUI. Como señala Ivan Pepelnjak :

"Las plataformas más nuevas suelen utilizar la misma API expuesta al usuario final para implementar su CLI y GUI".

Concluye que aunque una CLI puede ser más fácil para los humanos, una API es más fácil para las máquinas. Con una CLI, puede ingresar comandos fácilmente (dada la sintaxis adecuada) para ver visualmente la respuesta, mientras que las integraciones de API están integradas en las aplicaciones y el resultado a menudo se ve dentro de la aplicación de terceros. Una discusión grupal reciente de Cisco pareció revelar que las API y las CLI pueden coexistir felizmente ya que sobresalen en funciones complementarias.

La computación en la nube se basa en la CLI

Para comprender la utilidad de la CLI, no es necesario mirar más allá de la computación en la nube . Para interactuar con máquinas virtuales, activar instancias, ejecutar aplicaciones en la nube, arbitrar un centro de datos virtual y más, una CLI es el método favorito de los desarrolladores para iniciar transacciones en la nube.

Acerquémonos a algunas CLI importantes para comprender sus enfoques únicos y para tener una idea de cómo las CLI ayudan a los proveedores y consumidores de software.

CLI de Amazon Web Services (AWS)

Cuando hablamos de las CLI que se utilizan en la arquitectura de la nube, inevitablemente aparecerá AWS. Sin duda, el amplio espectro de servicios web de Amazon se basa en muchos tipos de ofertas para atender a varios usuarios, y AWS es un excelente ejemplo de una empresa que ofrece una única herramienta de línea de comandos para interactuar mejor con estos recursos en la nube.

La AWS CLI, que se ejecuta en Mac OSX, Windows o Linux, se puede utilizar para explorar instancias, ver el contenido del depósito S3, administrar depósitos y más. El aws-shell brinda algo de ayuda a los usuarios de CLI, como autocompletado y documentación en línea , lo que mejora la usabilidad .

Como demuestra este AWS: re talk , un buen script de shell de AWS suele tener menos de 100 líneas de código y se ejecuta en secuencias con una lógica de dominio simple. El uso de una CLI de esta manera es vital para la automatización , ya que desbloquea un gran potencial de integración continua .

Después de haber elaborado definiciones de API para 66 Amazon Web Services, API Evangelist señala que Amazon hace un buen trabajo al poner el mismo énfasis en su misión CLI y API:

"Creo que la relación entre CLI y API no se discute lo suficiente en el sector de API, pero es algo que es claramente sólido en todo el ecosistema de AWS".

Los posibles proveedores de CLI deben tomar una página del manual de Amazonian: evitar inconsistencias en la documentación y asegurarse de que todas las vías disponibles para la funcionalidad (GUI, API o CLI) sean igualmente compatibles.

CLI de Google Cloud

Desde computación en la nube hasta almacenamiento, aprendizaje automático, seguridad y más, Google Cloud proporciona una amplia gama de herramientas para ayudar a crear aplicaciones. El rasgo único aquí es que Google Cloud Shell ofrece una interfaz de línea de comandos para administrar estas aplicaciones en la nube, así como todas las API de Google, desde cualquier navegador web .

Google Cloud Shell viene con ayudantes incorporados como Bash y emacs , y viene con soporte para muchos lenguajes de programación importantes . Con él, puede hacer cosas como configurar proyectos de Kubernetes desde la línea de comandos.

Los comportamientos de comandos similares a CLI también existen dentro del SDK de Google Cloud . Por ejemplo, la administración de servicios beta de la CLI de gcloud proporciona funciones de línea de comandos para crear o administrar API, como convertir una definición de Swagger en una especificación de Google .

Aunque algunas acciones aún están en fase beta, este fuerte impulso hacia la colocación de tareas de integración continua en la línea de comandos podría permitir a los desarrolladores de aplicaciones y API administrar sus dependencias de una manera más fácil . Además de eso, usar un Cloud Shell basado en navegador podría ser conveniente ya que elimina la necesidad de almacenar un SDK local y ayuda a desviar problemas de diferentes sistemas operativos durante la colaboración en equipo .

CLI de Zapier

Zapier anunció recientemente una CLI como un nuevo medio para crear integraciones directamente desde la línea de comandos, lo que permite a los desarrolladores implementar integraciones incluso más rápido que antes.

"Algunas de las herramientas más poderosas de un desarrollador llaman a la línea de comandos su hogar"

Con la CLI, los desarrolladores pueden conectarse a 750 herramientas. Mientras que la CLI es más para un uso a largo plazo que atiende a los usuarios de JavaScript, permitiendo a los desarrolladores escribir una aplicación en JavaSCript, probar y manejar migraciones, y más, también ofrecen una GUI de Web Builder para quienes no son desarrolladores.

“Esta herramienta CLI es una forma nueva y poderosa de conectarse al ecosistema de Zapier. Puede escribir, probar e implementar sus propias aplicaciones Node JS directamente desde su máquina ".

Zapier notó cómo sus clientes trabajan en entornos como git y escenarios de control de fuente, y construyó una herramienta adaptada a esa usabilidad similar . Se puede decir mucho de empresas atentas como esa, que escuchan y responden a las necesidades de su audiencia .

Dado que también ofrecen un Web Builder, el catálogo de herramientas de Zapier está dirigido a usuarios de todos los orígenes , con la esperanza de ampliar el embudo para generar más interés en la plataforma. Un posible inconveniente es que no hay paridad de Web Builder / CLI; en el momento de redactar este documento, las aplicaciones de CLI no se pueden convertir en aplicaciones de Web Builder y viceversa.

CLI de Curity

Maestros de la especificación OAuth, Curity.io ha desarrollado un servidor de identidad innovador  que las API y las aplicaciones móviles pueden usar para inicios de sesión altamente seguros. Dado que el servidor está diseñado para DevOps, la gestión de la plataforma se puede realizar de forma automatizada mediante secuencias de comandos para trabajar con flujos de trabajo personalizados. Para muchos desarrolladores, ahí es donde entra la “CLI”.

Como Jacob Ideskog describió a las API nórdicas, la CLI de Curity se basa en un 100% en el modelo, lo que significa que todo lo que contiene el modelo de configuración está disponible para configurar dentro de la CLI. La CLI de Curity está hecha en estilo Juniper , lo que brinda un modelo más consistente donde los elementos están bien definidos en una estructura de árbol . También es transaccional , lo que significa que la configuración de la CLI no cambia drásticamente cada vez que presiona "Intro".

Parece que Curity ha pensado mucho en el diseño y la coherencia en todo el modelo de plataforma al crear su CLI.

CLI de colmenar

La pila de diseño de API Apiary se puede utilizar para crear prototipos y probar API, y privilegia el enfoque de API Blueprint para el diseño y la documentación. Con la CLI de Apiary , los desarrolladores pueden trabajar localmente para desarrollar y obtener una vista previa de sus API, y actualizar documentos en Apiary.io. Lo bueno de esto es que los desarrolladores pueden escribir toda la documentación de la API desde la línea de comandos . El éxito de la CLI de Apiary podría indicar si otras herramientas de administración de API pueden querer colarse en la línea de comandos.

Heroku CLI

Heroku es otra plataforma en la nube que los desarrolladores pueden usar para crear, administrar e implementar aplicaciones. La CLI de Heroku envuelve la API de la plataforma Heroku para que los desarrolladores puedan crear y administrar aplicaciones desde la terminal. Algo único es que Heroku proporciona capacidades de complemento para que los desarrolladores puedan personalizar la experiencia de CLI.

Un heroku helpcomando devuelve un extenso menú de ayuda de posibles comandos, y su documentación paso a paso sobre el uso de CLI es atractiva para los desarrolladores de todos los niveles.

Wercker CLI

Wercker
  es otro competidor en el creciente mundo de las herramientas CI . Wercker CLI existe dentro de la plataforma Wercker, que se integra con Kubernetes, AWS, Google Cloud y los canales de colaboración en equipo. Desde la línea de comandos de Wercker, los equipos pueden administrar contenedores y ejecutar comandos de orquestación . Lo que es único con esta oferta es la capacidad de conectar múltiples servicios en este shell de línea de comandos de terceros.

Kong CLI

Kong es una capa de API o puerta de enlace que los proveedores de API RESTful pueden usar para administrar sus API, manejando cosas como limitación de velocidad, autenticación, almacenamiento en caché y más. Además de una API RESTful para funciones de administración, también proporcionan una CLI para administrar instancias de Kong.

CLI de BrightWork

Brightwork.io ofrece una plataforma para crear y alojar microservicios. Dado que el uso de Brightwork API es fundamental para el flujo de trabajo de implementación de aplicaciones, han centrado su oferta en una CLI para mejores desarrolladores de servidores. Lo bueno es que este paquete de Node.js se puede descargar fácilmente desde una terminal.

Para crear una aplicación, ejecuta un bw initcomando para crear un manifiesto YAML. Después de editar ese archivo, los desarrolladores inician sesión con credenciales de usuario, crean una clave API y la usan para interactuar con la API Brightwork.

CLI de WordPress

El WP-CLI mantenido por la comunidad se enfoca en automatizar la tediosa instalación de WordPress y el proceso de actualización de complementos . Comandos como wp plugin installwp plugin activatetranscribir muchas de las funciones administrativas de WordPress en un entorno de terminal para un control rápido y simple.

Este enfoque novedoso elimina la necesidad de administrar la arquitectura del sitio desde un navegador web, un pilar para la mayoría de los CMS. Uno podría ver fácilmente que esto se extrapola para cubrir otras funciones comunes de WordPress, como administración de usuarios, etiquetado, publicación de artículos y más. Aunque esta no es una interfaz con soporte oficial, demuestra otro caso de uso potencial para nuevas herramientas de línea de comandos.

Otras CLI notables

Nuestra lista de CLI para productos SaaS ciertamente no termina ahí. Azure lanzó recientemente una v2.0 de su CLI para ayudar a configurar los servicios en la nube creados para modelar un entorno Linux, IBM Connect ofrece una CLI para ayudar a administrar las configuraciones y también hay CLI disponibles para APImatic ,  Cloud Foundry , Rackspace , Oracle , Digital Ocean y muchos otros.

Mejores prácticas para ofrecer una CLI

Ahora que hemos evidenciado una tendencia creciente de soporte CLI en la industria, ¿qué mejores prácticas existen para mantener una?

Juniper vs Cisco : compare las dos familias principales de estilos de CLI y vea cuál funciona mejor para usted. Ideskog favorece el estilo Juniper por su estructura, consistencia y elementos bien definidos.

Diseñarlo para que sea transaccional : como señala Ideskog, “esto es MUY importante. Cuando trabajas en una CLI, debes poder preparar tu configuración, validarla, compararla con la que tienes y, finalmente, confirmarla (aplicarla) en un solo paso ".

Datos operativos y de configuración claramente separados : los datos operativos son cosas como estadísticas y tiempo de actividad, y son diferentes de la configuración, como puertos y hosts. La diferenciación debería ser obvia en el diseño. Ideskog advierte que nunca permita que la configuración dependa del estado operativo:

“Un ejemplo es una interfaz que solo se puede configurar si está conectada a Internet. Esto significa que la configuración puede haber sido válida cuando el administrador la configuró por primera vez, pero cuando la conexión a Internet se cae, ¿qué haces entonces? De repente, la configuración no es válida. Ésta es una mala propiedad de un sistema. Hace que sea muy difícil pre-aprovisionar un sistema, ya que no se puede saber de antemano si la configuración es válida o no ”.

Deje que el modelo controle la CLI para lograr la máxima coherencia : para Amazon, para lograr una experiencia de línea de comandos coherente en miles de comandos, hicieron lo siguiente :

“Decidimos generar automáticamente comandos y opciones a partir de los modelos subyacentes que describen las API de AWS. Esta estrategia nos ha permitido brindar soporte oportuno para nuevos servicios de AWS y actualizaciones de API con un estilo de comandos coherente ".

Apunta a la paridad CLI-API-GUI : si sigues un paradigma basado en modelos, todos los comandos de la CLI deberían ser accesibles como una llamada API y viceversa. Como señala API Evangelists , la API de AWS y la CLI están bastante sincronizadas en términos de funcionalidades:

"Es importante asegurarse de que haya paridad y coherencia entre lo que está disponible a través de una interfaz de usuario y la API y la CLI".

Tenga cuidado con la evolución, especialmente al actualizar . La documentación de comandos, los documentos de la API y la funcionalidad deben permanecer sincronizados. Como dijo Jeff Browning :

"Las CLI son scripts cableados que funcionan bien a corto plazo, pero no evolucionan con tanta gracia como la verdadera integración"

Adam DuVander de Zapier enumera algunas de las mejores prácticas de CLI en su artículo aquí , algunas de las cuales se resumen a continuación.

  • Proporcione una pantalla de ayuda: la usabilidad y el descubrimiento son muy importantes para las CLI. Facilite el acceso a una guía de introducción con banderas simples como -ho?
  • Finalización de la pestaña de oferta.
  • Robar a los campeones. Replica patrones de comandos de Linux que funcionan y aprovecha los comandos breves.
  • Ofrezca opciones de personalización.
  • Haga de la seguridad una alta prioridad.
  • Si está basado en escritorio, admite diferentes sistemas operativos y entornos de desarrollador para que ningún compañero de equipo se quede en la estacada.

Beneficios de ofrecer una CLI (junto con una API)

Cada vez más proveedores de API admiten una CLI junto con su API. ¿Pero por qué? Estas son algunas de las principales razones por las que es posible que desee proporcionar una CLI junto con una oferta de API:

Ya sea que se trate de crear una interfaz legible por humanos para atraer mejor los gustos de los desarrolladores, automatizar las tediosas acciones de la interfaz de usuario u ofrecer nuevas capacidades de scripts para acelerar su entrega continua, una CLI podría significar una reducción de tiempo para los usuarios. También podría anular la necesidad de SDK si se basa en un navegador.

Pero el proponente clave de la adopción de una CLI es que mantiene a los desarrolladores donde trabajan . Dado que la mayoría de los desarrolladores trabajan desde su editor favorito dentro de la línea de comandos de todos modos, ofrecer esta capacidad los mantiene donde se sienten más cómodos.

Reflexiones finales: ¿CLI-First es la nueva API-First?

Una CLI es un poderoso aliado para mejorar la experiencia del desarrollador, ya que podría  usarse en un modo interactivo para depurar, solucionar problemas o explorar en tiempo real, o usarse de manera abstracta y de alto nivel con scripts de shell para unir acciones locales y CLI .

Cubrimos los casos de uso de las CLI en la computación en nube, pero también encontramos compatibilidad con CLI emergente entre otros sectores; Las capas de puerta de enlace API como Kong de Mashape, los especialistas en identidad como Curity.io, los generadores de documentación como Apiary, los CMS como WordPress y los integradores de  microaplicaciones como Zapier están a la cabeza de las CLI para ofrecer controles matizados.

Dado que una CLI de diseño de calidad se basa en una API, es probable que pasar a "CLI primero" no reemplace el mantra "API primero". Sin embargo, es un componente importante dentro del arsenal de opciones de integración de terceros. Al evaluar si se ajusta correctamente, los arquitectos de plataformas deben ver sus ofertas desde una perspectiva amplia para ver si existe una brecha entre sus dispositivos programáticos y las interfaces visualmente más atractivas.

Hay muchas empresas que implementan tanto una API como una CLI, pero ¿dejamos de lado algunos ejemplos brillantes? ¿Tiene alguna de las mejores prácticas para alcanzar la paridad API-CLI? ¡Por favor mencione a continuación!

 

Publicar un comentario

0 Comentarios