16
Cultura y procesos: un enfoque a la adopción de DEVOPS EN S4N

Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

Embed Size (px)

Citation preview

Page 1: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

Cultura y procesos: un enfoque a la adopción de

DEVOPS EN S4N

Page 2: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

En los últimos años el término DevOps ha tomado

mucha fuerza en la industria tecnológica. El cambio

cultural y de trabajo que ha supuesto su aparición en

las compañías de software ha logrado incrementar la

colaboración entre los equipos de desarrollo y

operaciones, haciendo más eficientes los procesos, y

permitiendo que las organizaciones realicen entregas

rápidas y seguras.

Siendo consecuentes con esto, las compañías hoy día

deben transformar el modo como crean y entregan

software. Nuestro interés por generar el mayor valor a

las organizaciones e impactar positivamente su

entorno, nos motiva a investigar lo que es novedoso

en la industria, logrando aplicar técnicas o métodos

que hagan sentido tanto para nosotros como para el

cliente.

Lo invitamos a conocer cómo un enfoque más

holístico en el ciclo de vida de los productos de

software nos permite innovar con mayor rapidez

mediante la automatización de procesos de desarrollo

de software y la administración de la infraestructura

para hacer despliegues continuos exitosos.

Page 3: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

En los últimos años el término DevOps ha tomado

mucha fuerza en la industria tecnológica. El cambio

cultural y de trabajo que ha supuesto su aparición en

las compañías de software ha logrado incrementar la

colaboración entre los equipos de desarrollo y

operaciones, haciendo más eficientes los procesos, y

permitiendo que las organizaciones realicen entregas

rápidas y seguras.

Siendo consecuentes con esto, las compañías hoy día

deben transformar el modo como crean y entregan

software. Nuestro interés por generar el mayor valor a

las organizaciones e impactar positivamente su

entorno, nos motiva a investigar lo que es novedoso

en la industria, logrando aplicar técnicas o métodos

que hagan sentido tanto para nosotros como para el

cliente.

Lo invitamos a conocer cómo un enfoque más

holístico en el ciclo de vida de los productos de

software nos permite innovar con mayor rapidez

mediante la automatización de procesos de desarrollo

de software y la administración de la infraestructura

para hacer despliegues continuos exitosos.

Page 4: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

Aunque actualmente no existe una

definición de DevOps aceptada global-

mente, es claro que el origen del término

parte de la unión de Desarrollo (Dev) y

Operaciones (Ops).

Patrick Debois acuñó el término en 2009

cuando organizó el primer “DevOps Day”,

una conferencia que cubre temas de

desarrollo de software, infraestructura y

su unión, incluyendo temas como auto-

matización, testing y cultura organizacio-

nal. En esencia, DevOps Day es la confe-

rencia que acerca el desarrollo y las

operaciones.

La idea de dicho evento surgió después

de que la presentación “10 Deploys per

Day”, de Jhon Allspaw y Paul Hammond, le

mostrará a Patrick Debois que sus ideas

sobre “agilizar” las operaciones eran

compartidas por otros miembros de la

comunidad. [1]

ENTENDIENDO EL CONCEPTO DEVOPS

De esta forma, DevOps surgió como una

respuesta a la inconformidad que tenían

varios personajes de la industria sobre la

distancia entre los equipos de desarrollo y

operaciones, una desconexión que no les

permitía entregar el mayor valor de los

productos de software a los clientes. En

este sentido, DevOps se ve como la con-

secuencia de tener organizaciones

dinámicas cuyo aprendizaje constante

busca mayor eficiencia y eficacia.

En resumen, usando la definición de

Amazon: “DevOps es la combinación de

filosofías culturales, prácticas y herramien-

tas que incrementan la habilidad de una

organización para entregar aplicaciones y

servicios a alta velocidad”. [2]

Page 5: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

TRANSICIÓN A UNA CULTURA DEVOPS

El equipo de DevOps busca aportar

a cada equipo/proyecto el conocimiento y

las herramientas necesarias para acercar

las infraestructuras de nuestros clientes al

nivel de las Organizaciones de Alto

Rendimiento (se les denomina así a

aquellas que despliegan sus aplicaciones

más de 100 veces al día y hacen parte de

este grupo Facebook, Amazon, Netflix y

Google), esto se logra al desarrollar

procesos de despliegue automatizados

que agilicen las entregas al cliente y por

ende generen valor más rápidamente.

La actualidad tecnológica en la que

vivimos exige que los despliegues se

realicen de forma continua y segura. La

mayoría de empresas realizan un plan por

cada despliegue en cualquier ambiente,

pero esto es equivalente a decir que en

cada despliegue se realizan cambios

constantes al procedimiento general de

despliegue, lo cual puede agregar pasos

nuevos con un alto riesgo de error.

Con el fin de evitar la mayoría de errores,

creemos que los equipos deben contar

con una guía general de cómo funciona el

canal de despliegue (deployment

pipeline) que les permita cubrir cada uno

de los aspectos de los diferentes

procesos -los cuales se explican más

adelante-, pero que no requiera cambios

constantes a los procedimientos.

Así es como lo hacen las Organizaciones

de Alto Rendimiento. Estas promueven la

administración de sus servidores como

ganado y no como mascotas, logrando

comprender de tal forma este concepto

hasta el punto de permitirles a las

personas recién contratadas hacer

despliegues en producción desde el

primer día de trabajo. En contraste, la

mayoría de empresas todavía analizan una

y otra vez la situación antes de decidir

desplegar dos veces al año.

Page 6: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

Ganado vs Mascotas es una

analogía que se usa para explicar la dife-

rencia entre la forma clásica de hacer

operaciones y la denominada “infra-

estructura como código”.

La idea de esta analogía es que se debe

tratar a los servidores como ganado y no

como mascotas. Por un lado, a las masco-

tas se les da un nombre, se alimentan, se

cuidan, y si se enferman, se atienden

hasta que se mejoren. Anteriormente los

servidores se trataban como mascotas,

con mucho cuidado y recelo. En contraste,

al ganado se le da un número, todos son

iguales, y si uno de ellos se enferma, se

reemplaza. Actualmente en las Organi-

zaciones de Alto Rendimiento, la automa-

tización de la infraestructura les permite

tener nuevos servidores en minutos.

GANADO VS MASCOTAS

Este concepto se ha refinado con el

tiempo y, dependiendo del contexto, ha

sido presentado con diferentes analogías.

Martin Fowler describe un concepto simi-

lar con servidores fénix y servidores copo

de nieve [3]. Los primeros nunca se modifi-

can de forma manual, y siempre se

pueden re-crear(renacer) en su estado

original, en cambio los segundos, son

creados de forma manual, lo cual los hace

únicos y frágiles ante cambios. [4]

Lo importante en esta analogía es que el

ganado, que hace referencia a los servi-

dores, están diseñados para fallar y ser

reemplazados con facilidad. La sugeren-

cia es entonces, tratar a los servidores

como ganado y no como mascotas.

Page 7: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

En los últimos años hemos visto un florecimiento de

herramientas de software que permiten facilitar todos

los procesos que DevOps intenta mejorar. A continua-

ción, mencionamos los procesos que la unión entre

desarrollo y operaciones debe cubrir.

PROCESOS PARA UN ALTO RENDIMIENTO

Page 8: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

CANAL DE ENTREGA DE SOFTWARE (SOFTWARE

DELIVERY PIPELINE)

Más conocido como el Software

Delivery Pipeline, el Canal de Entrega de

Software se compone de todos los

procesos que agilizan la generación de

valor al cliente minimizando riesgos y

bloqueos. A continuación enumeramos

las fases de dicho canal de entrega de

software:

Integración Continua (Continuous Integration)

La integración continua se originó bajo la

metodología de programación extrema

(eXtreme Programming) y es una práctica

de desarrollo de software que requiere la

integración periódica de los cambios en el

código hacia un repositorio compartido.

La idea central de esta práctica es

reconocer que el proceso de integración

es complicado y doloroso. Al reconocer

esto se busca una estrategia para reducir

la complejidad; dicha estrategia implica

hacer integración tan seguido como sea

posible. Aunque suene contradictorio, esta

práctica permite hacer integraciones

pequeñas y sencillas de forma constante,

reduciendo tiempos y aumentando la

velocidad. Para tener un proceso de

integración continua se han encontrado

varios pasos útiles:

1) Tener un repositorio de código en el cual

se tenga centralizado el desarrollo. Cada

desarrollador trabaja en pequeñas tareas y

cuando cada tarea se termina se incluyen

los cambios a la línea central del

repositorio.

2) Iniciar un proceso de compilación y

testing de forma automatizada, que

prueben que los cambios y adiciones

hechos estén correctos y no hayan

alterado ninguna parte del software. Para

que esto funcione correctamente es

esencial que haya un buen conjunto de

pruebas en las cuales se pueda confiar.

Pro

ceso

s p

ara

un

alt

o r

en

dim

ien

to

Page 9: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

3) Ejecutar varias veces al día este

proceso, prestando atención a los errores

reportados, que se tornan en prioritarios

hasta que desaparecen. Con esto se logra

tener siempre en la línea principal, la

última versión funcional del estado del

proyecto, versión que se actualiza varias

veces por día.

Entrega Continua (Continuous Delivery)

La entrega continua representa un paso

más allá de la integración continua. De

acuerdo a Martin Fowler, la entrega

continua consiste en construir el software

de tal manera que siempre esté listo para

pasar a producción, teniendo en cuenta

las siguientes características:

+ Es desplegable a lo largo de todo su

ciclo de vida.

+ Los equipos han priorizado esta carac-

Despliegue Continuo (Continuous Deployment)

Despliegue continuo es el paso siguiente a

entrega continua. Puede que este no

aplique a todas las empresas, pero la

mayoría deberían apuntar a llegar a este

punto. La gran diferencia entre uno y otro

está en quien toma la última decisión

respecto a poner en producción los

cambios; cuando se llega a tener

despliegue continuo esta decisión es

automatizada.

terística de desplegable en cualquier

momento sobre la construcción de

nuevas funcionalidades.

+ Puede dar una retroalimentación rápida

y automatizada.

+ Puede ser desplegado en cualquier

versión y ambiente (desarrollo, pruebas,

producción), bajo demanda.

Source ControlCommit Changes

Approve Deploy

Automatic Deploy

Automated

BuildRun Buiild And

Unite Test

Continuos Integration

Continuos Delivery

Continuos Deployment

StagingDeploy to test environment Run integration tests, load

tests, and other tests

ProductionDeploy to production

environment

Automated

V1.1

Pro

ceso

s p

ara

un

alt

o r

en

dim

ien

to

Page 10: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

Pruebas Continuas (Continuous Testing)

Las pruebas continuas son una de las

bases importantes para la automatización.

Esto debido a que con las pruebas se

puede verificar de manera fiable y cons-

tante el estado del producto. Para tener

confianza en los diferentes procesos del

canal de entrega de software es impor-

tante poder probar que cada paso haya

tenido un resultado positivo.

Estas pruebas deben estar de acuerdo a lo

que los usuarios consideran una apli-

cación confiable y útil, por lo tanto, se

debe desarrollar con cuidado; teniendo en

cuenta que pasar las pruebas debe signifi-

car que se confía en el producto.

Aprovisionamiento de Máquinas (Machine Provisioning)

Para tratar las máquinas como ganado y

no como mascotas se debe contar con un

procedimiento automatizado de creación

de la infraestructura. La idea del aprovi-

sionamiento de máquinas es que espe-

cifique las características de hardware que

necesita la aplicación: cantidad y tipo de

CPUs, cantidad de RAM y de Disco Duro, y

especificaciones de interfaces de red.

Todos estos requerimientos deben estar

versionados en scripts que reflejen la evo-

lución de la infraestructura.

Administración de la Configuración (Configuration Management)

La administración de la configuración se

puede considerar como una parte del

proceso de aprovisionamiento de soft-

ware (suele realizarse con las mismas

herramientas), pero esta se encarga de

asegurarse que el software esté configu-

rado/personalizado de la manera espera-

da. En otras palabras, no es solo asegu-

rarse que todas las librerías necesarias

estén disponibles, sino que los archivos de

configuración de los diferentes servicios

estén con el contenido adecuado y que

este contenido se genere de forma

automatizada. En la administración de la

configuración se colocan los valores de las

variables que se requieren para ejecutar el

Aprovisionamiento de Software (Software Provisioning)

El aprovisionamiento de software se

refiere al conjunto de programas y librerías

base que las aplicaciones van a utilizar

para funcionar. Usualmente involucra la

instalación de programas genéricos como

alguna implementación de la librería de c

(musl o glibc) o programas que facilitan el

despliegue como Puppet, Chef, Ansible,

SSH, Docker, entre otros.

software y conectarlo, esto incluye: ips de

clusters, puertos a usar, tiempos de

espera, elección de mecanismos de log,

urls de servicios remotos y claves de

bases de datos entre muchos otros.

Pro

ceso

s p

ara

un

alt

o r

en

dim

ien

to

Page 11: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

Monitoreo y Alertas (Monitoring and Alerts)

Las alarmas son herramientas muy útiles

para tener un proceso automatizado y

ayudar a incrementar la estabilidad del

producto. Con estas se puede tener con-

trol del estado de la infraestructura e

incluso tener reacciones automatizadas a

ciertos eventos. Por ejemplo, un incre-Administración de la Configuración (Configuration Management)

La administración de la configuración se

puede considerar como una parte del

proceso de aprovisionamiento de soft-

ware (suele realizarse con las mismas

herramientas), pero esta se encarga de

asegurarse que el software esté configu-

rado/personalizado de la manera espera-

da. En otras palabras, no es solo asegu-

rarse que todas las librerías necesarias

estén disponibles, sino que los archivos de

configuración de los diferentes servicios

estén con el contenido adecuado y que

este contenido se genere de forma

automatizada. En la administración de la

configuración se colocan los valores de las

variables que se requieren para ejecutar el

software y conectarlo, esto incluye: ips de

clusters, puertos a usar, tiempos de

espera, elección de mecanismos de log,

urls de servicios remotos y claves de

bases de datos entre muchos otros.

mento en el tráfico de una página se

puede responder con desplegar y conec-

tar una nueva instancia para que esta

ayude a distribuir el procesamiento de

dicho tráfico.

Para tener un sistema automatizado a este

nivel se requiere:

1) Tener los datos adecuados para cono-

cer el estado del sistema, de los servi-

dores, de la base de datos y en general de

cada elemento que se pueda medir.

2) Asociar alarmas que reporten valores

anormales.

3) Ejecutar de manera automatizada las

acciones correctivas cuando se detecte

una alarma.

Pro

ceso

s p

ara

un

alt

o r

en

dim

ien

to

Page 12: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

DEVOPS APLICADO EN S4N

Page 13: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

SECTOR AERONÁUTICO

La nueva página de Copa Airlines

fue desarrollada en S4N usando

tecnologías modernas y servicios de

Amazon Web Services (AWS) que brindan

varios beneficios como escalabilidad, mi-

nimización de puntos únicos de fallo, faci-

lidad al desplegar y monitorización del

estado de la aplicación.

Para su aprovisionamiento se usan máqui-

nas virtuales de AWS con imágenes

preparadas de antemano y que brindan

una capa de software base sobre la cual

se despliega la aplicación. Utilizando la

tecnología de contenedores se aumenta

la velocidad de despliegue y se facilita la

implementación de Servidores Fénix.

Cada vez que una nueva máquina se crea,

contiene la lógica para la administración

de su configuración, realizando todas las

operaciones para descargar, instalar, con-

figurar y desplegar las aplicaciones.

Por otro lado, se usan varios elementos

que permiten disminuir la probabilidad de

fallas y aumentar la velocidad de respues-

ta, como redes de distribución de conteni-

do (CDN), balanceadores de carga y

grupos auto escalables.

Finalmente se monitorea el estado de

cada componente por medio de métricas

y alarmas que permiten estar pendientes

cuando se identifican eventos anormales.

Dev

Op

s A

plic

ado

en

S4N

Page 14: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

SECTOR FINANCIERO

En ACH se implementó un modelo

de despliegue on-premise para todos sus

componentes. El sistema se compone de

microservicios desarrollados por S4N y de

tecnologías distribuidas como Apache

Cassandra, Apache Zookeeper, Apache

Kafka y Apache Spark. Además de esto, el

sistema se comunica con otros sistemas

externos como bases de datos y sistemas

de archivos.

Dada la gran cantidad de herramientas y

su compleja configuración en cluster, fue

necesario establecer una estrategia que

permitiera facilitar los despliegues. Esta se

basó en dos conceptos: infraestructura

inmutable y automatización. Usando con-

tenedores se logra encapsular el software

base para la instalación de estos

programas en Servidores Fénix. Emplean-

do una herramienta de automatización de

la configuración se logra facilitar el

despliegue, disminuyendo su compleji-

dad y la probabilidad de fallos humanos, y

decidiendo en tiempo de despliegue las

diferentes configuraciones de cada nodo

de cada cluster.

Gracias a estas estrategias se logró esta-

blecer un procedimiento que permite la

instalación de todos estos componentes,

por medio de herramientas de contene-

rización y de automatización de la confi-

guración con un solo comando.

Dev

Op

s A

plic

ado

en

S4N

Page 15: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

CONCLUSIÓN

DevOps se trata de agregar valor,

por tanto, cualquier herramienta o proceso

debe estar dirigida hacia esto.

+ Aprovechar los beneficios que otorgan

cada uno de los procesos del Canal de

Entrega de Software, tales como la re-

ducción de riesgos, la disminución de

procesos manuales, una mejor visibilidad y

control del estado del proyecto, y la

capacidad que brinda para facilitar el

lanzamiento del producto en el mercado,

es sin duda una buena oportunidad para

ayudar a su organización a alcanzar los

objetivos deseados.

+ Tenga la mentalidad de una Organi-

zación de Alto Rendimiento, trate a los

servidores como ganado y no como mas-

cotas, adopte los procesos de integración

continua, entrega continua y despliegue

continuo para maximizar el valor y la com-

petitividad en su organización. Contácte-

nos para ayudarle en la adopción de

DevOps y exploremos juntos la forma

adecuada para involucrar esta filosofía en

la cultura de su organización.

+ Recuerde que cultivar una cultura que

una al equipo de desarrollo con opera-

ciones no es acerca de seguir unos pasos,

sino de buscar agilidad en el proceso de

crear valor, desde el desarrollo, hasta el

despliegue y su operación, teniendo siem-

pre presente que este camino será único

para cada producto y empresa.

Bibliografía[1]Kim, G., Humble, J., Debois, P., Allspaw, J., & Willis, J. (2016). The DevOps handbook.[2] https://aws.amazon.com/devops/what-is-devops/[3]https://martinfowler.com/bliki/PhoenixServer.html[4] https://martinfowler.com/bliki/SnowflakeServer.html

Page 16: Cultura y procesos: un enfoque a la adopción de DEVOPS …s4n.co/docs/DEVOPS.pdf · Amazon: “DevOps es la combinación de filosofías culturales, prácticas y herramien- ... procesos

Contacto

Si desea tener más información, por favor

contacte a: Juan Manuel Cortés, Head of

Business Development [email protected]

http://s4n.co/

Copyright © 2017 S4N Todos los

derechos reservados

CONOZCA LA NUEVA FORMA DE CONSTRUIR

PRODUCTOS DE SOFTWARE