Descripción
Domine DevOps y microservicios para construir el futuro del software
La creciente demanda de aplicaciones más rápidas, escalables y resilientes ha impulsado la adopción de nuevas metodologías y arquitecturas. En este contexto, DevOps y la arquitectura de microservicios han emergido como pilares fundamentales para construir y operar sistemas de software modernos y complejos.
Este libro se presenta como una guía integral para comprender cómo la filosofía DevOps y la arquitectura de microservicios se entrelazan para crear sistemas de software robustos, escalables y flexibles. A lo largo de sus páginas, aprenderá a:
-Comprender la filosofía DevOps: descubrirá los principios de colaboración, automatización y mejora continua que forman el núcleo de esta cultura.
-Dominar los microservicios: aprenderá a definir, diferenciar y descomponer monolitos en servicios pequeños y autónomos, entendiendo las ventajas y los desafíos de esta arquitectura.
-Aplicar patrones de diseño: explorará estrategias para la comunicación síncrona y asíncrona, la gestión de datos y la seguridad en entornos distribuidos.
-Implementar tecnologías clave: se sumergirá en el uso de herramientas fundamentales como contenedores (Docker y Kubernetes), la orquestación y las prácticas de CI/CD.
-Garantizar la calidad y el rendimiento: Entenderá las prácticas de automatización, monitorización y observabilidad para asegurar la salud y la disponibilidad de sus sistemas.
-Implementar prácticas de automatización: comprenderá las prácticas de automatización esenciales en un entorno DevOps, incluyendo la infraestructura como código, la gestión de la configuración y las pruebas automatizadas.
Dirigido a desarrolladores, arquitectos, líderes de equipo y profesionales de operaciones, este libro aborda los conceptos esenciales, patrones de diseño, las tecnologías y herramientas que sustentan el desarrollo de aplicaciones modernas.
Este libro es la hoja de ruta ideal para transformar los equipos de desarrollo en cualquier organización, al permitir construir sistemas más robustos, escalables y eficientes. Adquiera ahora los conocimientos que le distinguirán en la industria y le prepararán para liderar la próxima generación de proyectos de software.
Índice
.Introducción
CAPÍTULO 1
Introducción a DevOps
1.1. Ciclo de vida DevOps
1.2. Arquitecturas DevOps
1.2.1. Principios de arquitectura de la infraestructura
1.3. SRE (Site Reliability Engineering)
1.3.1. SRE vs DevOps
1.4. Metodologías de desarrollo
1.4.1. Code First
1.4.2. API First
1.5. Otras metodologías DevOps
1.5.1. DevSecOps
1.5.2. DataOps
1.5.3. MLOps
1.5.4. AIOps
1.5.5. GitOps
CAPÍTULO 2
Arquitecturas basadas en microservicios
2.1. Introducción
2.2. Arquitectura monolítica vs arquitectura de microservicios
2.3. Características de las arquitecturas orientadas a microservicios
2.3.1. Despliegue
2.3.2. Contenedores y orquestadores
2.3.3. Monitorización
2.3.4. Alta disponibilidad
2.3.5. Autoescalado
2.4. Componentes de una arquitectura de microservicios
2.5. Arquitecturas de microservicios
2.5.1. Metodología DDD (Domain-Driven Design)
2.5.2. Comunicación entre microservicios
2.5.3. Servicios basados en HTTP y REST
2.5.4. Comunicación asíncrona basada en mensajes
2.5.5. Registro de servicios
2.5.6. Utilizando un API Gateway
2.5.7. Utilizando GraphQL
2.5.8. Utilizando gRPC
2.5.9. API REST vs GraphQL vs gRPC
2.6. Implementar una arquitectura de microservicios
2.7. Casos de uso de microservicios
CAPÍTULO 3
Patrones de diseño en microservicios
3.1. Introducción
3.2. Patrón Service Discovery
3.2.1. Client-side
3.2.2. Server-side
3.2.3. Soluciones para implementar Service Discovery
3.2.4. Service Discovery con Spring Cloud Eureka Server
3.3. Patrón DDD (Domain-Driven Design)
3.4. Command Query Responsibility Segregation (CQRS)
3.4.1. Eventos en CQRS
3.4.2. Casos de uso de CQRS
3.5. Event Sourcing para aplicaciones escalables
3.5.1. Casos de uso de Event Sourcing
3.6. Patrón Change Data Capture (CDC)
3.6.1. Kafka Streams
3.6.2. Debezium
3.7. Patrón Publish/Subscribe
3.7.1. Tópico compartido por n suscriptores
3.7.2. 1 tópico por cada suscriptor
3.7.3. n tópicos por cada suscriptor
3.7.4. n tópicos y m tópicos de forma compartida por cada suscriptor
CAPÍTULO 4
Estrategias de despliegue en microservicios
4.1. Introducción
4.2. Despliegue de microservicios en producción
4.2.1. Despliegue blue-green
4.2.2. Despliegue canary
4.2.3. Despliegue en fases (rolling deployment)
4.3. Integración continua (CI)
4.4. Despliegue continuo (CD)
4.5. Entrega continua
4.5.1. Ventajas de la entrega continua
4.5.2. Fases del pipeline de entrega continua
4.5.3. Integración continua vs entrega continua
4.6. Herramientas CI/CD
4.7. Estrategias para organizar repositorios
4.7.1. Monorepo
4.7.2. Multirepo
4.7.3. Estrategia híbrida
4.8. Versionado de código
4.8.1. GitFlow
4.8.2. Trunk Based Development
4.8.3. Git Flow vs Trunk Based Development
4.9. Infraestructura como código (IaC)
4.9.1. Ventajas de la IaC
4.9.2. Buenas prácticas para securizar la infraestructura como código
4.9.3. Tipos de infraestructura como código
4.9.4. Herramientas para IaC
4.9.5. Ansible
4.9.6. Puppet
4.9.7. Chef
4.9.8. Terraform
CAPÍTULO 5
Generadores de microservicios
5.1. Introducción
5.2. Yeoman
5.3. Jhipster
5.3.1. Componentes principales de Jhipster
5.3.2. Jhipster online
5.4. Atomist
5.5. Spring Initializer
CAPÍTULO 6
Microservicios en Java
6.1. Introducción
6.2. Spring Boot
6.2.1. Creación de proyectos con Spring Boot Suite
6.2.2. Spring Boot Actuators
6.2.3. Spring Security
6.3. Micronaut
6.3.1. Creación de microservicios con Micronaut
6.3.2. Inyección de dependencias e inversión de control
6.3.3. Descubrimiento de servicios
6.3.4. Ejemplo de aplicación con Micronaut
6.4. Quarkus
6.4.1. Creación de recursos y endpoints en Quarkus
6.4.2. Inyección de dependencias en Quarkus
6.4.3. Creando nuestro proyecto base en Quarkus
6.4.4. Desplegando una aplicación Quarkus en Kubernetes
6.5. GraalVM
6.5.1. Imágenes nativas
6.5.2. GraalVM vs Micronaut
6.6. Helidon
CAPÍTULO 7
Programación reactiva
7.1. Introducción
7.2. Manifiesto reactivo
7.3. Patrón Observer
7.4. Reactive eXtensions (RX)
7.5. Frameworks de programación reactiva
7.5.1. Ecosistema Java / JVM
7.5.2. RxJava
7.5.3. Eclipse Vert.x
CAPÍTULO 8
Tecnologías basadas en contenedores y orquestadores
8.1. Introducción
8.2. Introducción a los contenedores
8.2.1. Casos de uso y ventajas de los contenedores
8.2.2. Contenedores vs máquinas virtuales
8.3. Docker
8.3.1. Gestión de secretos en Docker
8.3.2. Podman
8.4. Orquestadores
8.5. Kubernetes
8.5.1. Arquitectura de Kubernetes
8.5.2. Componentes de Kubernetes
8.5.3. Trabajar con Kubernetes
8.5.4. Micro8ks
8.5.5. Otras soluciones para trabajar con Kubernetes en local
8.5.6. Patrones de diseño en Kubernetes
8.6. Plataformas de contenedores
8.6.1. Portainer
8.6.2. OpenShift
8.6.3. Rancher
8.7. Comunicaciones y enrutado con Traefik
8.7.1. Despliegue de Traefik
8.7.2. Traefik middlewares
CAPÍTULO 9
Service mesh
9.1. Introducción
9.2. Definición de service mesh
9.3. Arquitectura de un service mesh
9.3.1. Data plane
9.3.2. Control plane
9.3.3. Casos de uso de service mesh
9.3.4. Implementaciones de un service mesh
9.4. Istio
9.4.1. Ventajas de Istio
9.4.2. Arquitectura de Istio
9.4.3. Gestión del tráfico en Istio
9.4.4. Seguridad en Istio
9.5. Linkerd
9.5.1. Funcionamiento de Linkerd
9.5.2. Casos de uso de Linkerd
9.5.3. Linkerd vs Istio
CAPÍTULO 10
Arquitecturas serverless
10.1. Introducción
10.2. Ventajas de las arquitecturas serverless
10.3. Manifiesto Twelve-Factor App
10.4. Estrategias de despliegue en aplicaciones serverless
10.5. AWS Lambda
10.5.1. AWS API Gateway
10.5.2. Funciones lambda
10.5.3. Casos de uso en AWS Lambda
10.6. Serverless DevOps
10.6.1. Herramientas y plataformas serverless DevOps
CAPÍTULO 11
Arquitecturas orientadas a eventos
11.1. Introducción
11.2. Introducción a los brokers de mensajería
11.2.1. Sistema de mensajería punto a punto
11.2.2. Sistema de mensajería de publicación y suscripción
11.3. Protocolos de mensajería
11.3.1. Advanced Message Queuing Protocol (AMQP)
11.3.2. Message Queue Telemetry Transport (MQTT)
11.4. Apache Kafka
11.4.1. Componentes de Apache Kafka
11.4.2. Plataforma de Apache Kafka
11.4.3. Requisitos para utilizar Apache Kafka
11.4.4. Iniciando Apache Kafka con Docker
11.4.5. Implementar productor y consumidor en Python
11.4.6. Herramientas para monitorizar Apache Kafka
11.5. Apache Pulsar
11.5.1. Apache Pulsar con Python
11.5.2. Apache Pulsar vs Apache Kafka
11.6. RabbitMQ
11.6.1. Componentes de RabbitMQ
11.6.2. Arquitectura de RabbitMQ
11.6.3. Ventajas de RabbitMQ
CAPÍTULO 12
Arquitecturas big data
12.1. Introducción
12.2. Apache Spark
12.2.1. Ecosistema de Apache Spark
12.2.2. Ventajas de Apache Spark
12.2.3. Arquitectura de Apache Spark
12.3. Procesamiento de datos en tiempo real
12.4. Apache Flink
12.4.1. Arquitectura de Apache Flink
12.4.2. Control de eventos en Apache Flink
12.4.3. Tipos de ventanas de procesamiento en Apache Flink
CAPÍTULO 13
Observabilidad y monitorización de microservicios
13.1. Introducción
13.2. Observabilidad vs monitorización
13.3. Ventajas de la observabilidad
13.4. Métricas de rendimiento en aplicaciones
13.5. Herramientas DevOps para observabilidad
13.5.1. OpenTelemetry
13.6. Herramientas de monitorización
Valoraciones
No hay valoraciones aún.