Evolução na profissão
- Como foi a evolução (acadêmica e profissional) até chegar na sua posição atual?
"Meu nome é Jefferson e vou contar um pouco sobre mim. Tenho 29 anos e mexo com tecnologia desde os 13 anos. Nessa época comecei a arrumar computadores em lan-houses, então sempre tive esse gosto para hardware e foi isso que me levou para infraestrutura. Sou bacharel em Sistemas de Informação pela UFV. Tenho algumas experiências com gestão de ambientes virtuais e físicos, tanto provedores, equipamentos de rede e tudo mais. Isso foi o que mais mexi durante a minha vida inteira. Hoje mexo muito com automação, principalmente nessa área de infraestrutura, porque quanto menos os analistas e desenvolvedores tiverem que resolver problemas ou parar o trabalho para resolver algum tipo de problema, melhor; quanto menos burocracia, mais fácil o serviço sai. Tenho algumas experiências com código também. Já programei banco de dados, mas meu foco sempre foi essa área de infraestrutura. O primeiro curso que fiz foi um curso técnico, entre 2006 até 2008 em Belo Horizonte, pois sou de lá. Depois que terminei o ensino médio comecei a fazer um Tecnólogo em Gestão de TI na universidade FUMEC em BH (2012 a 2014), e, depois que terminei esse curso, não estava muito satisfeito porque era muito sobre gestão e não tinha nada muito aprofundado. Por isso resolvi entrar para a UFV e fazer Sistemas de Informação. Fiz o curso no campus de Paranaíba, próximo a Patos de Minas, e fiquei de 2014 a 2018. Assim que terminei, vim para Uberlândia e fiquei por aqui. A cidade é um bom lugar para tecnologia e é um bom polo, se bem que com a pandemia muita coisa mudou. Minha experiência profissional em TI começou desde mais novo. Eu dava manutenção em hardwares e computadores em lan-houses, serviços particulares e comecei mesmo na área quando fiz estágio em redes e infraestrutura no departamento de Polícia Federal na sede de Minas Gerais, em Contagem. Fiquei lá desde o início de 2013 até o fim de 2014, época em que fui pra UFV fazer SI. Na UFV participei da Empresa Júnior, inclusive é outra dica boa. Não sei se na UFU tem um movimento muito forte de Empresa Júnior, mas na EJ é possível adquirir uma experiência que a gente não consegue nesse período de faculdade, principalmente quando o curso é diurno ou integral, então facilita bastante. Fiquei como coordenador de TI de 2014 até 2016 na EJ, depois vim pra Uberlândia e comecei a trabalhar na Crosoften, uma empresa de desenvolvimento de software, e lá fiquei como analista de infraestrutura de 2018 a 2020. No início do ano passado me mudei para a Zup e estou até hoje."
- Quais foram as principais formações (certificação, especialização, curso, etc.) extracurriculares?
As principais formações profissionais obtidas foram um curso técnico, um Tecnólogo em Gestão de TI na universidade FUMEC e o bacharelado em Sistemas de Informação na UFV (Universidade Federal de Viçosa). Além disso, durante a apresentação, o Jefferson nos contou que está estudando para tirar certificações na área de infraestrutura, mais especificamente, na área de segurança.
Descrição da atividade atual
- O que efetivamente faz o profissional na sua condição?
"A rotina de atividades que um profissional no meio de infraestrutura tem está relacionada com trabalho de automação, justamente para tirar a carga de trabalho manual, seja dos desenvolvedores ou dos analistas das diversas áreas. Também faço o monitoramento e a sustentação dos ambientes de alguns produtos da Zup. Todos os produtos desenvolvidos pela Zup são monitorados, a infraestrutura é monitorada para sabermos quando está tendo algum erro, ataque ou coisas do tipo e precisamos garantir que esses ambientes estejam sempre funcionando da melhor forma possível. Então, o monitoramento e a sustentação é nossa responsabilidade. Também é necessário dar suporte e disponibilidade para emergências e ajudar os times de produtos. Hoje tenho um sobreaviso, então faço algumas jornadas de plantão. Geralmente o analista fica uma semana de plantão, isso depende da empresa, mas geralmente é uma semana. Fico de plantão e, qualquer problema que ocorrer durante a madrugada ou seja a hora que for, o pessoal vai acionar a infraestrutura e tenho que ter essa disponibilidade para atender, principalmente quando se está com sobreaviso. Tem gente que acha isso ruim, tem gente que não gosta, tem gente que quer trabalhar das 08:00 às 18:00 horas e ficar tranquilo depois, mas na área de infraestrutura o servidor não escolhe horário para cair, então é normal extrapolar esse horário."
- O que entrega como resultado?
"Uma das métricas de resultados que temos na área hoje é o bom funcionamento do ambiente. Bom, se ninguém está reclamando então é porque está bom. A diminuição na carga de trabalho do time inteiro, tanto de suporte ou do time de produtos, também é outra métrica. Quando essa carga de trabalho diminui, eles conseguem produzir e focar nas práticas e nas melhorias dos produtos. É importante dar esse conforto para eles não precisarem correrem atrás de problemas de infraestrutura como, por exemplo, saber se o servidor está funcionando."
Requisitos mínimos para exercer a profissão
- Cite alguns soft skills necessários para quem tem intenção de seguir essa carreira?
"Hoje soft skills para a vertentes mais voltadas ao DevOps e SecOps, para todos que vão trabalhar com infraestrutura, seriam ter pelo menos noções básicas de redes, como a comunicação de redes, protocolos de segurança, funcionamento de uma rede. Um outro conhecimento básico necessário seria saber o funcionamento de uma Cloud e quais as principais utilizadas hoje em dia, principalmente agora que os ambientes estão deixando de ser ambientes físicos de servidores, já que algumas empresas estão concentrando todos os serviços de data center e servidor em Cloud. Familiaridade com Linux e Windows por linhas de comando também é um requisito básico, pois quando precisamos acessar algum servidor ou qualquer coisa que esteja em uma Cloud, geralmente não teremos acesso a uma interface agradável, fazendo tudo via linha de comando. Saber lidar com ferramentas de monitoramento e automação também é importante, pois quando damos manutenção, subimos ou monitoramos um servidor, a única certeza que temos é que em algum momento vão surgir problemas, e para isso precisamos de algumas ferramentas para identificar esse problema antes que ele aconteça."
- Sugira alguns hard skills.
Hoje pra área de infraestrutura temos um código que é Infrastructure as a Code, que é a infraestrutura como código. Por exemplo, hoje pra uma pessoa subir um ambiente, ela não precisa mais subir regra por regra, a toda hora, e depois para replicar aquele ambiente a pessoa precisa subir o mesmo ambiente denovo, pois isso demanda bastante tempo, então já temos algumas ferramentas que fazem isso pra gente, transformando toda a infraestrutura em código, facilitando replicar com pequenas alterações. E trabalhar com isso pode ser considerado como um Hard Skill, já que não são todos que conseguem usar essas ferramentas, até mesmo porque envolve trabalhar com códigos. Certificações para especialização em algumas vertentes também são muito importantes, pois são um diferencial na hora de contratar um profissional.
Ferramentas usadas no dia-a-dia
- Cite algumas ferramentas, tecnologias ou metodologias das quais depende para sucesso nas atividades.
Conhecimento básico nos principais serviços de Cloud como Aws, Azure, GCP. Também familiaridade com Linux e Windows via linhas de comando. Ferramentas de monitoramento e automação, como Github, Jenkins, Docker, Kubernetes, Grafana, Zabbix, Prometheus. Quanto a tecnologia, se eu puder dar uma dica pra quem quer seguir esta área, foquem em Cloud, pois hoje os ambientes estão migrando para Cloud, e estão faltando profissionais que trabalham com Cloud.
Kubernetes
O que é o Kubernetes?
O Kubernetes é uma plataforma open source e portável, utilizada para gerenciar (ou orquestrar) as cargas de trabalho e serviço (como clusters de hosts) distribuídos em containers. Essa plataforma é útil na implantação e escalabilidade de aplicações em containers pelo fato de eliminar grande parte dos processos manuais dessas atividades (facilita o processo de automatização). Esses clusters podem incluir hosts de diversos tipos de nuvem, como exemplo, nuvens públicas, privadas ou híbridas. Isso torna a plataforma muito atrativa para hospedagens de aplicações nativas em nuvem e que necessitam de escalabilidade, como a transmissão de dados por meio do Apache Kafka (plataforma que processa o fluxo de dados provenientes de diversas fontes, entregando-o a vários clientes). O Google foi um dos pioneiros no desenvolvimento da tecnologia de containers Linux e o Kubernetes foi criado e desenvolvido pelos engenheiros da empresa. Além disso, sabe-se que tudo no Google é executado em containers. Segundo a Red Hat (2021), o Google gera mais de 2 bilhões de implantações de containers por semana, viabilizadas por uma plataforma interna chamada Borg. Esta foi a antecessora do Kubernetes. Dessa forma, os aprendizados adquiridos ao longo dos anos de desenvolvimento do Borg foi a principal influência para o desenvolvimento da tecnologia do Kubernetes.
- O que é possível realizar com o Kubernetes?
Como dito anteriormente, o Kubernetes é uma ferramenta de automatização e gerenciamento de contêineres com diversas funcionalidades, entre elas pode ser citada a própria orquestração dos contêineres em diversos hosts, o que permite o desenvolvimento de um sistema de armazenamento automático e de acordo com a escolha do desenvolvedor. Além disso, o Kubernetes possibilita a autocorreção do sistema, uma vez que os contêineres falharem, a própria plataforma os substitui por novos, otimizando a execução de uma aplicação. Outra aplicação do Kubernetes envolve o armazenamento e gerenciamento de informações ditas confidenciais, pois é possível modificar as aplicações sem precisar modificar as imagens de seu contêiner e ocorrer problemas de vazamento de informações sigilosas. Dessa forma, fica claro que o Kubernetes é um sistema que envolve operações ao nível de contêiner, isso possibilita solucionamento de problemas de maneira interconectada e com diversas opções, o que permite flexibilidade ao usuário. De maneira geral, o Kubernetes permite a montagem, automatização e gerenciamento de uma aplicação a partir da utilização de contêineres de forma a otimizar ao máximo a aplicação. Apesar disso, o Kubernetes é muito utilizado em conjunto com outras plataformas, como o Docker Registry, para que o serviço possa ser funcionar plenamente, como será mostrado em próximos tópicos.
- Uso do Kubernetes em produção
Por ser uma tecnologia Open Source, o Kubernetes possui uma estrutura de suporte formal totalmente confiável para uso das empresas. Isso porque durante a execução nos ambientes, implantar o Kubernetes nem sempre se mostra uma tarefa muito simples. Então, visando soluções a níveis corporativos, existem ferramentas externas com elementos extras que tornam o Kubernetes mais acessível e potente para as empresas, incluindo componentes de registro, rede, telemetria, segurança, automação de serviços. Uma dessas ferramentas é o OpenShift da Red Hat.
- Como o Kubernetes se encaixa na infraestrutura?
A execução do Kubernetes é feita em um sistema operacional, interagindo com pods (grupo de um ou mais containers implantados em um único nó) de containers executados em nós (máquinas que realizam as tarefas solicitadas e atribuídas). O administrador ou a equipe DevOps passam um comando para a máquina mestre do Kubernetes que retransmite essas instruções aos nós subservientes. Juntamente com a retransmissão, são feitos vários serviços que automatização a decisão de qual nó é mais adequado para realizar a tarefa. Assim, do ponto de vista da infraestrutura, existem poucas mudanças comparadas com a forma tradicional de gerenciar containers. O controle dos containers acontece de forma mais refinada, sem necessidade de microgerenciar cada container ou nó separadamente.
- Relação entre o Kubernetes e o Docker
O Docker usa o kernel do Linux e recursos do kernel como para segregar processos. Isso torna possível executar esses processos de forma independente. Para criar essa independência, são criados containers. Isso proporciona a capacidade de executar diversos processos e aplicações separadamente para otimizar o uso da infraestrutura e, ao mesmo tempo, manter a segurança que existem em sistemas separados. Além disso, o Docker também automatiza a implantação da aplicação (ou de conjuntos de processos que constituem uma aplicação) dentro desse ambiente de container. Para gerenciar um único container, o Docker é uma excelente ferramenta. Porém, quando existem aplicações em containers segregados em centenas de partes (extremamente comum atualmente), o gerenciamento feito pelo Docker torna-se ineficiente. Dessa forma, o Kubernetes é utilizado para realizar esta tarefa. De forma simplificada, o Kubernetes (responsável pela orquestração dos containers) instrui o Docker a iniciar os containers especificados. A diferença é que um sistema automatizado através do Kubernetes solicita que o Docker realize essas tarefas em todos os nós de todos os containers, em vez do administrador fazer essas solicitações manualmente. Dessa forma, percebe-se que as duas ferramentas são complementares e essenciais para o uso otimizado da infraestrutura disponível.
- Sugestões de vídeos
- Ambiente back-end com Docker: https://www.youtube.com/watch?v=97jWpWp4Pnc
- Containers: https://www.youtube.com/watch?v=-pUZBovqRcU&t=233s
- Kubernetes: https://www.youtube.com/watch?v=mVL0nOM3AGo&t=2s
- Cluster: https://www.youtube.com/watch?v=1cVUpoAR2Qc
- Referências bibiliográficas
- Kubernetes. O que é Kubernetes? Disponível em: <https://kubernetes.io/pt-br/docs/concepts/overview/what-is-kubernetes/>. Acessado em: 11/05/2021.
- Red Hat. O que é Apache Kafka? Disponível em: <https://www.redhat.com/pt-br/topics/integration/what-is-apache-kafka>. Acessado em: 11/05/2021.
- Red Hat. O que é Docker? Disponível em: <https://www.redhat.com/pt-br/topics/containers/what-is-docker>. Acessado em: 11/05/2021.
- Red Hat. O que é Kubernetes? Disponível em: <https://www.redhat.com/pt-br/topics/containers/what-is-kubernetes>. Acessado em: 11/05/2021.
Ética profissional
- Pode dar algum exemplo já vivido por você ou por alguma outra pessoa sobre aspectos éticos na profissão, seja positivo ou negativo?
"Eu posso citar dois casos que já aconteceram e é importante ficar atento, principalmente agora com o tema da Lei de Segurança de Dados (LGPD). Em uma empresa que eu trabalhei, ela foi notificada pelo cliente, porque um desenvolvedor que saiu da empresa e tinha acesso aos códigos, até mesmo alguns que não foi ele que programou, utilizou desse material em um projeto pessoal. Uma vez que a gente está dentro de uma empresa, a gente não tem mais autorização sobre eles, pois passam a ser propriedade intelectual da empresa. Esse desenvolvedor subiu o repositório e com uma rápida pesquisa no Google, o pessoal descobriu que esse código estava sendo usado e estava em um repositório que ele era dono, então aconteceram alguns processos legais. Outro caso que já aconteceu, são de colaboradores que no meio do expediente postam fotos, stories no Instagram mostrando a tela do computador. Em uma dessas fotos vazou uma chave de uma API, que era uma API crítica de um cliente, a empresa recebeu uma notificação do cliente, que identificou esse problema e medidas legais também foram tomadas. Então, principalmente nesse período com a LGPD, é muito importante tomar cuidado."
Upload da apresentação
- Link para o slide da apresentação: https://drive.google.com/drive/folders/1L2FCCXYdhg8LPAxGJLoGb4uKkIpvb-Zt?usp=sharing
- Link para a apresentação no Youtube: https://youtu.be/npqsqF3OZA4
Dúvidas
- Quais são os pontos negativos de colocar tudo em Cloud?
"O que eu vejo hoje, o principal ponto negativo seria em questão de migrações. Por exemplo, quando você vai migrar alguma coisa da Azure para a AWS, ou vice-versa, que são as maiores, existem algumas diferenças entre as tecnologias, então a gente não consegue fazer um backup de uma e subir na outra, a gente tem que se adaptar, porque nem sempre as tecnologias de uma são suportadas em outras. Às vezes, o intuito do serviço é o mesmo, como serviço de instância, mas a compatibilidade entre eles é diferente, porque cada cloud cria sua solução, então é muito difícil ter compatibilidade total entre as clouds, o que dificulta esse processo de migração. E quando falamos de dinheiro, principalmente essas clouds maiores que têm as cobranças em dólar, se, por exemplo, você está na Azure, ela muda a política de preços e aumenta demais e você pensa em migrar para a AWS, tem esse problema de compatibilidade. Outro problema, mas raro de acontecer, principalmente em clouds maiores, seria problemas de instabilidade, que aí seria preciso de uma equipe de cloud para resolver."
- Não foi muito citada virtualização (no sentido de VMWare), mas ainda que pareça que o Docker está tendo mais influência, gostaria de saber para quais desafios e soluções contêineres não são recomendados.
"Geralmente os contêineres são mais usados para rodar aplicações, então em questão de escalabilidade, quando você utiliza um contêiner é mais fácil, porque geralmente esses contêineres são utilizados dentro de um cluster, e esse cluster vai controlar a escalabilidade deles, então, por exemplo, se um contêiner cai, o próprio cluster já detecta e sobe um contêiner novo. Então, é mais recomendado para aplicações. A VMWare é mais utilizada quando é algum serviço que não pode cair, pois ela é um pouco mais estável, uma vez que ela não divide recursos e tem todas as funções do sistema operacional (SO). Então, por exemplo, para colocar uma AD, o Active Directory do Windows ou um FreeIPA que também é um servidor de controle de acessos, o melhor é usar a VMWare, que são serviços que não podem parar de rodar e precisam de mais estabilidade. O contêiner utiliza a base do SO, mas quando você sobe um contêiner, ele só puxa pra dentro do contêiner as partes que ele precisa, então ele não sobe um SO inteiro dentro dele, o que economiza recursos. Então, é mais barato ter aplicações em contêineres."
- Você já teve contato/usou PM2?
"Eu já utilizei ele na época que eu mexia mais com aplicações. A gente criava as imagens dos contêineres no Dockerfile utilizando o PM2 para rodar. Porque o PM2 consegue, digamos, solucionar e resolver problemas na hora de subir a aplicação. O PM2 também mostra os status da aplicação, então se der algum problema ou erro na execução, ele acusa para gente e fica mais fácil de controlar."
- Já desenvolveu uma aplicação que esta sendo usada por alguma empresa/serviço (App) ?
"Desenvolver não, pois nunca fui desenvolvedor, mas já participei de processos de desenvolvimento na área de infraestrutura. Por exemplo, Home Chefs é um aplicativo que eu já participei e foi entregue ao cliente, Hidroazul também já ajudei no desenvolvimento, um sistema pro Atacadão, mas desenvolver elas, eu nunca desenvolvi. O que eu tenho de minha autoria que roda são automações que ficaram na empresa que eu trabalhei anteriormente e na ZUP, mas desenvolvimento de aplicativos eu não trabalhei. Apenas no processo deles."
- É comum pessoas que começaram em outras áreas/cargos trabalharem com infraestrutura ?
"É comum vir de outras áreas. Às vezes a pessoa entra, por exemplo, como desenvolvedor, mas ela se interessa pelo tema de um servidor. Em muitas empresas o próprio desenvolvedor precisa também fazer o código da infraestrutura, então às vezes a pessoa se interessa mais pela infraestrutura e acaba migrando e, hoje em dia, no cenário que a gente tem, é muito fácil migrar de uma área para outra. A maioria das empresas são bem abertas, porque empresas de tecnologia são abertas a novas experiências e tudo mais, então geralmente incentivam isso com os profissionais."
- Você já mexeu com nginx ?
"Já mexi para subir muita página na empresa anterior com as automações do Jenkins."
- Qual seria a diferença entre DevOps e SecOps como possibilidade de atuação dentro de uma empresa ?
"Hoje existem vários termos, muitas empresas usam o SRE, que são as pessoas responsáveis tanto pela sustentação do produto, quanto pela sustentação do ambiente. Agora, o DevOps em si é uma cultura que entrelaça todo o time para unir o desenvolvimento com a operação, então desenvolvimento e a operação andam juntos, possibilitando a entrega de softwares com mais qualidade, com mais agilidade. E dentro dessas variações a gente tem o DevSecOps que é uma linha de desenvolvimento e operação mais voltada para a segurança, principalmente agora com a LGPD, essas empresas maiores tem que seguir algumas regras bem rígidas de segurança, então falta profissional no mercado dessa área e ela segue uma linha voltada para a segurança do código, da infraestrutura. Dessa forma, a pessoa que trabalha como DevSecOps ela verifica se o código está dentro das diretrizes de segurança, se a infraestrutura também está de acordo com essas diretrizes, com certificados, criptografia, protocolos e mais. Existem outras variações, mas o conceito mais utilizado hoje seria o DevOps como uma cultura."