¿Qué son las APIS y para qué sirven?

Las API (Interfaces de Programación de Aplicaciones) son programas de software que les brindan a los desarrolladores acceso a recursos y datos de procesamiento. /WHAT/

Empresas de muchos sectores diferentes ofrecen las API de manera pública para que los desarrolladores puedan integrar herramientas, servicios o bibliotecas especializados a sus propias aplicaciones y bases de código. /WHY/

Modelo cliente-servidor

Internet es el canal de comunicación estándar que usan las API para transmitir las solicitudes y las respuestas entre programas. El modelo cliente-servidor es la arquitectura subyacente que usan las API basadas en la Web para intercambiar información.

El cliente es un dispositivo informático (p. ej. un smartphone, una laptop, etc.) que solicita un dato o recurso de procesamiento. La solicitud del cliente debe tener el formato del protocolo acordado.

El servidor almacena datos o recursos de procesamiento. Su trabajo es interpretar y cumplir con la solicitud del cliente.

A continuación, se muestra una representación visual del modelo cliente-servidor:

5fe668c7107b4d28.png

Métodos de solicitud y protocolo HTTP

Debido a que las API usan la Web como canal de comunicación, muchas se adhieren al protocolo HTTP, que especifica las reglas y los métodos para el intercambio de datos por Internet entre clientes y servidores. El protocolo HTTP no solo sirve para las API, también es el estándar para las comunicaciones web en las que los datos se envían y se reciben por Internet.

Las API que emplean el protocolo HTTP usan los métodos de solicitud HTTP(también conocidos como «verbos HTTP») para transmitir las solicitudes de los clientes a los servidores. Los métodos de solicitud HTTP más frecuentes son GETPOSTPUT y DELETE.

Un cliente usa el método de solicitud GET para obtener datos de un servidor. Si se encuentra el recurso solicitado en el servidor, se reenviará al cliente.

El método PUT reemplaza los datos existentes o crea datos si estos no existen. Si usa este método muchas veces, no tendrá efecto: solo habrá una copia del conjunto de datos en el servidor.

El método POST se usa, principalmente, para crear recursos nuevos. Si usa este método muchas veces, agregará datos en varios lugares en el servidor. Por lo tanto, se recomienda usar el método PUT para actualizar los recursos y POST para crear recursos nuevos.

El método DELETE quitará datos o recursos especificados por el cliente en un servidor.

Si bien hay cientos de API disponibles, todas con sus objetivos y especializaciones únicos, es importante saber que, al final del día, todas usan el mismo protocolo y los mismos métodos subyacentes para la comunicación entre cliente y servidor.

Los endpoints

Las API usan métodos HTTP para interactuar con los datos o servicios de procesamiento alojados en un servidor. Estos métodos pierden su utilidad si no se puede acceder a recursos específicos de manera coherente. Las API usan canales de comunicación llamados endpoints para que los clientes puedan acceder a los recursos que necesitan sin complicaciones o irregularidades.

Los endpoints son puntos de acceso a los datos o recursos de procesamiento alojados en un servidor con el formato de URI de HTTP. Se agregan a la URL base de una API (p. ej., http://example.com) para crear una ruta de acceso a un recurso o un contenedor de recursos específicos. Estos son algunos ejemplos:

  • http://example.com/ubicacionestiendas
  • http://example.com/cuentas
  • http://example.com/empleados

Los siguientes endpoints también son válidos:

  • http://example.com/ubicacionestiendas/sanfrancisco
  • http://example.com/ubicacionestiendas/newdelhi
  • http://example.com/ubicacionestiendas/london

Puede agregar cadenas de consulta a los endpoints (p. ej., http://example.com/extremo/?id=1) con el fin de ingresar las variables que pueden ser necesarias para completar la solicitud de una API. Los endpoints son conocidos como los «sustantivos» que reciben las acciones de los verbos (métodos HTTP), y las API usan este marco para cumplir con las solicitudes.

Más precisamente, un cliente envía una solicitud compuesta por un método HTTP (verbo) y un extremo (sustantivo) para recibir datos específicos o realizar una acción particular en el servidor. Es importante saber que el servidor es el que cumple la solicitud del cliente al traducir y realizar una operación específica, según el método y el extremo proporcionados.

Debido a que todo el trabajo pesado se lleva a cabo en el backend, podría decirse que una API que usa métodos y endpoints HTTP reside en el servidor implementando las solicitudes del cliente. Este modelo define de manera flexible las API de RESTful, que se analizan con más detalle en la siguiente sección. Para adquirir experiencia práctica en la compilación de endpoints para una API, complete el lab Cloud Endpoints: Qwik Start.

API de RESTful

Las API que utilizan el protocolo, los métodos de solicitud y los endpoints de HTTP se denominan API de RESTful. REST (transferencia de estado representacional) es un estilo de arquitectura que establece los estándares para la comunicación basada en la Web. Esta es la descripción de un sistema RESTful según Google:

… los recursos se guardan en un almacén de datos; un cliente envía una solicitud para que el servidor ejecute una acción en particular (como crear, recuperar, actualizar o borrar un recurso) y el servidor ejecuta la acción y envía una respuesta que, por lo general, es una representación del recurso especificado.

Este diseño orientado a los recursos es un principio fundamental de REST. Las API de RESTful se definen de esta manera:

… conjuntos de recursos que se pueden abordar de manera individual… Los recursos y los métodos se conocen como los sustantivos y los verbos de las API. Con el protocolo HTTP, los nombres de los recursos se mapean de forma natural a las URL, mientras que los métodos lo hacen a los métodos HTTP…

Estos términos deberían resultarle familiares, ya que los examinó en secciones anteriores. REST es el marco de trabajo más usado para las API. En el año 2010, cerca del 74% de las API de la red pública eran API de REST de HTTP.

Además de las strings de consultas, las API de RESTful pueden usar estos campos en sus solicitudes:

  • Encabezados: Parámetros que detallan la solicitud HTTP en sí misma
  • Cuerpo: Datos que el cliente desea enviar a un servidor

El cuerpo se escribe en el lenguaje de formato de datos JSON o XML.

¿Qué es Devops?

Hoy en día a cualquier término que represente una idea rompedora se le transforma en una «tendencia» que se usa hasta la saciedad, esto es lo que le ha ocurrido al término «DevOps» . Surgido en el ámbito de una conferencia de Agile en 2008 , venía a resolver una problemática que había estado presente desde los comienzos del desarrollo del software y que con el movimiento Agile representaba un escollo, que no es más que la falta de entendimiento entre los distintos equipos.

DevOps es una filosofía o una forma de hacer las cosas diferente, una cultura que debe construirse dentro de la empresa para facilitar los 12 principios de Agile, y al mismo tiempo es una conjunto de herramientas y técnicas que empleadas adecuadamente facilitan y ponen en marcha los engranajes que implementan un nuevo ciclo de vida.

Los 7 aspectos fundamentales que garantizan el éxito de la cultura DevOps son:

  • Definición de la infraestructura como código. Es importante que cualquier implementación se gestione de la misma forma, y la infraestructura debe seguir el mismo patrón , esto implica que le podamos aplicar calidad y que podamos reproducir la construcción de la misma cuantas veces necesitemos.
  • Gestión de la configuración de forma independiente. Es importante que los aspectos que definen una instancia de nuestra aplicación estén gestionados de forma independiente del código.
  • Integración continua. Se refiere a la capacidad de enlazar el resultado de cada fase con la siguiente y poder tomar decisiones en cada interfaz.
  • Gestiona de versiones. Este aspecto es muy importante si no queremos
  • Automatización. De todo, pero especialmente de las pruebas tanto de la infraestructura como del código de la aplicación.
  • Despliegue automático y continuo ( Continuous Delivery ). Disponer de los mecanismos para empujar nuestros cambios a producción y retirarlos cuando ya no sean necesarios es un aspecto fundamental.
  • Monitorización de todos los aspectos fundamentales de la aplicación. En especial del rendimiento y de los aspectos no funcionales.

TL;DR

A modo de resumen podemos decir sobre DevOps lo siguiente:

  • Es una cultura que es consecuencia de aplicar metodología ágil en los procesos de desarrollo de software.
  • Se basa en al colaboración e integración entre los equipos implicados en el desarrollo del software y su mantenimiento. Es decir , desarrolladores, administradores, equipo de calidad y de seguridad.
  • El resultado de aplicar esta cultura merece la pena tanto por la parte de la empresa como por el resultado, al desarrollar código de forma más eficiente.