em 11-06-2023 04:30 PM
Fonte: https://dcgubbins.com/portfolio/four-ages-of-networking/
É fato que nos últimos anos os negócios vêm crescendo em tamanho e complexidade com o objetivo de entregar cada vez mais rápido valor aos clientes. Porém, quando olhamos para as infraestruturas tradicionais, percebemos que essas já não são mais capazes de viabilizar entregas na velocidade em que se exige. Grandes empresas já perceberam que a infraestrutura de redes precisa passar a ser um facilitador - e não um inibidor - para que a organização consiga sustentar o crescimento do negócio. Tendo isso em vista, começaram a adotar princípios agile para trabalhar de forma rápida e melhorar continuamente a experiencia do usuário através de meios de coleta e medição dos feedbacks recebidos. Diante de toda essa transformação, nós, profissionais de redes, estamos sendo cada vez mais desafiados e pressionados para entregar soluções que forneçam uma infraestrutura ágil e adaptável. Tais soluções só são alcançadas adotando as práticas de DevOps e automação com orquestração. Conseguir ter agilidade na entrega de novas capabilities e features, aumento de disponibilidade, redução de erro humano nas operações de redes e otimização de custos são apenas alguns dos objetivos desejados pelos times DevOps.
Ademais, facilitar a operação da rede e reduzir custos são objetivos chave desejados também pelas diretorias. Com uma análise mais detalhada, podemos perceber que grande parte do alto custo operacional, muitas das vezes, está relacionado com o modo como a infraestrutura de redes é operada e seus produtos/serviços são consumidos pelas operações de TI. Quanto mais uma rede é operada manualmente, mais violações de segurança podem ocorrer e mais tempo é gasto para identificação e resolução de falhas.
Alcançar tais objetivos é algo bastante desafiador não apenas para analistas e engenheiros. Com toda essa mudança na forma de operar e entregar serviços de redes, os fabricantes precisam cada vez mais modernizar seus produtos que, em sua grande maioria, utilizam command-line interface (CLI) para configuração e visualização de dados e Simple Network Management Protocol (SNMP), que é praticamente um padrão de uso quando se fala em monitoramento de saúde e falhas em equipamentos de redes. Todavia, mesmo com as empresas dedicando recursos financeiros para ter times e monitoramento dos ativos 24/7, ainda não é possível atingir o nível desejado de predição e proatividade. Pensando nisso, entramos, então, na fase moderna de gestão e monitoramento dos equipamentos de redes em que constantemente buscamos por meios de prever e agir com proatividade em cima dos problemas. Essa mudança de modus operandi, na qual o analista deixa de trabalhar “apagando incêndio”, requer uma coleta de dados detalhados dos equipamentos, para que seja possível sua utilização pelo Network Management System (NMS) e demais aplicações. Essa tendência resultou em desenvolvimento, por parte das fabricantes, de novas capabilities para que seus equipamentos consigam exportar dados operacionais e de configurações de maneira que as aplicações consigam entender e utilizar. Alguns exemplos são NETCONF, RESTCONF, gNMI, YANG Data Models...
Obs: O uso do Data Model YANG como base para configuração e leitura de dados operacionais é comumente referido como model-driven progrmmability e model-driven telemetry respecticamente.
A figura a seguir mostra em high level as capabilities dos equipamentos de redes nessa era moderna de automação.
Figure 1.0 Modern Networking Products Capabilities
Hoje em dia, não da para se falar em automação de infraestrutura de redes sem mencionar as famosas applications programming interfaces (API). Resumidamente, APIs são mecanismos ou conjunto de requerimentos que governam como uma aplicação pode falar com a outra. Olhando para ambientes de infraestrutura de redes, desenvolvedores utilizam API para configurar ou monitorar equipamentos especificos, sendo elas divididas em dois tipos: Northbound API e Southbound API.
Fonte: Cisco Certified DevNet Associate – Offical Cert Guide
Northbound APIs são utilizadas para a comunicação da aplicação com a controller. Pegaremos como exemplo uma rede SDWAN-VIPTELA (Caso queira aprender um pouco mais sobre SDWAN, leia minha outra publicação aqui
Image 1.0 Demonstração API lab eve-ng pessoal
Note que quando realizo a alteração, a informação é enviada ao equipamento via API utilizando o método PUT.
APIs também podem ser utilizadas para requisição de determinadas informações ou configurações dos dispositivos de redes, funcionando basicamente como um garçom que recebe o pedido do cliente (aplicação), leva até a cozinha (device) e retorna com o alimento (informação), conforme exemplificado na imagem a seguir:
Fonte: https://www.geeksforgeeks.org/what-is-an-api/
Ainda utilizando o nosso vManage como exemplo, a image 1.1 a seguir mostrará a requisição sendo enviada após clicarmos na opção Devices. O que esperamos após essa ação é que a GUI nos mostre a lista de devices que estão sendo gerenciados pelo vManage. Para isso, a nossa API utilizará agora o método GET, pois queremos apenas solicitar ao vManage a lista e entregá-la via GUI ao usuário final.
Image 1.1 Demonstração API lab eve-ng pessoal
Com essa breve explicação já conseguimos seguir com a nossa leitura e futuramente trarei artigo explorando mais o tema. Caso queira aprender mais sobre API, a Cisco fornece gratuitamente o treinamento Coding & APIs.
Pois bem, unindo todas essas informações sobre a evolução de design e tecnologia dos equipamentos, podemos dizer que para alcançar o nível desejado de automação é de extrema importância que a coleta de eventos em real-time seja feita, pois a rápida e detalhada coleta de dados dos equipamentos é uma característica muito importante para as novas técnicas e protocolos de gerenciamento. Isto possibilitará uma mudança de arquitetura para a aplicação de mecanismos self-healing e, somente então, os analistas e engenheiros de redes poderão direcionar seus esforços para pensar em como expandir e melhorar a infraestrutura focando no negócio. Contudo, essa mudança de mind-set vai além de requisitos e questões técnicas, é necessário também entendimento e visão por parte da gestão e diretoria para que consigamos ter sucesso e colher os frutos de possuir uma rede com mais inteligência e automação. É preciso que os times de engenharia, operação e desenvolvimento tenham tempo para pensar focados no negócio e, assim, propor as melhores soluções, já que não serão apenas com treinamento de Python e lógica de programação que teremos uma revolução técnica no setor.
Mas afinal de contas, o que é NetDevOps?
Fonte: https://storage.googleapis.com/blogs-images/ciscoblogs/1/5ce47763db24c.png
Para entender os conceitos de NetDevOps primeiro precisamos explorar o que é DevOps. Tradicionalmente, em grandes empresas, temos a típica separação entre os analistas de desenvolvimento e os analistas de operações, cada um com seu diferente objetivo. Enquanto o time de desenvolvimento foca em desenvolver novos softwares ou melhorar os já existentes, o time de operação foca em manter o ambiente livre de erros e com o melhor service level agreement (SLA) possível. Conforme a infraestrutura de redes e TI de uma empresa expande, esses dois times precisam começar a trocar informações para que os novos softwares e/ou atualizações não tenham “pontos soltos”. Essa interação, na maioria das vezes, resulta em conflitos e ineficiência de projeto, por ter equipes com objetivos diferentes tendo que trabalhar em conjunto sendo que, comumente, uma não tem o conhecimento básico sobre as tecnologias da outra. Para superar esse desafio, foi então criado o conceito de DevOps, em que “Dev” se refere ao desenvolvimento e “Ops” a operação. Como o próprio nome diz, teremos agora dois times trabalhando em conjunto para atingir o mesmo objetivo. Com esse time alinhado, passamos a ter clareza sobre o que a infraestrutura precisa fornecer, o desenvolvimento precisa criar e, mais do que isso, temos analistas de operações que, mesmo sem saber programar em alto nível, entendem o processo de desenvolvimento de uma aplicação. Podemos dizer que DevOps é um framework e uma sequência de práticas que tem como objetivo entregar produtos com relativa facilidade, velocidade e alta qualidade, utilizando automação e trabalho em conjunto entre times de operação e desenvolvimento, tendo como principal meta o aumento do valor do negócio para a organização e para o seu público-alvo. Tal meta só se atinge trabalhando através de um completo processo de desenvolvimento, construção, teste e liberação de produto de forma rápida.
A imagem a seguir mostra os estágios do desenvolvimento:
Fonte: https://sempreupdate.com.br/wp-content/uploads/2019/11/DevOps.jpg
Importante termos em mente que produtos de alta qualidade só são entregues se tivermos o feedback constante do usuário final ou cliente alvo do produto. Esse tipo de interação é uma parte chave da estratégia do DevOps. Além disso, princípios/práticas agile são comumente usadas para prover entrega contínua de softwares, produtos, atualizações ou capabilities.
Aplicando todos os princípios de DevOps e estratégias de desenvolvimento de software nas operações de redes, teremos o NetDevOps, que, por sua vez, é focado em entregar os seguintes benefícios à organização:
Dentro de todo esse contexto, é de extrema importância explorarmos alguns termos como: Continuous integration, continuous delivery e continuous deployment.
De forma breve, podemos dizer que continuous integration (CI) é a capacidade de mesclar/fundir pequenas mudanças dentro do código principal (se utiliza sistemas de controle de versão, como, por exemplo, o GitHub) para que então seja realizada a validação e teste de velocidade de leitura do código. Após o processo CI, o Continuous delivery (CD) atua realizando testes de integração em ambiente de testes e pré-produção e, uma vez concluído, pode então ser realizado o deploy do código no ambiente de produção. O deploy pode ser realizado de forma automática ou manual. O acrônimo CD é referido como Continuous deployment no processo de deploy automático e continuous delivery quando feito de forma manual.
Fonte: https://blogs.cisco.com/cloud/have-you-ever-considered-ci-cd-as-a-service
Após toda essa minha tentativa de te entregar uma pequena amostra das mudanças que estamos vivendo em infraestrutura de redes, fica a pergunta: O engenheiro/analista de redes que não aprender a programar em alto nível perderá seu espaço no mercado?
Do meu ponto de vista, nós, profissionais de redes, não necessariamente precisamos focar em aprender a programar em alto nível, pois não seremos os desenvolvedores; assim como desenvolvedores não precisam aprender a configurar uma infraestrutura de redes do zero. Acredito que o que precisamos é entender o processo de desenvolvimento de software e os conceitos de lógica e programação, para que consigamos compreender as demandas recebidas, bem como solicitar/propor novas soluções para o time de desenvolvimento. E é exatamente esse o foco quando se fala em NetDevOps, não para o desenvolvedor dominar a área de redes e nem engenheiro de redes dominar a área de desenvolvimento. Acredito que no futuro teremos times integrados e trabalhando em conjunto, sem que uma área seja algo obscuro para a outra. Até porque redes não é só ping e programação não é só “Hello world”.
Com o intuito de preparar profissionais para essa nova era, além da trilha de certificações DevNet, a Cisco fornece, através da plataforma https://developer.cisco.com/, treinamentos gratuitos com conteúdo teórico e lab hands-on para praticar os conhecimentos adquiridos. Não deixe de se cadastrar e iniciar os seus estudos!
Image 3.0 Cisco Developer
Se esse artigo te ajudou de alguma forma, peço que compartilhe, deixe o seu kudo e comente qual o seu ponto de vista e expectativas para o futuro sobre o tema!
Comunidade Cisco
Aprender. Compartilhar. Crescer.
Boa explicação, Samuca!!
Sempre aprendendo contigo!
Pra cima!!
perfect.
Muito grato Samuca! Excelente!
Está massa.
Arquivo excelente, Parabéns Samuel !
ajudou muito
Encontre respostas, faça perguntas e conecte-se com nossa comunidade de especialistas da Cisco de todo o mundo.
Estamos felizes por você estar aqui! Participe de conversas e conecte-se com sua comunidade.
Navegue pelos links rápidos da Comunidade e usufrua de um conteúdo personalizado e em seu idioma nativo: