Establecer un ecosistema abierto de servicios puede ser un poderoso multiplicador del valor empresarial, pero solo funciona si su estrategia API tiene una base sólida.
A principios de los 2000, empresas como Amazon, eBay y Salesforce impulsaron una tendencia hacia la estandarización de interfaces entre aplicaciones web. El resultado fue una revisión completa de cómo se desarrollaron e integraron las aplicaciones, gracias a una red cada vez mayor de API web abiertas que cualquiera podía consumir.
Durante este período, el fundador de Amazon, Jeff Bezos, escribió un memorando a sus empleados que llegó a conocerse como el ‘Mandato API de Bezos’. Según varias fuentes, este incluía dos requisitos estratégicos que cualquier líder de TI debería considerar cuando busca maximizar el valor de los esfuerzos de sus equipos de desarrollo. La primera es que todas las interfaces entre el software desarrollado por cualquier equipo deben realizarse a través de API. La segunda, que los equipos deben escribir API internas como si fueran a ser consumidas por personas ajenas a la organización.
Este enfoque explica en gran medida cómo Amazon pudo externalizar su infraestructura informática: primero a Merchant.com, la plataforma de ecommerce como servicio de la compañía, para que los minoristas crearan sus propias tiendas, y luego a AWS, con una oferta más amplia que ha cobrado vida propia.
Si avanzamos hasta 2023, los líderes de TI han extraído muchas más lecciones sobre el desarrollo y uso efectivo de API durante las dos últimas décadas. Gran parte de lo aprendido está catalogado por MACH Alliance, un consorcio global de casi 100 proveedores de tecnología que promueve “ecosistemas tecnológicas empresariales abiertos y mejores en su tipo”, con especial énfasis en microservicios y API. Aquí, los miembros ofrecen los siguientes tres mandamientos que deberían sustentar cualquier estrategia API. Estos principios no solo garantizan que los sistemas de software funcionen bien juntos, sino también que los equipos trabajen juntos al servicio de la estrategia general de desarrollo de software de la organización. Después de todo, e igual que ocurre con las API, cuando un grupo de personas proporciona un servicio a otros grupos, las promesas deben ser claras y los límites deben respetarse.
La forma más eficaz de maximizar su estrategia de API es adoptar lo que se conoce como un enfoque ‘API first’, en el que las prioriza como los componentes básicos de la estrategia de desarrollo de software desde cero. Las organizaciones que adoptan este enfoque se centran más en la interconexión que en la integración. Primero definen las API, incluido el servicio que realizan, las entradas que reciben y las salidas que producen, antes de escribir cualquier otro código. De esta manera, en lugar de integrar varios componentes de software para crear una aplicación monolítica, utilizan servicios en componentes que se ponen a disposición de un ecosistema a través de sus API. Las organizaciones que no utilizan un enfoque de API primero desarrollan su software antes de diseñar sus API, lo que limita su utilidad, dice Casper Rasmussen, vicepresidente senior global de tecnología de Valtech y presidente de MACH Alliance.
“En primer lugar, API consiste en diseñar interfaces que sean versátiles, en lugar de específicas para un caso de uso particular”, afirma Rasmussen. “Si ha incorporado API a su software heredado existente, no es ‘API first‘, al menos no históricamente. El software heredado conlleva suposiciones sobre qué hace, para quién y en qué caso de uso. «API first‘ es mucho más versátil, mucho más genérico. Piense, por ejemplo, en una estrategia API que asume que el consumidor será un cliente web. Comunica HTML, lo que dificulta su uso en otros entornos”.
Un enfoque basado en API permite a las organizaciones aprovechar al máximo la arquitectura de microservicios, una variante de la arquitectura orientada a servicios (SOA), en la que las aplicaciones se estructuran como colecciones de servicios débilmente acoplados. Una empresa que ha adoptado un enfoque de API primero es The Lego Group, lo cual es apropiado, dado que el concepto imita el conjunto de productos Legos, donde las interfaces estándar en los ladrillos permiten a los usuarios reconstruir un todo más grande.
«Nuestra prioridad estratégica es construir sistemas débilmente acoplados, respaldados por nuestros equipos de productos que construyen y operan API para exponer sus servicios», dice Niall Edwards, vicepresidente de marketing y tecnología de canales de The Lego Group. “Nuestra plataforma tecnológica Lego.com se ha basado íntegramente en microservicios y API desde hace varios años y ahora estamos propagando este enfoque en todas nuestras áreas tecnológicas. Ahora estamos llevando este enfoque a los sistemas empresariales más monolíticos”.
Lego Group ofrece un ejemplo perfecto de cómo el enfoque de ‘API first‘ favorece los microservicios, en lugar de funcionalidades más grandes y complejas. Las nuevas API deben realizar servicios estrechamente definidos que puedan ser utilizados por una variedad de aplicaciones. Los sistemas más antiguos se pueden actualizar con API de manera que permitan a las aplicaciones consumir servicios heredados como si fueran desarrollados recientemente.
A medida que las inversiones en tecnología heredada deben ser reemplazadas, los CIO harían bien en asegurarse de incorporar nuevos proveedores solo si ofrecen microservicios y se ajustan a los principios de ‘API first‘.
Para garantizar un acoplamiento flexible y una alta coherencia entre los componentes de software desarrollados por diferentes grupos (tanto internos como externos) es necesaria una política API común. La política debe indicar que TI realiza algunos servicios de forma centralizada, incluso cuando la mayor parte del trabajo de API se implementa de forma independiente por una variedad de equipos de desarrollo. Por ejemplo, para garantizar la coherencia, el control de acceso debe gestionarse de forma centralizada, con un único esquema de identificación y autenticación para todas las API. El formato de los datos también debería gestionarse de forma centralizada para garantizar la uniformidad. Y, por último, los acuerdos de nivel de servicio (SLA) deben ser definidos y controlados por TI. Por ejemplo, se podría decir que, para cualquier cosa que tenga que ver con el cliente, las API deberían responder en 50 milisegundos.
«Si no hay claridad sobre quién es responsable de qué, entonces es un caos y nadie sabe la fuente de la verdad«, expresa Edwards. “El modelo de datos empresariales debe indicar claramente quién es responsable de qué datos. Los usuarios de esos datos necesitan saber que pueden almacenarlos en caché y usarlos, pero nunca cambiarlos. Los cambios en los datos ocurren sólo en la fuente, y esos cambios deben ser detectables y expuestos a todos los consumidores”.
Las API debían estar respaldadas por microservicios para ser más efectivas. Los CIO deben definir las API con esta suposición y luego crear el servicio internamente o seleccionar proveedores que brinden servicios que se adhieran a este enfoque.
«Las API deben poder llamarse de forma independiente, ser apátridas e idempotentes», afirma Kelly Goetsch, directora de estrategia de Commercetools y autora de cuatro libros sobre API y microservicios. Esto significa que una aplicación puede usar una API sin tener que llamar a otra primero, y que los valores internos del servicio no se cambian de manera que produzca un resultado diferente cada vez que se llama. Por ejemplo, puede invocar una API para agregarla a un carrito varias veces y, si es idempotente, actuará de la misma manera cada vez que se invoque.
Por último, la política debe garantizar que no haya distinción entre API internas y API externas. «Una de las partes brillantes del Mandato de Bezos fue decir que las API deben externalizarse de forma predeterminada», dice Rasmussen. «Y si nos fijamos en AWS, que comenzó como un proyecto interno, lo pusieron a disposición del mundo exterior simplemente cambiando el acceso a lo que ya se estaba utilizando dentro de la empresa».
Una vez que se implementa una política de API, la clave es asegurarse de que todos los equipos la cumplan. Con tantas partes móviles, conexiones y datos en tránsito, esta es una faceta crucial que ningún líder de TI debería pasar por alto.
Dado que es probable que se necesite una gama tan amplia de servicios para cumplir su visión de API, también es esencial indexar las API que su organización está creando, así como aquellas que su organización probablemente dependa de terceros para proporcionarlas.
«Los CIO deberían desarrollar un catálogo de API y una estrategia para gestionar ese catálogo«, afirma Goetsch. “El catálogo debe definir las API e incluir todas las funciones que la empresa necesita. Luego podrás decidir si construyes o compras el software que proporciona esos servicios”.
Si bien el catálogo debe mantenerse de forma centralizada, la responsabilidad de la implementación debe dejarse en manos de equipos individuales o proveedores externos. Pero quienes desarrollan los servicios deben respetar lo que se define en el catálogo, afirma Goetsch. «Los equipos que implementan las API pueden elegir su base de datos y muchas otras cosas«, afirma. “Pero luego, si se equivocan, responsabilizarlos. Puede determinar muy rápida y fácilmente si un equipo lo está gestionando correctamente. Si las API están fallando, entonces sabes que tienes un problema”.
El catálogo central debe estar bien documentado y acompañarse de herramientas de descubrimiento que permitan a los usuarios internos y externos encontrar API en función de una descripción de sus necesidades o un conjunto de palabras clave. «El Grupo Lego ha invertido en herramientas centralizadas de descubrimiento para ayudar a los desarrolladores a encontrar las API de otros y utilizarlas para componer un producto más grande, tal como lo hace la gente con los ladrillos Lego», indica Edwards.
Al adherirse a estos tres mandamientos y prestar atención a la sabiduría adquirida a lo largo de años de experiencia, los líderes de TI pueden crear un marco que garantice un camino claro hacia cada servicio. Los consumidores pueden contar con una interfaz sólida y los productores obtienen la libertad que necesitan para crear servicios. Cada lado puede innovar a su propio ritmo.
Cookie | Duración | Descripción |
---|---|---|
__cf_bm | 1 hour | This cookie, set by Cloudflare, is used to support Cloudflare Bot Management. |
_GRECAPTCHA | 6 months | Google Recaptcha service sets this cookie to identify bots to protect the website against malicious spam attacks. |
cookielawinfo-checkbox-advertisement | 1 year | Set by the GDPR Cookie Consent plugin, this cookie records the user consent for the cookies in the "Advertisement" category. |
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
CookieLawInfoConsent | 1 year | CookieYes sets this cookie to record the default button state of the corresponding category and the status of CCPA. It works only in coordination with the primary cookie. |
csrftoken | 1 year | This cookie is associated with Django web development platform for python. Used to help protect the website against Cross-Site Request Forgery attacks |
opt_out | 1 year | This cookie is used for preventing the installation of third party advertiser or other cookies on the browser. |
PHPSESSID | 24 minutes | This cookie is native to PHP applications. The cookie stores and identifies a user's unique session ID to manage user sessions on the website. The cookie is a session cookie and will be deleted when all the browser windows are closed. |
rc::a | never | This cookie is set by the Google recaptcha service to identify bots to protect the website against malicious spam attacks. |
rc::b | session | This cookie is set by the Google recaptcha service to identify bots to protect the website against malicious spam attacks. |
rc::c | session | This cookie is set by the Google recaptcha service to identify bots to protect the website against malicious spam attacks. |
rc::f | never | This cookie is set by the Google recaptcha service to identify bots to protect the website against malicious spam attacks. |
ts | 1 year 1 month | PayPal sets this cookie to enable secure transactions through PayPal. |
usprivacy | 1 year 1 month | This is a consent cookie set by Dailymotion to store the CCPA consent string (mandatory information about an end-user being or not being a California consumer and exercising or not exercising its statutory right). |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
wordpress_test_cookie | session | WordPress sets this cookie to determine whether cookies are enabled on the users' browsers. |
Cookie | Duración | Descripción |
---|---|---|
cX_G | 1 year 1 month | Cxense sets this cookie for storing the global ID, mapping different ids together into one ID. |
v1st | 1 year 1 month | The v1st cookie is set by TripAdvisor to collect details about how visitors use the website, by displaying user reviews, awards and information received on the TripAdvisor community. |
yt-player-headers-readable | never | The yt-player-headers-readable cookie is used by YouTube to store user preferences related to video playback and interface, enhancing the user's viewing experience. |
yt-remote-cast-available | session | The yt-remote-cast-available cookie is used to store the user's preferences regarding whether casting is available on their YouTube video player. |
yt-remote-cast-installed | session | The yt-remote-cast-installed cookie is used to store the user's video player preferences using embedded YouTube video. |
yt-remote-connected-devices | never | YouTube sets this cookie to store the user's video preferences using embedded YouTube videos. |
yt-remote-device-id | never | YouTube sets this cookie to store the user's video preferences using embedded YouTube videos. |
yt-remote-fast-check-period | session | The yt-remote-fast-check-period cookie is used by YouTube to store the user's video player preferences for embedded YouTube videos. |
yt-remote-session-app | session | The yt-remote-session-app cookie is used by YouTube to store user preferences and information about the interface of the embedded YouTube video player. |
yt-remote-session-name | session | The yt-remote-session-name cookie is used by YouTube to store the user's video player preferences using embedded YouTube video. |
ytidb::LAST_RESULT_ENTRY_KEY | never | The cookie ytidb::LAST_RESULT_ENTRY_KEY is used by YouTube to store the last search result entry that was clicked by the user. This information is used to improve the user experience by providing more relevant search results in the future. |
Cookie | Duración | Descripción |
---|---|---|
_gat | 1 minute | Google Universal Analytics sets this cookie to restrain request rate and thus limit data collection on high-traffic sites. |
dmvk | session | The dmvk cookie is set by Dailymotion to record data of visitor behaviour on the website. |
Cookie | Duración | Descripción |
---|---|---|
_fbp | 3 months | Facebook sets this cookie to display advertisements when either on Facebook or on a digital platform powered by Facebook advertising after visiting the website. |
_ga | 1 year 1 month 4 days | Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors. |
_gid | 1 day | Google Analytics sets this cookie to store information on how visitors use a website while also creating an analytics report of the website's performance. Some of the collected data includes the number of visitors, their source, and the pages they visit anonymously. |
cX_P | 1 year 1 month | Cxense sets this cookie for site-specific user sessions - across sessions. |
Cookie | Duración | Descripción |
---|---|---|
guest_id | 1 year 1 month | Twitter sets this cookie to identify and track the website visitor. It registers if a user is signed in to the Twitter platform and collects information about ad preferences. |
test_cookie | 15 minutes | doubleclick.net sets this cookie to determine if the user's browser supports cookies. |
VISITOR_INFO1_LIVE | 6 months | YouTube sets this cookie to measure bandwidth, determining whether the user gets the new or old player interface. |
VISITOR_PRIVACY_METADATA | 6 months | YouTube sets this cookie to store the user's cookie consent state for the current domain. |
YSC | session | Youtube sets this cookie to track the views of embedded videos on Youtube pages. |
yt.innertube::nextId | never | YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen. |
yt.innertube::requests | never | YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen. |
Cookie | Duración | Descripción |
---|---|---|
__cflb | 1 day | This cookie is used by Cloudflare for load balancing. |
_awl | 1 year 1 month | No description available. |
_pcid | 1 year 1 month | Description is currently not available. |
_pctx | 1 year 1 month | Description is currently not available. |
gckp | 1 year | This cookie is set by the provider Cxense. This cookie is used for building user profile information across all sites in the Cxense network. |
itsec-hb-login-27e4caa2b0fb20a2dee118de04e9de77 | 1 hour | Description is currently not available. |
ntvSession | session | Description is currently not available. |