miércoles, 17 de octubre de 2018

Cómo montar un entorno devops en la nube

¡Hola Legion!  Bienvenido a otro post. Hoy vamos a hablar de cómo montar un entorno DevOps en la nube y qué servicios utilizar.

Si usted no sabe las ventajas de la nube o en duda sobre qué proveedor a contratar, ver nuestro post sobre  qué proveedor de computación en la nube para elegir . Vea cómo Cloud Legion le puede ayudar con los servicios DevOps  https://cloudlegion.com.ar/servicios/hybridit.html .

¿Qué es DevOps?
La palabra DevOps es una unión de otras dos: desarrollo (Dev) y operación (Ops) de software. Con eso, no tenemos una metodología o un marco de trabajo. Pero sí una cultura organizacional donde el desarrollo para una mejor ejecución del software es el foco de todo trabajo.

Primero, todos los involucrados deben estar comprometidos y sentirse responsables por el producto como un todo, y no partes de él. Las características como el código colectivo, la responsabilidad, la búsqueda de la mejora, la optimización, los artefactos secos y la objetividad son fundamentales.

DevOps no se califica por la adopción de una herramienta o implementación de una buena práctica. Sin embargo, son algunas de esas adopciones que hacen que el proceso pueda fluir y entregar los objetivos esperados.

Vamos a ver a continuación lo que es importante para esa cultura en la organización.

Buenas practicas
Ver algunas de las buenas prácticas a adoptar cuando se tiene una cultura DevOps:


  • Desarrollo ágil - ágil con el desarrollo de software iterativo e incremental, la entrega de una mayor funcionalidad en menos tiempo;
  • Las pruebas - pruebas de unidad, integración y sistema de identificar los problemas a tiempo y reducir los problemas de errores en la ejecución;
  • Infraestructura como Código - guiones de infraestructura con todos los requisitos necesarios para la aplicación, la normalización y la normalización del medio ambiente;
  • Integración / suministro continuo - repositorios de código para integrar los incrementos desarrollados, pasando el resultado de una serie de validaciones y la disponibilidad del código para ser desplegado en cualquier entorno;
  • entornos aislados - entornos de desarrollo, pruebas, aprobación y producción completamente aislado, evitando código no autorizado operan en áreas restringidas;
  • La automatización - todo es repetitivo debe ser automatizado, ahorrando tiempo y liberando recursos que pueden ser asignados a otras áreas;
  • Gestión de incidentes - Entradas para aprender de los errores siempre, con una mejora en los productos entregados a sus usuarios;
  • Monitoreo y métricas - técnicas de recolección y análisis de datos en tiempo real, proporcionando una manera de reaccionar mucho más rápido que el comportamiento no deseado.

La siguiente tabla, el Indmax , muestra una forma interesante de cómo a integrar algunas de estas mejores prácticas



Medio ambiente devops en la nube
Como se dijo anteriormente, DevOps no se restringe al uso de herramientas. Por el contrario, muchas prácticas en el día a día deben ser adoptadas y la cultura adaptada para que se alcance un ambiente DevOps. Pero eso no quiere decir que las herramientas no ayuden en ese proceso.

Para ello, vamos a ver algunas partes del ciclo de vida del software que pueden ser ayudadas por el uso de herramientas en la nube.

Repositorio de código
Actualmente existen varias plataformas proveedor de repositorios de código. GitHub , Bitbucket , gitlab y otros son algunas de las principales plataformas de Git. Pero, ¿por qué Git?

Porque el Git posee una estructura que recibe muy bien los procesos de integración - CI - y entrega - CD - continua. Todas estas plataformas son fáciles de integrar en procesos CI y CD. Además, el modelo de arquitectura descentralizada del versión de código por el Git es algo poderoso, ligero y flexible para equipos de todos los tamaños.

Los mayores proveedores de la nube tienen sus propios servicios para el código de versiones de Git: AWS CodeCommit  o nube Fuente Repo .

Integración continua
El proceso de integración continua implica un análisis constante del código. En este sentido, los códigos versionados y promovidos entornos específicos deben ser compilables y ejecutables.

Pero de nada sirve tener un código compilable y ejecutable presentando varios bugs y drenando la experiencia de los usuarios. En consecuencia, se deben construir pruebas que sean automatizables y puedan garantizar el comportamiento esperado del software.

La integración continua se puede implementar: directamente en las herramientas de Git, los servicios de proveedor de nube ( AWS CodePipeline o AWS CodeBuild ) o programa informático diseñado para este (Jenkins, CI gitlab, TeamCity, Travis CI o bambú).

Entrega continua
La entrega continua es un proceso que extiende y complementa el de integración continua. Con eso, podemos tomar el punto final de la integración, el paquete compilado, probado y listo para ser implantado, e implantarlo.

Esta implementación debe realizarse de manera automatizada, pero no necesariamente se activará automáticamente. Esto depende del proceso interno de la empresa. Este paso final se realizará en un ambiente pre acordado con el usuario, pudiendo ser hasta el de producción.

Normalmente, esta actividad se realiza con ayuda de secuencias de comandos relacionadas con el entorno y el servidor de aplicación de software. Las actualizaciones de entorno y del esquema de base de datos pueden ser necesarias en ese momento.

Algunos servicios en la nube para esto son: AWS CodeDeploy y servicio de aplicaciones .

Desplegar
Uno los principios del DevOps es la continuidad del servicio. En este sentido, es importante que las versiones sean liberadas para los clientes, minimizando los impactos en su usabilidad.

Algunas estrategias utilizadas para realizar el deploy son:


Aplicaciones sin alta disponibilidad (única instancia con el software):
  • Único objetivo: sin la reversión del despliegue, la implementación genera tiempo muerto y sin aumento de costo
Aplicaciones con alta disponibilidad (múltiples instancias con el software):
  • Todos a la vez: sin la reversión de la implementación, la implementación genera el tiempo de inactividad y sin aumento de costo;
  • Mínimo en servicio: deploy puede ser revertido, la implementación no genera downtime y sin aumento de costo. Mantiene el mínimo de servicio necesario para mantener la experiencia del usuario;
  • Gradual: Deploy se puede revertir, la implementación no genera downtime y sin aumento de costo. Implanta a un ritmo constante hasta alcanzar todo el ambiente;
  • Blue / Green: deploy se puede revertir, la implementación no genera downtime y genera un aumento de costo. Crea un nuevo entorno y conmuta el direccionamiento cuando es funcional. Puede ser probado en paralelo.

De esta manera, sus equipos deben analizar el costo beneficio de cada una y utilizar las herramientas de la manera correcta. Algunos servicios que facilitan la creación de ambientes para desplegar la nube son: Heroku , Elastic Beanstalk , App Engine y servicios en la nube .

Métrica
Por último, toda aplicación disponible debe ser monitoreada y medida. Para que estos datos puedan alimentar el proceso de mejora continua, las aplicaciones deben tener métricas de infraestructura y de usabilidad recogidas y analizadas.

Algunos servicios de infraestructura para las métricas colección son: CloudWatch , Stackdrive y Azure monitor . En cuanto al nivel de usabilidad del software, se pueden utilizar herramientas tales como: ELK ,  Mixpanel , Hotjar y Inspectlet .



¿Te gustó estos consejos sobre cómo montar un entorno de devops en la nube? ¿Tiene otras preguntas al respecto? ¡Deja un comentario!

lunes, 1 de octubre de 2018

¿Qué proveedor de cloud computing elegir?

¡Hola Legion! Bienvenido a otro post. Hoy vamos a hablar de la comparación y elegir el mejor proveedor de cloud computing para su escenario.

¿Por qué ir a la nube?
Cuando una empresa decide ir a la nube, ¿cuáles serán los principales puntos considerados por sus decisores? Un informe elaborado por Rightscale mostró que los cuatro primeros puntos están vinculados a hacer más con menos.


Con eso, podemos ver que la ganancia de productividad con bajos costos aparece de manera dominante en relación con los motivos que llevan a las empresas a la nube, además, varios otros datos fueron planteados por el informe. Echa un vistazo a los resultados finales en  http://www.rightscale.com/2018-cloud-report .

En este sentido, otro informe que refuerza el movimiento de la utilización de la nube es liberado por IDP: Nube Mundial de la infraestructura de TI . Podemos ver el aumento del mercado que utiliza cloud, ya sea pública o privada, y con el paso de los años, comparado al mercado de data center tradicional.




CompareCloud
Finalmente, hay un sitio web que muestra a los proveedores de servicio: http://comparecloud.in/ .

Esta página sirve como una guía rápida para analizar las posibilidades y entender cómo cada proveedor entrega el servicio en un determinado nicho. Lo mejor de todo es que está abierto a los cambios a través de GitHub con enlaces a las documentaciones.

Preguntas a realizar
Antes de la toma de decisiones algunas consideraciones son importantes. Con este propósito, intente seguir este checklist y evaluar los puntos de los pros y los contras de cada proveedor para su situación.

1. Centro de datos en regiones geográficas deseables?
Su empresa puede tener restricciones en cuanto a la ubicación geográfica de donde sus datos deben ser almacenados o incluso de donde puedan ser traficados, impidiendo que las rutas salgan del país.

Con el fin de garantizar la alineación con las leyes y las reglas de cumplimiento, su nube de proveedores debe ofrecer regiones donde sus negocios están presentes.

2. Cobro en monedas soportadas?
La mayoría de los proveedores tienen como medio de pago tarjeta de crédito internacional en dólares. Pero existe una salida para quien desea pagar en moneda nacional, en boleto o por una transferencia bancaria: broker.

Broker son empresas que absorben los pagos directos con los proveedores y repasan los valores a los contratistas utilizando medios más fáciles.

3. Latencia aceptable?
Existen sitios expertos en presentar datos sobre la latencia de los centros de datos de los cloud providers. Vea algunos de ellos y analice con sus requisitos:



4. Disponibilidad y actualizaciones atienden sus necesidades?
Aunque la construcción de la aplicación debe ser hecha para garantizar el SLA de sus clientes, de nada sirve si la infraestructura de su proveedor no es adecuada. En ese sentido, evalúen si los niveles de SLA prometidos son compatibles con los de sus sistemas.

Salvo problemas catastróficos, un gran proveedor de cloud computing ofrece servicios con disponibilidad por encima del 99,99%. Sin embargo, contractualmente ellos pueden ofrecer menos, sólo para no tener problemas de un eventual incumplimiento.

5. ¿Alcance al encuentro de su mercado?
Cuando evalúe el alcance de su proveedor, no piense sólo en el alcance físico o geográfico, sino en analizar todos los servicios ofrecidos y los que su empresa va a consumir.

Por ejemplo, si el negocio coreano de su empresa es almacenamiento y copia de seguridad, soluciones de Internet de las cosas (IOT), recopilación y análisis de big data o sistemas de inteligencia artificial, los servicios ofrecidos y las facilidades de integración del proveedor deben ser ponderados con mucho cuidado. Estos pueden ser la diferencia entre el éxito y la falla del día a día de su operación.

6. Flexibilidad para desarrollar y entregar soluciones?
Al mismo tiempo que su equipo de desarrollo trabaja y entrega soluciones, un equipo de operaciones necesita poner a disposición, mantener y medir las aplicaciones en producción. Con el fin de garantizar la integración entre estos equipos y la continuidad de sus servicios, los proveedores tienen servicios que permiten la implementación de prácticas DevOps .

De este modo, si su empresa ya es practicante de esa cultura, vale la pena ver cómo los servicios de integración continua (CI) y entrega continua (CD) pueden ser llevados para ser nativamente utilizados en la nube.

7. Facilidades para planes de contingencia, backups y recuperación de desastres?
Independiente de cómo su operación ocurre, sus servicios necesitan esas rutinas. Una vez más, la mayoría de los proveedores pueden tener estrategias que atiendan a esto.

Pero saber cómo implementar en cada proveedor y analizar las facilidades como métricas recogidas, reducción de tiempo muerto, minimización de la pérdida de datos, automatización y costos es muy importante.

8. Poseer las garantías y certificaciones de seguridad necesarias?
El movimiento de ida a nube despierta mucha inseguridad cuando la privacidad y confidencialidad de sus datos. Para ello, los proveedores buscan dar seguridad a sus clientes, obteniendo certificaciones en el área de seguridad y sometiéndose a la auditoría de organismos internacionales.
Para tener una idea siguen las certificaciones de algunos de los principales proveedores:



¿Cuán importante es la elección de un socio?
Antes de migrar se deben evaluar muchas preguntas y muchos puntos a ponderarse. Durante la migración existe una complejidad de diseño de la mejor arquitectura, equilibrando costos, disponibilidad, seguridad y escalabilidad del ambiente. Después del establecimiento del ambiente, se debe implementar un ciclo de análisis y mejora continua. Con él, se deben recoger métricas y generar insumos para mejorar sus sistemas.

Crear un equipo interno capacitado para actuar en esa área puede ser muy caro. Las novedades presentadas por los proveedores son casi diarias y los servicios crecen cada año.

De esta manera, la mejor manera de extraer lo mejor de la nube es contar con un socio certificado y calificado para ayudarle en sus demandas.


¿Te gustó estos consejos? ¿Tiene otras preguntas al respecto? ¡Deja un comentario!