Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

¿Por qué escribimos este libro?

A principios de 2020 asistimos a O'Reilly Software Architecture en Nueva York, donde Jim y Matt impartieron un taller sobre APIs y una presentación sobre pasarelas API. Jim y Daniel se conocen de la Comunidad Java de Londres y, como en muchos eventos de arquitectura, nos reunimos para hablar de nuestras ideas y conocimientos en torno a las arquitecturas API. Mientras hablábamos en la pista del pasillo, varios delegados de la conferencia se acercaron a nosotros y charlaron sobre sus experiencias con las API. La gente nos pedía nuestra opinión y orientación en su viaje hacia las API. Fue en ese momento cuando pensamos que escribir un libro sobre el tema de las API ayudaría a compartir nuestras conversaciones de las conferencias con otros arquitectos.

¿Por qué deberías leer este libro?

Este libro se ha diseñado para ofrecer una visión completa del diseño, el funcionamiento y la evolución de una arquitectura API. Hemos compartido nuestra experiencia y consejos tanto a través de nuestros escritos como de un caso práctico adjunto que imita un sistema de conferencias de gestión de eventos de la vida real que permite a los asistentes ver y reservar sesiones de presentación. El caso práctico se desarrolla a lo largo de todo el libro, con el objetivo de que explores cómo los conceptos abstractos se traducen a veces en aplicaciones prácticas. Si quieres una visión general de alto nivel de la evolución del caso práctico, puedes encontrarla en el Capítulo 10.

También creemos en permitirte tomar tus propias decisiones. Para apoyar esto, lo haremos:

  • Ser claros cuando tengamos una recomendación u orientación firme.

  • Destaca las áreas de precaución y los problemas que puedas encontrar.

  • Proporcionar una Guía para el Registro de Decisiones sobre Arquitectura (ADR)1 para ayudar a tomar la mejor decisión posible dadas las circunstancias de tu arquitectura y orientar sobre lo que hay que tener en cuenta (porque a veces la respuesta es "depende").

  • Destaca las referencias y los artículos útiles donde puedas encontrarcontenidos más profundos.

El libro no es sólo un libro de tecnología nueva. Pensamos que cubrir las arquitecturas existentes con un enfoque evolutivo hacia arquitecturas de API más adecuadas te proporcionaría el mayor beneficio. También intentamos equilibrar esto con la mirada puesta en las nuevas tecnologías y desarrollos en el ámbito de la arquitectura de API.

A quién va dirigido este libro

Aunque teníamos un personaje inicial en mente al crear este libro, durante el proceso de redacción y revisión surgieron tres personajes clave: el desarrollador, un arquitecto accidental y el arquitecto de soluciones o empresarial. Hemos esbozado estos personajes en las siguientes secciones, con el objetivo no sólo de que te identifiques con al menos uno de ellos, sino también para que puedas mirar cada capítulo a través de las diferentes lentes que estos personajes te proporcionan.

Desarrollador

Lo más probable es que lleves varios años dedicándote profesionalmente a la programación y conozcas bien los retos, patrones y buenas prácticas habituales en el desarrollo de software. Cada vez te das más cuenta de que la marcha de la industria del software hacia la creación de arquitecturas orientadas a servicios (SOA) y la adopción de servicios en la nube implica que la creación y el funcionamiento de API se está convirtiendo rápidamente en una habilidad fundamental. Te interesa aprender más sobre el diseño de API eficaces y su comprobación. Quieres explorar las distintas opciones de implementación (por ejemplo, comunicación síncrona frente a asíncrona) y tecnologías, y aprender a hacer las preguntas adecuadas y a evaluar qué enfoque es el mejor para un contexto determinado.

Arquitecto accidental

Lo más probable es que lleves muchos años desarrollando software y que a menudo hayas actuado como jefe de equipo o arquitecto de software residente (aunque no tengas los títulos oficiales). Comprendes conceptos arquitectónicos básicos, como el diseño para una alta cohesión y un acoplamiento débil, y los aplicas a todos los aspectos del desarrollo de software, incluidos el diseño, las pruebas y los sistemas operativos.

Te das cuenta de que tu función se centra cada vez más en combinar sistemas para satisfacer las necesidades de los clientes. Esto podría incluir aplicaciones construidas internamente y ofertas de terceros tipo SaaS. Las API desempeñan un papel importante a la hora de integrar con éxito tus sistemas con sistemas externos. Quieres aprender más sobre las tecnologías de apoyo (por ejemplo, la pasarela API, la malla de servicios, etc.) y también entender cómo operar y asegurar los sistemas basados en API.

Arquitecto de Soluciones/Empresa

Llevas varios años diseñando y construyendo sistemas de software empresarial y lo más probable es que la palabra arquitecto figure en tu puesto de trabajo o en la descripción de tu función. Eres responsable de la visión global de la entrega de software y normalmente trabajas en el contexto de una gran organización o de una serie de grandes organizaciones interconectadas.

Reconoces los cambios que la última iteración de estilos arquitectónicos basados en servicios está teniendo en el diseño, la integración y la gobernanza del software, y ves que las API son fundamentales para el éxito de la estrategia de software de tu organización. Estás deseando aprender más sobre los patrones evolutivos y comprender cómo influirá en ello la elección del diseño y la implementación de las API. También quieres centrarte en las "ilidades" interfuncionales -usabilidad, mantenibilidad, escalabilidad y disponibilidad- y entender cómo construir sistemas basados en API que presenten tales propiedades, además de proporcionar seguridad.

Lo que aprenderás

Después de leer este libro lo entenderás:

  • Los fundamentos de las API REST y cómo construir, versionar y probar API de la mejor manera posible

  • Los patrones arquitectónicos implicados en la construcción de una plataforma API

  • Las diferencias en la gestión del tráfico API en la entrada y en la comunicación de servicio a servicio, y cómo aplicar patrones y tecnologías como las pasarelas API y las mallas de servicio

  • Modelado de amenazas y consideraciones de seguridad clave para las API, como autenticación, autorización y encriptación

  • Cómo hacer evolucionar los sistemas existentes hacia APIs y diferentes implementaciones de destino, como la nube.

Y serás capaz de hacerlo:

  • Diseñar, construir y probar sistemas basados en API

  • Ayudar a implementar e impulsar el programa API de una organización desde una perspectiva arquitectónica

  • Implementación, liberación y configuración de componentes clave de una plataforma API

  • Implementación de pasarelas y mallas de servicio basadas en casos prácticos

  • Identificar las vulnerabilidades de la arquitectura de la API y aplicar medidas de mitigación de la seguridad

  • Contribuir a las tendencias emergentes de las API y las comunidades asociadas

Lo que este libro no es

Somos conscientes de que las API abarcan un vasto espacio de mercado y queremos dejar claro lo que este libro no cubrirá. Eso no significa que creamos que estos temas no sean importantes; sin embargo, si intentáramos abarcarlo todo no podríamos compartir nuestros conocimientos contigo de forma eficaz.

Cubriremos patrones de aplicación para la migración y modernización que incluirán el aprovechamiento de las plataformas en la nube, pero el libro no se centra totalmente en las tecnologías en la nube. Muchos de vosotros tendréis arquitecturas híbridas o incluso tendréis todos vuestros sistemas alojados en centros de datos. Queremos asegurarnos de que cubrimos los factores de diseño y operativos de las arquitecturas API que admiten ambos enfoques.

El libro no está vinculado a un lenguaje específico, sino que utilizará algunos ejemplos ligeros para demostrar enfoques para construir/diseñar API y su correspondiente infraestructura. El libro se centrará más en el enfoque, y los ejemplos de código estarán disponibles en el repositorio GitHub adjunto.

El libro no favorece un estilo de arquitectura sobre otro, sin embargo discutiremos situaciones en las que los enfoques arquitectónicos pueden causar limitaciones a la oferta de API presentada.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://github.com/masteringapi.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo"Mastering API Architecture " de James Gough, Daniel Bryant y Matthew Auburn (O'Reilly). Copyright 2023 James Gough Ltd, Big Picture Tech Ltd, y Matthew Auburn Ltd, 978-1-492-09063-2".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/Mastering-API-Architecture.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media.

Síguenos en Twitter: https://twitter.com/oreillymedia.

Míranos en YouTube: https://www.youtube.com/oreillymedia.

Agradecimientos

Como ocurre con casi todos los libros técnicos, puede que sólo aparezcan tres nombres como autores en la portada de este libro, pero la realidad es que han contribuido muchas personas, bien directamente en forma de comentarios mientras se escribía el libro, bien indirectamente con sus enseñanzas y orientación a lo largo de los años.

Aunque no podemos enumerar a todos los que nos han ayudado durante este viaje, nos gustaría dar las gracias explícitamente a las personas que han sacado tiempo de sus apretadas agendas para proporcionarnos amplios debates, comentarios y apoyo.

Nuestros revisores técnicos: Sam Newman, Dov Katz, Sarah Wells, Antoine Cailliau, Stefania Chaplin, Matt McLarty y Neal Ford.

Por detalles generales, ánimos, consejos y presentaciones: Charles Humble, Richard Li, Simon Brown, Nick Ebbitt, Jason Morgan, Nic Jackson, Cliff Tiltman, Elspeth Minty, George Ball, Benjamin Evans y Martijn Verberg.

El Equipo O'Reilly: Virginia Wilson, Melissa Duffield y Nicole Tache.

James Gough

Me gustaría dar las gracias a mi increíble familia: Megan, Emily y Anna. Escribir no habría sido posible sin su ayuda y apoyo. También me gustaría dar las gracias a mis padres, Heather y Paul, por animarme a aprender y por suapoyo constante.

Me gustaría dar las gracias a mis coautores Daniel y Matt; escribir un libro es un reto y, como la arquitectura, nunca es perfecto. Ha sido un viaje divertido y todos hemos aprendido mucho unos de otros y de nuestros increíbles revisores. Por último, me gustaría dar las gracias a Jon Daplyn, Ed Safo, David Halliwell y Dov Katz por brindarme apoyo, oportunidades y ánimos a lo largo de mi carrera.

Daniel Bryant

Me gustaría dar las gracias a toda mi familia por su amor y apoyo, tanto durante el proceso de autoría como a lo largo de mi carrera. También me gustaría dar las gracias a Jim y Matt por haber sido grandes compañeros en este viaje de escritura. Empezamos este libro a principios de 2020, justo cuando estalló la pandemia. Nuestras llamadas semanales de los miércoles por la mañana no sólo fueron útiles para colaborar, sino también una gran fuente de diversión y apoyo mientras nuestros mundos cambiaban rápidamente. Por último, me gustaría dar las gracias a todos los miembros de la Comunidad Java de Londres (LJC), a los equipos de InfoQ/QCon y a todos los de Ambassador Labs. Estas tres comunidades me han proporcionado acceso a mentores, orientación y tantas oportunidades. Espero poder devolverles todo esto algún día.

Matthew Auburn

Me gustaría dar las gracias a mi increíble esposa Hannah; sin su apoyo no habría podido escribir este libro. Gracias a mis dos padres; me habéis demostrado que todo es posible y nunca habéis dejado de creer en mí. Este libro ha sido una experiencia tan increíble de llevar a cabo, y Jim y Dan, ambos habéis sido unos mentores excelentes. Ambos me habéis enseñado mucho y me habéis ayudado a escribir el mejor material posible. Un agradecimiento adicional a Jim: me introdujo en el mundo de la oratoria y me ha ayudado más que nadie en mi carrera. Por último, y lo más importante, quiero dar las gracias a mi hijo Joshi: eres una alegría absoluta.

1 Obtendrás más información sobre las ADR y su importancia para tomar y documentar decisiones arquitectónicas en la Introducción.

Get Dominar la arquitectura API now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.