Soy bastante nuevo en todo el stack de Netflix OSS y en las implementaciones en general. Como antecedentes de mi nivel actual de conocimiento en operaciones, mi papel principal es como ingeniero de aplicaciones front-end. Sin embargo, disfruto del lado operativo de las cosas, por lo que intento configurar una nueva estrategia de implementación y las herramientas para un nuevo proyecto.
Nuestras metas
- Implementaciones súper fáciles (queremos presionar un botón para actualizar la producción)
- Implementaciones automatizadas para probar entornos (usando Jenkins)
- Facilidad de mantenimiento (tenemos una aplicación para escribir, no queremos pasar nuestro tiempo jugando con problemas de producción)
- Capacidad para manejar una arquitectura orientada a servicios (muchas aplicaciones pequeñas, varios idiomas y almacenes de datos)
- Suficiente flexibilidad para garantizar que no tengamos que cambiar las estrategias en el corto plazo (ya estamos tratando de alejarnos de RightScale)
Estamos de acuerdo con un poco más de tiempo de configuración inicial si hacerlo nos ahorrará algunos dolores de cabeza en el futuro.
Entonces, en esta línea, he estado escuchando podcasts, viendo charlas de operaciones y leyendo toneladas de publicaciones de blog y, en función de nuestros objetivos y lo que he considerado como mejores prácticas de formación, hemos comenzado a elaborar un plan utilizando Asgard, enrollando nuestro paquete en un frasco y convirtiéndolo en un AMI.
Todo esto estaba planeado y nos gustan las ventajas del proceso en comparación con el uso de un servidor Chef y las instancias convergentes sobre la marcha (sentimos que esto era propenso a errores dada nuestra línea de tiempo limitada y la falta de comprensión sobre el flujo de trabajo del servidor Chef). Sin embargo, un compañero de trabajo miró un poco por su cuenta y sintió que Elastic Beanstalk satisfizo nuestras necesidades.
Lo he examinado y he creado un entorno de prueba con un archivo WAR y una base de datos RDS adjunta. Las cosas parecen funcionar y creo que podemos automatizar las implementaciones en un entorno de prueba utilizando Jenkins a través de la API de AWS. Parece bastante simple ... tal vez demasiado simple.
Lo que me pregunto es, ¿cuál es el problema? Si Elastic Beanstalk es tan simple y efectivo, ¿por qué no se habla más? Me cuesta encontrar suficientes opiniones objetivas y datos sobre las dos estrategias de implementación diferentes, así que pensé en preguntar.
¿Usas Elastic Beanstalk? Si es así, ¿por qué y qué factores conducen a esa decisión? ¿Qué te gusta y qué no te gusta?
Si no usa Elastic Beanstalk pero lo consideró, ¿qué usa y por qué no usó Elastic Beanstalk?
¿Cuáles son las ventajas y desventajas de una estrategia de implementación basada en Elastic Beanstalk para una SOA? Es decir, ¿Elastic Beanstalk funcionará bien con muchas aplicaciones pequeñas que dependen unas de otras para funcionar?
fuente
Sí veo el punto de pérdida de control, pero no necesariamente veo la apatridia obligatoria. Todo lo que eb realmente hace es implementar la automatización, que por cierto es increíble. Sí veo el punto de un gran repositorio. En general, creo que separar las funciones lógicas de la aplicación en aplicaciones de beans separadas, y luego tener entornos de "puesta en escena" y "producción" debajo, es realmente agradable. Tenemos entornos de módulos como el cargador, no hace mucho y, en teoría, agrega muchos costos, pero luego está utilizando instancias más pequeñas, solo un poco más. Ejecutamos un nginx centralizado y tuvimos que escribir una gran cantidad de identificadores de mensajes sns personalizados para notificar a ngnix los cambios en la política de escala automática. Otro gran problema de eb es la incapacidad de desactivar los equilibrios de carga, ya que usamos ngnix, ¿por qué? elb no es compatible con websocket.
fuente