Guía de DevOps para principiantes

Cal é a importancia de DevOps, que significa para os profesionais das TI, unha descrición de métodos, marcos e ferramentas.

Guía de DevOps para principiantes

Pasaron moitas cousas desde que o termo DevOps se implantou no mundo das TI. Con gran parte do ecosistema de código aberto, é importante reconsiderar por que comezou e o que significa para unha carreira en TI.

Que é DevOps

Aínda que non hai unha definición única, creo que DevOps é un marco tecnolóxico que permite a colaboración entre os equipos de desenvolvemento e operacións para implementar código máis rápido en ambientes de produción coa capacidade de iterar e automatizar. Pasaremos o resto deste artigo para desempaquetar esta reclamación.

A palabra "DevOps" é unha combinación das palabras "desenvolvemento" e "operacións". DevOps axuda a aumentar a velocidade de entrega de aplicacións e servizos. Isto permite ás organizacións atender eficazmente aos seus clientes e facerse máis competitivas no mercado. En pocas palabras, DevOps é o aliñamento entre o desenvolvemento e as operacións de TI cunha comunicación e colaboración máis efectivas.

DevOps implica unha cultura onde a colaboración entre os equipos de desenvolvemento, operacións e empresas se considera fundamental. Non se trata só de ferramentas, xa que DevOps nunha organización tamén beneficia continuamente aos clientes. As ferramentas son un dos seus piares, xunto coas persoas e os procesos. DevOps aumenta a capacidade das organizacións para ofrecer solucións de alta calidade no menor tempo posible. DevOps tamén automatiza todos os procesos, desde a creación ata a implantación, a aplicación ou o produto.

A discusión de DevOps céntrase na relación entre os desenvolvedores, as persoas que escriben software para gañarse a vida e os operadores responsables do mantemento dese software.

Retos para o equipo de desenvolvemento

Os desenvolvedores adoitan mostrarse entusiasmados e ansiosos por implementar novos enfoques e tecnoloxías para resolver problemas organizativos. Non obstante, tamén se enfrontan a certos problemas:

  • O mercado competitivo crea moita presión para entregar o produto a tempo.
  • Deben encargarse de xestionar o código listo para a produción e de introducir novas funcións.
  • O ciclo de lanzamento pode ser longo, polo que o equipo de desenvolvemento ten que facer varias suposicións antes de implementar aplicacións. Neste escenario, é necesario máis tempo para resolver os problemas que xurden durante a implantación nun ambiente de produción ou de proba.

Retos aos que se enfronta o equipo de operacións

Os equipos de operacións centráronse historicamente na estabilidade e fiabilidade dos servizos de TI. É por iso que os equipos de operacións buscan a estabilidade mediante cambios nos recursos, tecnoloxías ou enfoques. As súas tarefas inclúen:

  • Xestionar a asignación de recursos a medida que aumenta a demanda.
  • Xestionar os cambios de deseño ou personalización necesarios para o seu uso nun ambiente de produción.
  • Diagnosticar e resolver problemas de produción despois da autoimpregación das aplicacións.

Como DevOps resolve os problemas de desenvolvemento e operacións

En lugar de implementar un gran número de funcións de aplicacións á vez, as empresas están tentando ver se poden implementar un pequeno número de funcións aos seus clientes mediante unha serie de iteracións de lanzamento. Este enfoque ten unha serie de vantaxes, como unha mellor calidade do software, un feedback máis rápido dos clientes, etc. Isto, á súa vez, garante unha alta satisfacción do cliente. Para acadar estes obxectivos, as empresas están obrigadas a:

  • Reduce a taxa de fallos ao lanzar novas versións
  • Aumentar a frecuencia de implantación
  • Consiga un tempo medio máis rápido para a recuperación no caso dunha nova versión da aplicación.
  • Reducir o tempo de correccións

DevOps realiza todas estas tarefas e axuda a garantir unha entrega ininterrompida. As organizacións están usando DevOps para acadar niveis de produtividade que eran inimaxinables hai só uns anos. Realizan decenas, centos e incluso miles de despregamentos ao día ao tempo que ofrecen unha fiabilidade, estabilidade e seguridade de clase mundial. (Máis información sobre os tamaños dos lotes e o seu impacto na entrega de software).

DevOps intenta resolver varios problemas derivados de metodoloxías anteriores, incluíndo:

  • Illamento do traballo entre os equipos de desenvolvemento e operacións
  • As probas e a implantación son fases separadas que se producen despois do deseño e a construción e requiren máis tempo que os ciclos de construción.
  • Exceso de tempo dedicado a probar, implementar e deseñar en lugar de centrarse na creación de servizos comerciais fundamentais
  • Implementación manual de código que provoca erros na produción
  • As diferenzas nos horarios dos equipos de desenvolvemento e operacións causan atrasos adicionais

Guía de DevOps para principiantes

Confrontación entre DevOps, Agile e TI tradicional

DevOps adoita discutirse en relación con outras prácticas de TI, especialmente Agile e Waterfall.

Agile é un conxunto de principios, valores e prácticas para a produción de software. Así, por exemplo, se tes unha idea que queres transformar en software, podes usar principios e valores Agile. Pero este software só se pode executar nun ambiente de desenvolvemento ou proba. Necesitas un xeito sinxelo e seguro de mover o teu software á produción de forma rápida e repetida, e o camiño pasa por ferramentas e técnicas DevOps. O desenvolvemento de software áxil céntrase nos procesos de desenvolvemento e DevOps é responsable do desenvolvemento e implantación da forma máis segura e fiable.

Comparar o modelo de fervenza tradicional con DevOps é unha boa forma de comprender os beneficios que trae DevOps. O seguinte exemplo asume que a aplicación estará activa en catro semanas, o desenvolvemento está completo nun 85 %, a aplicación estará activa e o proceso de compra de servidores para enviar o código acaba de comezar.

Procesos tradicionais
Procesos en DevOps

Despois de facer un pedido de novos servidores, o equipo de desenvolvemento traballa en probas. O grupo de traballo traballa coa ampla documentación requirida polas empresas para implantar a infraestrutura.
Unha vez que se fai un pedido de novos servidores, os equipos de desenvolvemento e operacións traballan xuntos nos procesos e os trámites para instalar os novos servidores. Isto permítelle comprender mellor os requisitos de infraestrutura.

A información sobre a conmutación por fallo, a redundancia, as localizacións dos centros de datos e os requisitos de almacenamento está terxiversada porque non hai ningunha entrada dun equipo de desenvolvemento que teña un profundo coñecemento do dominio.
Os detalles sobre a conmutación por fallo, a redundancia, a recuperación ante desastres, a localización dos centros de datos e os requisitos de almacenamento son coñecidos e correctos grazas á entrada do equipo de desenvolvemento.

O equipo de operacións non ten idea do progreso do equipo de desenvolvemento. Tamén desenvolve un plan de seguimento baseado nas súas propias ideas.

O equipo de operacións é plenamente consciente do progreso realizado polo equipo de desenvolvemento. Tamén interactúa co equipo de desenvolvemento e traballan xuntos para desenvolver un plan de seguimento que satisfaga as necesidades de TI e empresariais. Tamén usan ferramentas de seguimento do rendemento das aplicacións (APM).

Unha proba de carga realizada antes de que se inicie unha aplicación fai que a aplicación se bloquee, atrasando o seu lanzamento.
Unha proba de carga realizada antes de executar unha aplicación produce un rendemento deficiente. O equipo de desenvolvemento resolve rapidamente os pescozos de botella e a aplicación lánzase a tempo.

Ciclo de vida de DevOps

DevOps implica a adopción de certas prácticas xeralmente aceptadas.

Planificación continua

A planificación continua depende de principios lean para comezar pequeno identificando os recursos e os resultados necesarios para probar o valor da empresa ou visión, adaptarse continuamente, medir o progreso, aprender das necesidades dos clientes, cambiar a dirección segundo sexa necesario para adaptarse á axilidade e reinventar o plan de negocios.

Desenvolvemento conxunto

O proceso de desenvolvemento colaborativo permite que as empresas, os equipos de desenvolvemento e os equipos de probas repartidos en diferentes zonas horarias proporcionen software de calidade continuamente. Isto inclúe desenvolvemento multiplataforma, soporte de programación multilingüe, creación de historias de usuario, desenvolvemento de ideas e xestión do ciclo de vida. O desenvolvemento colaborativo inclúe o proceso e a práctica da integración continua, que promove a integración de código frecuente e as compilacións automatizadas. Ao implementar código con frecuencia nunha aplicación, os problemas de integración identifícanse no inicio do ciclo de vida (cando son máis fáciles de solucionar) e o esforzo de integración global redúcese mediante unha retroalimentación continua a medida que o proxecto mostra un progreso continuo e visible.

Proba continua

As probas continuas reducen o custo das probas ao axudar aos equipos de desenvolvemento a equilibrar a velocidade coa calidade. Tamén elimina os pescozos de botella nas probas mediante a virtualización do servizo e facilita a creación de ambientes de proba virtualizados que se poden compartir, implementar e actualizar facilmente a medida que os sistemas cambian. Estas capacidades reducen o custo de aprovisionamento e mantemento de ambientes de proba e acurtan os tempos dos ciclos de proba, o que permite que as probas de integración se produzan antes no ciclo de vida.

Liberación e implantación continua

Estas técnicas traen consigo unha práctica básica: liberación e despregamento continuos. Isto está garantido por unha canalización continua que automatiza os procesos clave. Reduce os pasos manuais, os tempos de espera dos recursos e o reelaboración ao permitir a implantación con só premer un botón, o que resulta en máis versións, menos erros e total transparencia.

A automatización xoga un papel fundamental para garantir unha versión de software estable e fiable. Un dos maiores retos é tomar procesos manuais como a construción, a regresión, a implantación e a creación de infraestruturas e automatizalos. Isto require o control da versión do código fonte; escenarios de proba e despregamento; datos de configuración de infraestruturas e aplicacións; e as bibliotecas e paquetes dos que depende a aplicación. Outro factor importante é a capacidade de consultar o estado de todos os ambientes.

Seguimento continuo

A supervisión continua proporciona informes de nivel empresarial que axudan aos equipos de desenvolvemento a comprender a dispoñibilidade e o rendemento das aplicacións nos contornos de produción antes de que se implanten na produción. A retroalimentación temprana proporcionada polo seguimento continuo é fundamental para reducir o custo dos erros e dirixir os proxectos na dirección correcta. Esta práctica adoita incluír ferramentas de seguimento que normalmente revelan métricas relacionadas co rendemento das aplicacións.

Feedback e optimización constantes

A retroalimentación e optimización continuas proporcionan unha representación visual do fluxo de clientes e identifican as áreas problemáticas. Os comentarios pódense incluír tanto nas etapas previas como posvendas para maximizar o valor e garantir que aínda máis transaccións se completan con éxito. Todo isto proporciona unha visualización inmediata da causa raíz dos problemas dos clientes que inflúen no seu comportamento e impacto empresarial.

Guía de DevOps para principiantes

Beneficios de DevOps

DevOps pode axudar a crear un ambiente onde os desenvolvedores e as operacións traballen en equipo para acadar obxectivos comúns. Un fito importante neste proceso é a implementación da integración continua e a entrega continua (CI/CD). Estas técnicas permitirán aos equipos sacar software ao mercado máis rápido con menos erros.

Os beneficios importantes de DevOps son:

  • Previsibilidade: DevOps ofrece unha taxa de fallos significativamente menor para as novas versións.
  • Mantebilidade: DevOps permite unha recuperación sinxela se falla unha nova versión ou se falla unha aplicación.
  • Reproducibilidade: o control de versións dunha compilación ou código permítelle restaurar versións anteriores segundo sexa necesario.
  • Maior calidade: abordar os problemas de infraestrutura mellora a calidade do desenvolvemento de aplicacións.
  • Time to Market: a optimización da entrega de software reduce o tempo de comercialización nun 50%.
  • Redución de riscos: a implantación da seguridade no ciclo de vida do software reduce o número de defectos ao longo do ciclo de vida.
  • Eficiencia de custos: a procura da eficiencia de custos no desenvolvemento de software atrae á alta dirección.
  • Estabilidade: o sistema de software é máis estable, seguro e pódense auditar os cambios.
  • Descompoñer unha base de código máis grande en pezas manexables: DevOps baséase en métodos de desenvolvemento áxiles, que permiten dividir unha base de código grande en pezas máis pequenas e manexables.

Principios de DevOps

A adopción de DevOps deu lugar a varios principios que evolucionaron (e seguen evolucionando). A maioría dos provedores de solucións desenvolveron as súas propias modificacións de varias técnicas. Todos estes principios baséanse nun enfoque holístico de DevOps, e as organizacións de calquera tamaño poden utilizalos.

Desenvolver e probar nun ambiente de produción

A idea é permitir que os equipos de desenvolvemento e garantía de calidade (QA) desenvolvan e proben sistemas que se comportan como sistemas de produción para que poidan ver como se comporta e funciona a aplicación moito antes de que estea lista para a súa implantación.

A aplicación debe conectarse aos sistemas de produción o antes posible no seu ciclo de vida para resolver tres problemas potenciais importantes. En primeiro lugar, permítelle probar a aplicación nun ambiente próximo ao ambiente real. En segundo lugar, permítelle probar e validar os procesos de entrega de aplicacións con antelación. En terceiro lugar, permite ao equipo de operacións probar no inicio do ciclo de vida como se comportará o seu ambiente cando se despreguen as aplicacións, permitíndolle así crear un ambiente centrado nas aplicacións altamente personalizado.

Implementa con procesos fiables e repetibles

Este principio permite aos equipos de desenvolvemento e operacións apoiar procesos áxiles de desenvolvemento de software ao longo de todo o ciclo de vida do software. A automatización é fundamental para crear procesos iterativos, fiables e repetibles. Polo tanto, a organización debe crear unha canalización de entrega que permita a implantación e probas continuas e automatizadas. A implantación frecuente tamén permite aos equipos probar os procesos de implantación, reducindo así o risco de fallos de implantación durante as versións en directo.

Seguimento e comprobación da calidade do traballo

As organizacións son boas para supervisar as aplicacións en produción porque teñen ferramentas que capturan métricas e indicadores clave de rendemento (KPI) en tempo real. Este principio move a monitorización no inicio do ciclo de vida, garantindo que as probas automatizadas monitorizan os atributos funcionais e non funcionais dunha aplicación no inicio do proceso. Sempre que se proba e implanta unha aplicación, débense examinar e analizar as métricas de calidade. As ferramentas de vixilancia permiten alertar precozmente dos problemas operativos e de calidade que poidan xurdir durante a produción. Estes indicadores deben recollerse nun formato accesible e comprensible para todas as partes interesadas.

Mellorando os bucles de feedback

Un dos obxectivos dos procesos DevOps é permitir ás organizacións responder e facer cambios máis rápido. Na entrega de software, este obxectivo require que a organización reciba comentarios pronto e despois aprenda rapidamente de cada acción realizada. Este principio esixe que as organizacións creen canles de comunicación que permitan ás partes interesadas acceder e interactuar de forma retroalimentada. O desenvolvemento pódese facer axustando os seus plans ou prioridades do proxecto. A fabricación pode actuar mellorando o ambiente de produción.

dev

  • Planificación: Kanboard, Wekan e outras alternativas de Trello; GitLab, Tuleap, Redmine e outras alternativas de JIRA; Mattermost, Roit.im, IRC e outras alternativas a Slack.
  • Código de escritura: Git, Gerrit, Bugzilla; Jenkins e outras ferramentas de código aberto para CI/CD
  • Montaxe: Apache Maven, Gradle, Apache Ant, Packer
  • Probas: JUnit, Pepino, Selenium, Apache JMeter

Ops

  • Lanzamento, implantación, operacións: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Seguimento: Grafana, Prometheus, Nagios, InfluxDB, Fluentd e outros tratados nesta guía

(*Numeráronse as ferramentas de operacións por orde de uso polos equipos de operacións, pero as súas ferramentas se solapan coas etapas do ciclo de vida das ferramentas de lanzamento e despregamento. Para facilitar a lexibilidade, eliminouse a numeración.)

En conclusión

DevOps é unha metodoloxía cada vez máis popular que ten como obxectivo reunir desenvolvedores e operacións como unha única unidade. É único, diferente das operacións informáticas tradicionais e complementa a Agile (pero non é tan flexible).

Guía de DevOps para principiantes

Descubra detalles sobre como conseguir unha profesión demandada desde cero ou subir de nivel en termos de habilidades e salario facendo cursos en liña pagos de SkillFactory:

máis cursos

Útil

Fonte: www.habr.com

Engadir un comentario