¿Cuáles son algunos buenos libros sobre arquitectura de servidor web?

La arquitectura está pasando por un cambio desde hace un tiempo, sin un aparente ganador.

Mi experiencia es principalmente en backend y solución de problemas empresariales, por lo que los cambios más interesantes que veo en Ops son el movimiento de máquinas virtuales a contenedores y microservicios,
y el movimiento del costoso hardware empresarial a arquitecturas definidas por software y hardware básico.

Esto cambia no solo la forma en que implementa las aplicaciones, sino también su paradigma de desarrollo, cómo trata la protección de datos y qué herramientas usa.

La respuesta a esas preguntas, y sus apuestas sobre qué paradigma ganará, definirán qué libros desea estudiar.

Lamentablemente, todavía tengo que encontrar (leer: trabajar, implementar y probar) libros sobre las arquitecturas más nuevas, para recomendarlos, pero las arquitecturas web clásicas están bien definidas y documentadas desde hace un tiempo:

Sobre la arquitectura en general:

http://www.amazon.com/The-Art-Sc…

http://www.amazon.com/gp/aw/d/03…

Sobre el rendimiento y la resolución de problemas con más detalle:

http://www.amazon.com/gp/aw/d/01…

Para los paradigmas más nuevos (con menos certeza):

http://www.amazon.com/Building-M…

– Cualquier cosa en OpenStack (todavía me estoy mirando)

En el campo más nuevo también estoy investigando Mesos + Docker, Myriad específicamente y, la arquitectura lambda, en general.
Si bien esto no es centrado en la web sino en la ciencia de datos, puede apostar a tener ambos uno al lado del otro en un futuro próximo (probablemente en el mismo grupo)

Para ver algunos desafíos que las personas deben enfrentar mientras dicha infraestructura crece, recomiendo las presentaciones del CERN y Google:

Sumérgete profundamente en la infraestructura del CERN (openstack) –

Lecciones aprendidas en google (estadísticas interesantes de fallas de hardware):

Qué lenguajes de programación aprender para cada uno, parece una pregunta mucho más difícil y menos segura, que con suerte alguien más involucrado en el desarrollo abordará.

Bueno, depende de lo que entiendas por arquitectura de servidor web. La mayoría de las cosas que las personas hacen hoy están caídas, todavía locas. Personalmente, veo a cada persona llamada dev-ops como una declaración de fracaso total del departamento de desarrollo. Es un testimonio de que algo salió mal.

Esto es parcialmente cierto para la mayoría de las cosas de Docker que ocurren junto con los micro servicios. Totalmente loco. A menudo no tiene sentido y desacopla la operación del software y el desarrollo cuando el objetivo final del desarrollo del software es la operación automática sin interrupciones.

Básicamente, la arquitectura del servidor web puede verse como una arquitectura empresarial de un tipo especial. Aquí puede leer una lectura obligada para cada desarrollador de software: Fowler – Patrones de arquitectura de aplicaciones empresariales. Esto le da una comprensión real de lo que debería ser la arquitectura.

Ahora piense por qué un dev-ops es un desarrollador desperdiciado (además de algunos de los llamados dev-ops apenas califican como programadores pero solos como desarrolladores). He visto equipos donde necesitan la misma cantidad de operaciones de desarrollo para mantener las cosas en funcionamiento que la cantidad de personas responsables de esta situación.

Si tienes la oportunidad, únete a este habbit. Cada semana revisa el canal de las operaciones de desarrollo, revisa de qué están hablando o pregunta directamente a uno. Pregunta por los problemas que resuelven. Casi siempre puede encontrar una solución automática a lo que hicieron a mano o simplemente puede diseñar todo el aspecto del software.

Una cosa que pone a los desarrolladores en estado de shock y asombro es básicamente un pequeño proceso de inicio que inicia automáticamente toda la infraestructura requerida para la aplicación. Esto y, junto con la simple regla general, que una falla (potencial) desencadena instantáneamente un reinicio (en lugar de tratar de manejar un problema de forma inteligente) corta como el 90% de las cosas que un desarrollador tiene que lidiar a diario .

El resto del 10% se escapa utilizando un tablero de mensajes / canal para que todo el sistema se comunique (resolviendo el problema de membresía y reporte de errores de una manera legible para los humanos).