Como ya sabrás, Apiumhub organiza el Global Software Architecture Summit el 10 de octubre, que tendrá lugar en Barcelona. Arquitectos líderes de todo el mundo hablarán sobre hábitos de trabajo, mejores prácticas y definición de arquitectura de software para alinearse y compartir “buenas” y “probadas” prácticas que son esenciales en la arquitectura de software.

Además, será un momento perfecto para enumerar los problemas más dolorosos que se encuentran relacionados con las malas decisiones en la arquitectura de software, así como las posibles soluciones. La idea es llegar a reglas y pautas comunes, mirando la imagen general de los temas cubiertos. Pero antes de asistir a este poderoso evento, te recomendamos que leas estos fascinantes libros escritos por los oradores de GSAS. Son libros para arquitectos de software, escritos por arquitectos de software líderes que creemos que te ayudarán a prepararte para las discusiones y conocer mejor a los oradores.

 

15 libros para arquitectos de software que te recomendamos leer antes de asistir al Global Software Architecture Summit

 

  1. Essential Software Architecture” por Ian Gorton

 

Los títulos de trabajo como “Arquitecto técnico” y “Arquitecto jefe” en la actualidad abundan en la industria del software, sin embargo, muchas personas sospechan que la “arquitectura” es uno de los términos demasiado utilizados y poco conocidos en el desarrollo profesional de software. Ian Gorton intenta resolver este dilema. Describe de manera concisa los elementos esenciales del conocimiento y las habilidades clave que se requieren para ser un arquitecto de software. Las explicaciones abarcan lo esencial del pensamiento arquitectónico, las prácticas y las tecnologías de apoyo. Abarcan desde una comprensión general de la estructura y los atributos de calidad a través de problemas técnicos como componentes de middleware y arquitecturas orientadas a servicios, hasta tecnologías recientes como arquitectura basada en modelos, líneas de productos de software, diseño orientado a aspectos y la Web semántica, que probablemente influirán en el futuro, sistemas de software… Todos los enfoques están ilustrados por un ejemplo real.

 

  1. Just Enough Software Architecture: A Risk-Driven Approach” por George Fairbanks

 

Este es una guía práctica para desarrolladores de software, y diferente a otros libros de arquitectura de software. Enseña risk-driven architecting. No hay necesidad de diseños meticulosos cuando los riesgos son pequeños, ni excusas para diseños descuidados cuando los riesgos amenazan su éxito. Este libro describe una manera de hacer suficiente buena de hacer arquitectura. Evita el proceso de tajo del mismo tamaño para todos, con consejos sobre cómo ajustar su esfuerzo de diseño en función de los riesgos que enfrenta. Democratiza la arquitectura. Este libro busca hacer que la arquitectura sea relevante para todos los desarrolladores de software. Los desarrolladores deben entender cómo usar las restricciones como guías para asegurar los resultados deseados y cómo los cambios aparentemente pequeños pueden afectar las propiedades de un sistema. Este libro muestra cómo construir modelos y analizar arquitecturas para que puedas hacer concesiones de diseño de principios. Describe las técnicas que los diseñadores de software utilizan para razonar sobre problemas de tamaño mediano a grande y señala dónde puedes aprender técnicas especializadas con más detalle. Proporciona consejos prácticos. El enfoque en este libro abarca el comportamiento de desglose / pop-up al describir modelos que tienen varios niveles de abstracción, desde la arquitectura hasta el diseño de la estructura de datos.

 

  1. 97 Things Every Software Architect Should Know: Collective Wisdom from the Experts” por Richard Monson-Haefel ( editor ) & Mark Richards 

 

Es un libro técnico verdaderamente único, donde los líderes de la arquitectura de software, en la actualidad presentan principios valiosos sobre temas clave de desarrollo que van más allá de la tecnología. Más de cuatro docenas de arquitectos, incluidos Neal Ford, Michael Nygard, Mark Richards y otros, ofrecen consejos para comunicarse con los interesados (Stakeholders), eliminar la complejidad, capacitar a los desarrolladores y muchas otras lecciones prácticas que han aprendido de años de experiencia. 

 

  1. Software Architecture in Practice” por Len Bass, Paul Clements, Rick Kazman

 

El galardonado y altamente influyente libro de arquitectura de software se ha revisado sustancialmente para reflejar los últimos desarrollos en este campo. En un entorno real, el libro presenta los conceptos y las mejores prácticas de la arquitectura del software: cómo se estructura un sistema de software y cómo deben interactuar los elementos de ese sistema. A diferencia de los detalles de implementación, algoritmo y representación de datos, una arquitectura es la clave para lograr la calidad del sistema, es un activo reutilizable que se puede aplicar a los sistemas subsiguientes y es crucial para la estrategia comercial de una organización de software.

 

  1. DevOps: A Software Architect’s Perspective” por Len Bass, Ingo Weber, Liming Zhu 

 

DevOps promete acelerar el lanzamiento de nuevas funciones de software y mejorar el monitoreo de los sistemas en producción, pero a menudo se ignoran sus implicaciones cruciales para los arquitectos y arquitectos de software. En DevOps: la perspectiva de un arquitecto de software, tres arquitectos principales abordan estos problemas de manera directa. Los autores revisan las decisiones que deben tomar los arquitectos de software para lograr los objetivos de DevOps y aclaran cómo es probable que otros participantes de DevOps afecten el trabajo del arquitecto. También proporcionan el contexto organizativo, técnico y operacional necesario para implementar DevOps de manera más eficiente, y revisan el impacto de DevOps en cada fase de desarrollo. Los autores abordan las inquietudes transversales que vinculan múltiples funciones y ofrecen información práctica sobre el cumplimiento, el rendimiento, la confiabilidad, la repetibilidad y la seguridad. Esta guía muestra las ideas de los autores en acción con tres estudios de casos reales: la replicación del centro de datos para la continuidad del negocio, la gestión de un canal de implementación continua y la migración a una arquitectura de microservicio.

 

  1. Deployment and Operations for Software Engineers” por Len Bass and John Klein 

 

Las prácticas de ingeniería de software requieren el conocimiento del entorno en el que se ejecutará una aplicación. En el mundo moderno, esto significa conocimiento de virtualización, contenedores, redes, la nube y técnicas de seguridad para Internet. Un desarrollador también debe conocer los microservicios, la administración de la configuración, el canal de implementación, el monitoreo y la postproducción, la recuperación de desastres y cómo desarrollar aplicaciones seguras. Estos temas, y más, están cubiertos en este libro. El libro dearquitectura de software, incluye ejercicios y preguntas de discusión para facilitar el aprendizaje en clase o en grupo.

 

  1. The Software Craftsman: Professionalism, Pragmatism, Pride (Robert C. Martin Series)” por Sandro Mancuso

 

 A pesar de las herramientas y metodologías avanzadas para la arquitectura de software, los proyectos de software continúan fallando ya que muchas organizaciones aún ven el desarrollo de software como una línea de producción más. Demasiados desarrolladores se sienten así también, y se comportan en consecuencia. En The Software Craftsman: Profesionalismo, Pragmatismo, Orgullo, Sandro Mancuso ofrece un camino mejor y más satisfactorio. Habla de desarrollar software con orgullo y profesionalidad; hacerlo con excelencia; y construir una carrera con autonomía, dominio y propósito.

 

  1. Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives” por Nick Rozanski, Eóin Woods 

 

La arquitectura de sistemas de software es una guía orientada a profesionales para diseñar e implementar arquitecturas efectivas para sistemas de información. Es tanto una introducción a la arquitectura de software como un manual invaluable de las mejores prácticas bien establecidas.

Con este libro, aprenderá cómo diseñar y comunicar una arquitectura que refleje y equilibre las diferentes necesidades de sus partes interesadas, centrándose en los aspectos arquitectónicos significativos del diseño, incluidas las áreas que se pasan por alto con frecuencia, como el rendimiento, la capacidad de recuperación y la ubicación.

Además utiliza escenarios y patrones para impulsar la creación y validación de su arquitectura, documenta su arquitectura como un conjunto de vistas relacionadas.

 

  1. Working Effectively with Legacy Code” por Michael Feathers 

 

En este libro, Michael Feathers ofrece estrategias de principio a fin para trabajar de manera más eficaz con grandes bases de código heredadas no probadas. Este libro se basa en el material que Michael creó para sus reconocidos seminarios de Object Mentor: técnicas que Michael ha utilizado como mentor para ayudar a cientos de desarrolladores, gerentes técnicos y evaluadores a poner sus sistemas heredados bajo control.

Este libro también incluye un catálogo de veinticuatro técnicas de ruptura de dependencias que lo ayudan a trabajar con elementos del programa de manera aislada y a realizar cambios más seguros.

 

  1. Brutal Refactoring: More Working Effectively with Legacy Code” por Michael C. Feathers 

 

En Brutal Refactoring, Michael Feathers comienza con las bases de código “tal como son”, no como “pretendemos que sean”, y muestra cómo remodelarlas de manera agresiva para hacerlas más fáciles de mantener. La refactorización brutal muestra los pasos siguientes más allá de todos los libros de refactorización anteriores, incluido el altamente elogiado trabajo de Feathers con el código heredado. Feathers comparte nuevas ideas que reflejan todo lo que ha aprendido en los once años desde ese libro, y ofrece los primeros consejos prácticos detallados sobre los matices únicos de la refactorización en todo el sistema. La refactorización brutal demuestra las agresivas técnicas de refactorización de Feathers a través de una serie de ejemplos de casos excepcionalmente realistas, que presentan “recetas” tácticas y estrategias de alto nivel para superar una amplia gama de desafíos de códigos heredados.

 

  1. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series)” por Jez Humble, David Farley

 

Este nuevo libro innovador de arquitectura de software establece los principios y las prácticas técnicas que permiten la entrega rápida e incremental de alta calidad y nuevas funcionalidades valiosas para los usuarios. A través de la automatización del proceso de compilación, implementación y prueba, y la mejora de la colaboración entre desarrolladores, evaluadores y operaciones, los equipos de entrega pueden hacer que se realicen cambios en cuestión de horas, a veces incluso minutos, sin importar el tamaño de un proyecto o la complejidad de su código base.

Los autores de libros acerca de arquitectura de software presentan los fundamentos de un proceso de entrega rápidos, confiables y de bajo riesgo e introducen el “canal de implementación”, un proceso automatizado para gestionar todos los cambios, desde el registro hasta la liberación. También discuten el “ecosistema” necesario para admitir la entrega continua, desde la gestión de la infraestructura, los datos y la configuración hasta la gobernabilidad. Introducen técnicas de vanguardia, incluida la gestión automatizada de la infraestructura, la migración de datos, y el uso de la virtualización.

 

  1. Testing Java Microservices” por Alex Soto Bueno, Jason Porter, Andy Gumbrecht

 

Con las pruebas de unidades de software tradicionales, nunca hay garantía de que una aplicación realmente funcione correctamente en el entorno de producción. Cuando agregas microservicios, las pruebas se vuelven aún más difíciles. Testing Java Microservices enseña a los lectores cómo escribir pruebas como unidad, componente, integración, contenedor, contrato, caos y más. En el camino, también cubre tecnologías como el ecosistema Arquillian, Wiremock, Mockito, AssertJ, Pact o Gatling. Finalmente, el libro de arquitectura de software demuestra cómo todo encaja en la tubería de entrega continua.

 

  1. The DevOps 2.5 Toolkit: Monitoring, Logging, and Auto-Scaling Kubernetes: Making Resilient, Self-Adaptive, And Autonomous Kubernetes Clusters” por Viktor Farcic 

 

El autor explora algunas de las habilidades y los conocimientos necesarios para operar los grupos de Kubernetes. En este libro, explorará el monitoreo, las alertas, el registro, la autoescalado y otros temas destinados a hacer que el grupo sea resistente, autosuficiente y autoadaptativo.

 

  1. Java Test-Driven Development” por Viktor Farcic, Alex Garcia

 

Este libro es para desarrolladores de Java experimentados que desean implementar métodos más efectivos de programación de sistemas y aplicaciones y que desean explorar las herramientas y los marcos de TDD más populares y ser más competentes en la creación de aplicaciones. Al leer este libro, aprenderás cómo crear aplicaciones con un mejor diseño de código, menos errores y una mayor cobertura de prueba, lo que le permitirá llegar al mercado más rápido, y también verás cómo implementar métodos de programación basados ​​en pruebas en los flujos de trabajo de desarrollo. En este libro, encontrará herramientas, marcos y el entorno que necesitas, y te sumergirás en ejercicios prácticos con el objetivo de dominar una práctica, herramienta o marco a la vez. Aprenderás sobre el procedimiento Red-Green-Refactor, cómo escribir pruebas unitarias y cómo usarlas como documentación ejecutable. Con este libro, también descubrirás cómo diseñar código simple y fácil de mantener, trabajar con simulacros, utilizar el desarrollo basado en el comportamiento, refactorizar el código antiguo y lanzar una característica a medio terminar para la producción con alternadores de funciones. Terminarás este libro con una comprensión profunda de la metodología de desarrollo basada en pruebas y con la confianza para aplicarlo a la programación de aplicaciones con Java.

 

  1. DevOps Paradox: The truth about DevOps by the people on the front line (English Edition)” por Viktor Farcic

 

En DevOps Paradox, los principales consultores de DevOps, los líderes de la industria y los fundadores revelan sus principales enfoques de todos los aspectos de la implementación y operación de DevOps. Viktor Farcic recurre a expertos de toda la industria para discutir cómo presentar DevOps a organizaciones caóticas, alinear incentivos entre equipos y utilizar las últimas herramientas y técnicas. Cada experto ofrece sus propias opiniones sobre qué es DevOps y cómo hacer que funcione.

 

  1. Diseño Ágil con TDD” por Carlos Blé Jurado

 

Carlos Blé es el autor del primer libro sobre TDD en español, donde habla sobre el desarrollo de Test Driven como una técnica de desarrollo de software enmarcada dentro de la metodología de Programación eXtreme que tiene la virtud de minimizar el número de defectos en el código y maximizar su calidad.