Publíquelo: Diseño e implementación de software para producción
En este libro, aprenderá a diseñar, diseñar y construir software (especialmente sistemas distribuidos) para la complejidad del mundo real. Te enfrentarás a un grupo de usuarios ilógicos que hacen cosas locas e impredecibles. Una vez que su software sea lanzado, será vulnerable a sus ataques. Debe resistir el intenso estrés de un ataque DDoS desde una tostadora de IoT no segura. Debe examinar cuidadosamente el software que no pasa las pruebas y tratar de asegurarse de que sea coherente con el mundo real.
Arquitectos y desarrolladores de sitios web, servicios web y sistemas distribuidos. Porque estos sistemas deben estar disponibles o la empresa perderá dinero. Estos sistemas pueden ser sistemas de comercio electrónico que generan ingresos vendiendo productos directamente, o pueden ser sistemas corporativos internos que los empleados utilizan para hacer su trabajo. Si alguien alguna vez ha tenido que irse a casa porque su software dejó de funcionar, este libro es para usted.
Este libro consta de 4 partes, cada una con un caso de estudio. Parte 1: Estabilidad, explica cómo mantener su sistema funcionando correctamente. Aunque la confiabilidad está garantizada mediante la redundancia, la disponibilidad en un sistema distribuido se parece más a "dos ochos" que a los codiciados "cinco nueves". La estabilidad es un requisito previo necesario para cualquier otro problema. Si su sistema falla todos los días, a nadie le importarán otras funciones. En este entorno, prevalecerán las soluciones y el pensamiento cortoplacistas. No hay futuro viable sin estabilidad, por lo que la primera parte comenzará con cómo construir una base estable.
Después de la estabilización, lo siguiente a considerar es la continuidad de las operaciones. En la Parte 2: Diseño para producción, aprenderá lo que significa ejecutar en un entorno de producción. Aprenderá las complejidades de los entornos de producción en los que existe el software actual, incluidos los detalles de virtualización, contenedorización, equilibrio de carga y descubrimiento de servicios. Esta sección explica buenos modelos de control, transparencia y disponibilidad en centros de datos físicos y entornos de nube.
En la Parte 3: Lanzamiento del sistema, considerará la implementación del software. Existen muchas herramientas para lograrlo, pero esta es la parte del problema más fácil de resolver. Es difícil modificar y lanzar un sistema con frecuencia sin dañar a los usuarios. Analizaremos la implementación y el diseño de una implementación sin tiempo de inactividad, y luego pasaremos al control de versiones en servicios completamente diferentes: ¡un problema complicado!
Parte 4: Resolución de problemas del sistema Como parte de los sistemas de información, estudiarás el ciclo de vida de un sistema. Si la versión 1.0 fue el nacimiento del sistema, entonces es necesario considerar cómo ha crecido y evolucionado desde entonces. En esta parte, aprenderá cómo construir sistemas escalables. Esto incluye la evolución arquitectónica y el intercambio de "conocimientos" entre sistemas. Finalmente, aprenderá cómo construir sistemas antifrágiles a través de la disciplina emergente de la ingeniería del caos, que utiliza aleatoriedad y pruebas de estrés para mejorar los sistemas.