Desarrollo práctico de software en Golang
Desarrollo práctico de software en Golang
Resumen:
Introducción
El libro «Hands-On Software Engineering with Golang» (2020, 554 págs.) de Aquiles Anagnostopoulos no es una introducción más a la sintaxis de Go, sino una guía práctica profunda para construir sistemas de software complejos, escalables y mantenibles en el lenguaje Go. A diferencia de muchos libros que se centran en los fundamentos, esta obra está dedicada precisamente a las prácticas de ingeniería: arquitectura, diseño, pruebas, despliegue y monitoreo. Es ideal para quienes ya conocen Go y desean pasar al nivel de desarrollador senior o arquitecto.
De qué trata el libro
El libro se estructura en torno al desarrollo de una aplicación real: un sistema para análisis de enlaces (link graph). A lo largo de los capítulos, el autor aplica de manera consistente los principios del diseño orientado al dominio (DDD), construye una arquitectura de microservicios, utiliza gRPC para la comunicación entre servicios, implementa contenerización (Docker, Kubernetes) y configura pipelines de CI/CD. Cada capítulo es una etapa completa que se puede aplicar inmediatamente en la práctica.
Temas principales:
- Patrones arquitectónicos: DDD, CQRS, Event Sourcing, arquitectura hexagonal.
- Microservicios: diseño, comunicación (gRPC, RabbitMQ), orquestación.
- Pruebas: unitarias, de integración, de extremo a extremo, pruebas basadas en propiedades.
- CI/CD: configuración de pipelines, pruebas automáticas y despliegue.
- Monitoreo y observabilidad: registro de eventos, métricas, trazado (OpenTelemetry).
- Rendimiento: perfilado, benchmarking, optimización.
Para quién es este libro
El libro está dirigido a desarrolladores de Go con experiencia (mínimo 1-2 años) que deseen profundizar en el diseño de sistemas complejos. También será útil para arquitectos, líderes de equipo y todos aquellos que pasen de escribir utilidades simples a construir aplicaciones de nivel de producción. Para los principiantes en Go, el libro puede resultar complejo, ya que el autor no explica la sintaxis básica y asume conocimiento del lenguaje.
Qué aprenderá el lector
- Cómo aplicar DDD para identificar bounded context y agregados.
- Cómo construir microservicios utilizando gRPC y colas asíncronas.
- Cómo implementar CQRS y Event Sourcing en Go.
- Cómo escribir pruebas de diferentes niveles y usar pruebas basadas en propiedades.
- Cómo contenerizar aplicaciones y desplegarlas en Kubernetes.
- Cómo configurar CI/CD con GitHub Actions o GitLab CI.
- Cómo perfilar y optimizar el rendimiento de aplicaciones Go.
- Cómo implementar observabilidad: registro de eventos, métricas (Prometheus) y trazado (Jaeger).
Fortalezas
La principal ventaja del libro es su enfoque práctico. Cada concepto se respalda inmediatamente con código que se puede ejecutar y modificar. El autor no solo repite la teoría, sino que muestra cómo tomar decisiones arquitectónicas y los compromisos asociados. El código en GitHub está acompañado de comentarios detallados. Otra ventaja es su actualidad: el libro se publicó en 2020 y la mayoría de los enfoques (gRPC, Kubernetes, OpenTelemetry) siguen siendo estándar en la industria.
Mención especial merecen los capítulos sobre pruebas y CI/CD: ofrecen recetas listas para usar que se pueden implementar de inmediato en cualquier proyecto. El libro enseña no solo a escribir código, sino a pensar en el sistema en su totalidad: desde los requisitos hasta la operación.
A quién se recomienda
Recomiendo este libro a todos los que quieran pasar de escribir «scripts» en Go a crear sistemas industriales. Será útil tanto para desarrolladores individuales como para equipos que implementan Go en producción. Si ya ha leído «The Go Programming Language» o «Concurrency in Go» y desea avanzar más, este libro será un excelente siguiente paso.
En el sitio PythonLib, el libro está disponible para su consulta.