Prefacio

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

Microservicios es un enfoque de los sistemas distribuidos que promueve el uso de servicios de grano fino que pueden modificarse, implementarse y liberarse de forma independiente. Los microservicios funcionan increíblemente bien en organizaciones que avanzan hacia sistemas con un acoplamiento más laxo, con equipos autónomos que proporcionan funcionalidad de cara al usuario. Más allá de esto, los microservicios nos proporcionan un gran número de opciones para construir sistemas, dándonos mucha flexibilidad para garantizar que nuestro sistema pueda cambiar para satisfacer las necesidades de los usuarios.

Sin embargo, los microservicios no están exentos de desventajas significativas. Como sistema distribuido, conllevan una gran complejidad, gran parte de la cual puede ser nueva incluso para los desarrolladores experimentados.

Las experiencias de personas de todo el mundo, junto con la aparición de nuevas tecnologías, están teniendo un profundo efecto en cómo se utilizan los microservicios. Este libro reúne estas ideas, junto con ejemplos concretos del mundo real, para ayudarte a comprender si los microservicios son adecuados para ti.

Quién debería leer este libro

El ámbito de de Construir Microservicios es amplio, como amplias son también las implicaciones de las arquitecturas de microservicios. Como tal, este libro debería interesar a las personas interesadas en aspectos de diseño, desarrollo, implementación, pruebas y mantenimiento de sistemas. Los que ya os hayáis embarcado en el viaje hacia arquitecturas de grano más fino, ya sea para una aplicación nueva o como parte de la descomposición de un sistema existente más monolítico, encontraréis muchos consejos prácticos que os ayudarán. Este libro también te ayudará a ti que quieres saber de qué va todo este alboroto, para que puedas determinar si los microservicios son adecuados para ti.

Por qué escribí este libro

Por un lado, escribí este libro porque quería asegurarme de que la información de la primera edición seguía siendo actual, precisa y útil. Escribí la primera edición porque había ideas realmente interesantes que quería compartir. Tuve la suerte de encontrarme en un lugar en el que disponía de tiempo y apoyo para escribir la primera edición, y de poder hacerlo desde un punto de vista bastante imparcial porque no trabajaba para un gran proveedor de tecnología. No estaba vendiendo una solución, y esperaba no estar vendiendo microservicios tampoco; simplemente encontré las ideas fascinantes, y me encantó desentrañar el concepto de microservicios y encontrar formas de compartirlo más ampliamente.

En realidad, escribí una segunda edición por dos razones principales. En primer lugar, sentí que esta vez podía hacer un trabajo mejor. He aprendido más y espero ser un poco mejor escritora. Pero también escribí esta segunda edición porque desempeñé un pequeño papel en ayudar a que estas ideas llegaran a la corriente dominante, y como tal tengo el deber de asegurarme de que se presentan de forma sensata y equilibrada. Los microservicios se han convertido, para muchos, en la opción arquitectónica por defecto. Esto es algo que creo que es difícil de justificar, y quería tener la oportunidad de compartir por qué.

Este libro no es pro microservicios, ni anti microservicios. Sólo quiero asegurarme de que he explorado adecuadamente el contexto en el que estas ideas funcionan bien y he compartido los problemas que pueden causar.

¿Qué ha cambiado desde la primera edición?

Escribí la primera edición de Building Microservices en aproximadamente un año, a principios de 2014, y el libro salió a la venta en febrero de 2015. Esto fue al principio de la historia de los microservicios, al menos en lo que se refiere al conocimiento del término por parte de la industria en general. Desde entonces, los microservicios se han generalizado de una forma que yo no podría haber predicho. Con ese crecimiento ha llegado un conjunto mucho más amplio de experiencias a las que recurrir, y más tecnología que explorar.

A medida que trabajaba con más equipos a raíz de la primera edición, empecé a refinar mi pensamiento en torno a algunas de las ideas asociadas a los microservicios. En algunos casos, esto significó que ideas que sólo estaban en la periferia de mi pensamiento, como la ocultación de información, empezaron a quedar más claras como conceptos fundacionales que debían destacarse mejor. En otras áreas, la nueva tecnología presentaba tanto nuevas soluciones como nuevos problemas para nuestros sistemas. Ver a tanta gente acudir en masa a Kubernetes con la esperanza de que resolviera todos sus problemas con las arquitecturas de microservicios me hizo reflexionar.

Además, había escrito la primera edición de Building Microservices para proporcionar no sólo una explicación de los microservicios, sino también una amplia visión general de cómo este enfoque arquitectónico cambia aspectos del desarrollo de software. Así que, al profundizar en aspectos relacionados con la seguridad y la resiliencia, me encontré con que quería volver atrás y ampliar esos temas que son cada vez más importantes para el desarrollo de software moderno.

Así, en esta segunda edición, dedico más tiempo a compartir ejemplos explícitos para explicar mejor las ideas. Cada capítulo ha sido reexaminado, y cada frase revisada. No queda mucho de la primera edición en cuanto a prosa concreta, pero las ideas siguen estando aquí. He intentado ser más claro en mis opiniones, sin dejar de reconocer que a menudo hay múltiples formas de resolver un problema. Esto ha supuesto ampliar el debate sobre la comunicación entre procesos, que ahora se divide en tres capítulos. También dedico más tiempo a analizar las implicaciones de tecnologías como los contenedores, Kubernetes y serverless; como resultado, ahora hay capítulos separados sobre construcción e implementación.

Mi esperanza era crear un libro más o menos del mismo tamaño que la primera edición, encontrando al mismo tiempo la forma de incluir más ideas. Como puedes ver, no he logrado mi objetivo: ¡esta edición es más grande! Pero creo que he conseguido ser más clara en la forma de articular las ideas.

Navegar por este libro

Este libro de está organizado principalmente por temas. He estructurado y escrito el libro como si fueras a leerlo de principio a fin, pero, por supuesto, puede que quieras saltar a los temas específicos que más te interesen. Si decides sumergirte de lleno en un capítulo concreto, puede que el Glosario del final del libro te resulte útil para explicar términos nuevos o desconocidos. En cuanto a la terminología, utilizo microservicio y servicio indistintamente a lo largo del libro; puedes suponer que ambos términos se refieren a lo mismo a menos que indique explícitamente lo contrario. También resumo algunos de los consejos clave del libro en la Bibliografía, por si quieres ir directamente al final, pero recuerda que si lo haces te perderás muchos detalles.

El cuerpo principal del libro se divide en tres partes: Fundamentos, Aplicación y Personas. Veamos qué abarca cada parte.

Parte I, "Fundación"

En esta parte, detallo algunas de las ideas centrales que subyacen a los microservicios.

Capítulo 1, "¿Qué son los microservicios?"

Ésta es una introducción general a los microservicios en la que trato brevemente una serie de temas que ampliaré más adelante en el libro.

Capítulo 2, "Cómo modelar microservicios"

Este capítulo examina la importancia de conceptos como la ocultación de información, el acoplamiento, la cohesión y el diseño impulsado por el dominio para ayudar a encontrar los límites adecuados para tus microservicios.

Capítulo 3, "Dividir el monolito"

Este capítulo proporciona algunas orientaciones sobre cómo tomar una aplicación monolítica existente y dividirla en microservicios.

Capítulo 4, "Estilos de comunicación de microservicios"

El último capítulo de esta parte ofrece un debate sobre los distintos tipos de comunicación entre microservicios, incluidas las llamadas asíncronas frente a las síncronas y los estilos de colaboración solicitud-respuesta y basada en eventos.

Parte II, "Aplicación"

Pasando de los conceptos de alto nivel a los detalles de implementación, en esta parte examinamos las técnicas y tecnologías que pueden ayudarte a sacar el máximo partido de los microservicios.

Capítulo 5, "Implementar la comunicación entre microservicios"

En este capítulo profundizamos en las tecnologías específicas utilizadas para implementar la comunicación entre microservicios.

Capítulo 6, "Flujo de trabajo"

Este capítulo ofrece una comparación de las sagas y las transacciones distribuidas y analiza su utilidad en el modelado de procesos empresariales que implican múltiplesmicroservicios.

Capítulo 7, "Construir"

Este capítulo explica la asignación de un microservicio a repositorios y compilaciones.

Capítulo 8, "Implementación".

En este capítulo hablaremos de las múltiples opciones para la implementación de un microservicio, incluidos los contenedores, Kubernetes y FaaS.

Capítulo 9, "Pruebas"

Aquí hablo de los retos de probar microservicios, incluidos los problemas causados por las pruebas de extremo a extremo, y de cómo pueden ayudar los contratos orientados al consumidor y las pruebas en producción.

Capítulo 10, "Del monitoreo a la observabilidad"

Este capítulo abarca el cambio de centrarse en las actividades de monitoreo estático a pensar más ampliamente en cómo mejorar la observabilidad de las arquitecturas de microservicios, junto con algunas recomendaciones específicas sobre herramientas.

Capítulo 11, "Seguridad"

Las arquitecturas de microservicios pueden aumentar la superficie de ataque, pero también nos dan más oportunidades de defendernos en profundidad. En este capítulo exploramos este equilibrio.

Capítulo 12, "Resiliencia"

Este capítulo ofrece una visión más amplia de lo que es la resiliencia y del papel que pueden desempeñar los microservicios en la mejora de la resiliencia de tus aplicaciones.

Capítulo 13, "Escalado"

En este capítulo esbozo los cuatro ejes del escalado y muestro cómo pueden utilizarse en combinación para escalar una arquitectura de microservicios.

Parte III, "Personas"

Las ideas y la tecnología no significan nada sin las personas y la organización que las respalden.

Capítulo 14, "Interfaces de usuario"

Desde el abandono de los equipos dedicados al frontend hasta el uso de BFF y GraphQL, este capítulo explora cómo los microservicios y las interfaces de usuario pueden trabajar juntos.

Capítulo 15, "Estructuras organizativas"

Este penúltimo capítulo se centra en cómo pueden trabajar los equipos de alineación y habilitación de flujos en el contexto de las arquitecturas de microservicios.

Capítulo 16, "El arquitecto evolutivo"

Las arquitecturas de microservicios no son estáticas, por lo que tu visión de la arquitectura de sistemas puede tener que cambiar, un tema que este capítulo explora en profundidad.

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.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

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 http://oreilly.com.

Cómo contactar con nosotros

Por favor, 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/Building_Microservices2.

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

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

Encuéntranos en Facebook: http://facebook.com/oreilly

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

Míranos en YouTube: http://youtube.com/oreillymedia

Agradecimientos

No deja de sorprenderme el apoyo que recibo de mi familia, especialmente el de mi esposa, Lindy Stephens, que aguanta tantas cosas con una bondad asombrosa. Decir que este libro no existiría sin ella es quedarse corto, aunque no siempre me crea cuando se lo digo. Esto es por ella. También es para mi padre, Jack, Josie, Kane y todo el clan Gilmanco Staynes.

Gran parte de este libro se escribió durante una pandemia mundial, que mientras escribo estos agradecimientos sigue en curso. Puede que no signifique mucho, pero quiero hacer extensivo mi agradecimiento al NHS aquí en el Reino Unido, y a todas las personas de todo el mundo que nos mantienen a salvo trabajando en vacunas, tratando a los enfermos, repartiendo nuestra comida y ayudando de mil maneras más que yo no entendería. Esto también va por todos vosotros.

Esta segunda edición no existiría sin la primera, así que me gustaría reiterar mi agradecimiento a todos los que me ayudaron durante el difícil proceso de escribir mi primer libro, incluidos los revisores técnicos Ben Christensen, Martin Fowler y Venkat Subramaniam; James Lewis por nuestras muchas conversaciones esclarecedoras; el equipo de O'Reilly formado por Brian MacDonald, Rachel Monaghan, Kristen Brown y Betsy Waliszewski; y los excelentes comentarios de los lectores Anand Krishnaswamy, Kent McNeil, Charles Haynes, Chris Ford, Aidy Lewis, Will Thames, Jon Eaves, Rolf Russell, Badrinath Janakiraman, Daniel Bryant, Ian Robinson, Jim Webber, Stewart Gleadow, Evan Bottcher, Eric Sword y Olivia Leonard. Y gracias a Mike Loukides, supongo, ¡por meterme en este lío en primer lugar!

Para la segunda edición, Martin Fowler volvió una vez más como revisor técnico y se le unieron Daniel Bryant y Sarah Wells, que fueron generosos con su tiempo y sus comentarios. También me gustaría dar las gracias a Nicky Wrightson y Alexander von Zitzerwitz por ayudarme a llevar la revisión técnica más allá de la línea de meta. Por parte de O'Reilly, todo el proceso fue supervisado por mi impresionante editora, Nicole Taché, sin la cual sin duda me habría vuelto loco; Melissa Duffield, que parece gestionar mi carga de trabajo mejor que yo; Deb Baker, Arthur Johnson y el resto del equipo de producción (siento no saber todos vuestros nombres, ¡pero gracias!); y Mary Treseler, por dirigir el barco en algunos momentos difíciles.

Además, la segunda edición se ha beneficiado enormemente de la ayuda y las ideas de varias personas, entre ellas (sin ningún orden en particular) Dave Coombes y el equipo de Tyro, Dave Halsey y el equipo de Money Supermarket, Tom Kerkhove, Erik Doernenburg, Graham Tackley, Kent Beck, Kevlin Henney, Laura Bell, Adrian Mouat, Sarah Taraporewalla, Uwe Friedrichse, Liz Fong-Jones, Kane Stephens, Gilmanco Staynes, Adam Tornhill, Venkat Subramaniam, Susanne Kaiser, Jan Schaumann, Grady Booch, Pini Reznik, Nicole Forsgren, Jez Humble, Gene Kim, Manuel Pais, Matthew Skelton y los South Sydney Rabbitohs. Por último, me gustaría dar las gracias a los increíbles lectores de la versión de acceso anticipado del libro, que me proporcionaroncomentarios inestimables: Felipe de Morais, Mark Gardner, David Lauzon, Assam Zafar, Michael Bleterman, Nicola Musatti, Eleonora Lester, Felipe de Morais, Nathan DiMauro, Daniel Lemke, Soner Eker, Ripple Shah, Joel Lim y Himanshu Pant. Y por último, hola a Jason Isaacs.

Escribí la mayor parte de este libro a lo largo de todo 2020 y en la primera mitad de 2021. Utilicé Visual Studio Code en macOS para la mayor parte de la escritura, aunque en raras ocasiones también utilicé Working Copy en iOS. Utilicé OmniGraffle para crear todos los diagramas del libro. AsciiDoc se utilizó para dar formato al libro y, en general, fue excelente, con la cadena de herramientas Atlas de O'Reilly haciendo la magia de hacer que un libro aparezca por el otro lado.

Get Construyendo Microservicios, 2ª Edición 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.