Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arte y Ciencia de un despliegue coordinado

Tuenti
November 22, 2014

Arte y Ciencia de un despliegue coordinado

En Tuenti hemos pasado de ser una red social a una telco 2.0 y esto cambia radicalmente la aproximación sobre el mantenimiento de nuestros sistemas. Donde antes centenas de servidores se disputaban enormes cargas de trabajo, ahora un número mucho menor debe lidiar con aplicaciones de VoIp, envío y recepción de SMS, pagos, recargas y un sin fin de trabajos que nada tienen que ver con conceptos como la "coherencia eventual". Describiremos como hemos diseñado un sistema de despliegue capaz de mantener nuestras aplicaciones en constante funcionamiento y evolución, de forma totalmente segura pero a la vez manteniendo la filosofía del auto-servicio. Este es una cuento sobre tomcat, jboss, kamailio y freeswitch y de como puppet, zookeeper, nexus y mcollective los coordinan, despliegan y configuran.

Tuenti

November 22, 2014
Tweet

More Decks by Tuenti

Other Decks in Technology

Transcript

  1. Conceptos básicos Artefacto: An artifact is one of many kinds

    of tangible by-products produced during the development of software.[1] [1] http://en.wikipedia.org/wiki/Artifact_(software_development)
  2. Conceptos básicos Nodo/Host: A network host is a computer or

    other device connected to a computer network. A network host may offer information resources, services, and applications to users or other nodes on the network.[2] [2] http://en.wikipedia.org/wiki/Host_(network)
  3. Conceptos básicos Granja/Cluster: A server farm or server cluster is

    a collection of computer servers usually maintained by an enterprise to accomplish server needs far beyond the capability of one machine.[3] [3] http://en.wikipedia. org/wiki/Server_farm
  4. Conceptos básicos Despliegue: Software deployment is all of the activities

    that make a software system available for use. The general deployment process consists of several interrelated activities with possible transitions between them.[4] [ 4] http://en.wikipedia.org/wiki/Software_deployment
  5. Anatomía de un despliegue Java • El origen de los

    artefactos. • Interrupción del servicio. • Alta disponibilidad y balanceo de carga.
  6. Receta simple para un despliegue 1. Deshabilitar el nodo en

    el balanceador. 2. Esperar a que el nodo deje de servir peticiones. 3. Matar el contenedor. 4. Desplegar el artefacto. 5. Habilitar el nodo en el balanceador.
  7. Puppet & Puppi • Conjunto de scripts creados dinámicamente por

    puppet (bash) • Los módulos como Tomcat o Jboss tienen efecto directo sobre esta configuración. • Proporciona comandos como ◦ puppi deploy ◦ puppi rollback ◦ puppi check
  8. Mcollective • Ejecución de comandos arbitrarios. • Grano fino de

    autorización. • Gestionable por puppet integrado con puppetdb.
  9. Receta mejorada para un despliegue 1. Deshabilitar el nodo en

    el balanceador. 2. Esperar a que el nodo deje de servir peticiones. 3. Matar el contenedor. 4. Desplegar el artefacto. 5. Habilitar el nodo en el balanceador. 6. Sí el nodo no comienza a servir peticiones -> INTERRUMPIR PROCESO 7. El nodo comienza a servir peticiones. -> SELECCIONAR SIGUIENTE NODO. GOTO 1.
  10. Versionado Premisas: 1. Las versiones debe estar almacenadas fuera de

    los nodos. 2. Debe ser un sistema redundante. 3. Debe permitir una jerarquía de versiones
  11. Nueva aproximación Los nodos ya pueden, de forma “independiente”: 1.

    Obtener los artefactos 2. Reiniciar y preparar lo servicios locales 3. Comprobar su estado interno y externo.