Categoria: Education

Cloud Education Serverless

Cultura – Transformação Ágil – Desafios e caminho para o sucesso

Hoje falaremos sobre um tema que é comum para times de tecnologia: A Transformação Ágil. Em poucas palavras, se pudermos definir a transformação ágil, seria: estimular o conhecimento e o compartilhamento do mesmo, aprimorar processos internos, dar visibilidade às pessoas e entregar soluções com valor para o negócio. Se você acredita em tudo isso, então você acredita em transformação ágil.O mercado está vivendo a premissa: “Ou mude ou morra”, concorda? Cada vez mais empresas que tinham o seu mercado intocável, estão sofrendo com as inovadoras startups que vêm, literalmente, engolindo o mercado. Neste artigo, vamos citar algumas coisas para as quais uma equipe de projeto deve estar preparada ao migrar para o Agile.Transformação ágil. O que é?Apesar de numerosos estudos de casos provarem a sua eficácia, o que sabemos em torno do ágil ainda é um pouco nebuloso, gerando dúvidas devido às demandas não muito compreendidas e aplicadas de forma incorreta.Aspectos Chave na Transformação ÁgilOs benefícios da transformação ágil são:Mantenha as coisas simples, sendo criativoAgregue valor aos clientes continuamente, entregando software funcionalMitigue riscos através de sprints com timeboxEvite longas horas de trabalho / evitando estresseAprenda continuamente usando técnicas e ferramentas, seguindo as normas do manifesto ágilPontos de DorAlguns dos principais pontos problemáticos da aplicação da metodologia Ágil ao modelo offsite são:Mudança de mentalidade – O grande desafio na metodologia ágil é a mudança de mentalidade para mudar velhos hábitos. Isso requer orientação consciente até que a maturidade desejada seja alcançada. Para que isso aconteça, é indicado a realização de treinamentos com foco em agile, para que a organização passe a compreender as mudanças necessárias para avançar para o próximo nível.Reorganização – A transição para ágil requer uma definição de funções e a maneira como o projeto é executado. Os papéis tradicionais precisam evoluir / transformar. Os papéis devem ser mais multifuncionais do que especializados.Diferença de fuso horário e localidades – Um grande obstáculo na transformação ágil é ajustar a diferença de fuso horário. Como agilidade requer comunicação continua, é importante assegurar que a comunicação seja fluida, mesmo quando pessoas estão em cidades ou até mesmo países diferentes, com diferença de fuso horário.Mapeamento de funções – Na metodologia ágil, existem algumas funções que devem ser conhecidas por todos, como o Scrum Master, Product Owner e a equipe de desenvolvimento.Embora a metodologia ágil tenha como objetivo tornar a equipe enxuta e auto-organizada, ela ainda precisa das diferentes habilidades necessárias para que um projeto de TI se torne, efetivamente, bem sucedido.A ênfase aqui é tornar a equipe em forma de “T” para que cada membro da equipe tenha uma habilidade primária e desenvolva habilidades secundárias em paralelo.Uma versão típica sobre ágil e como evitar a interferência de “velhos hábitos”A seguir, vamos mostrar um fluxo típico quando falamos sobre a metodologia Agile.Roadmap de lançamento – O roadmap de lançamento proporciona uma visão panorâmica de um produto mínimo viável (MVP), que será lançado. A velocidade da equipe, dando prioridade ao negócio, são levadas em consideração nesta fase de preparação do roadmap de lançamento.Backlog grooming / refinement – Este é um processo contínuo em que as histórias de usuários são gradualmente finalizadas com base na prioridade.Durante esse processo, as seguintes ações são executadas:As histórias de usuários são formuladas com um objetivo e critérios de aceitação.Suporte (como mockups, metadata mapping) são enviados para histórias de usuários.As subtarefas técnicas necessárias para conclusão de uma história do usuário são identificadasAs histórias de usuários são divididas se não puderem ser completadas em um terço de um sprint.Ao contrário da metodologia tradicional de cascata, o trabalho de desenvolvimento começa cedo e a equipe não descansa até que todos os requisitos sejam cumpridos.Execução de SprintA execução do sprint começa com o planejamento do sprint, onde toda a equipe concorda com o escopo do sprint. O escopo do sprint é bloqueado durante a execução do sprint. O sprint é geralmente de duas a quatro semanas e produz um recurso completo e independente que agrega valor ao negócio.Durante o sprint, a equipe completa as user stories (histórias do usuário), uma de cada vez. Quaisquer impedimentos são destacados para o scrum master. Se uma história de usuário não atender aos critérios de aceitação parcial ou totalmente, ela será movida para o próximo sprint.Ao contrário da metodologia tradicional, em cascata por exemplo, o sistema evolui e reflete essas necessidades e prioridades de negócios em constante mudança.UAT – Durante a fase de UAT, os usuários finais de negócios testam o MVP de liberação e assinam os recursos. Durante essa fase, o feedback dos usuários finais de negócios é levado em consideração e definido como histórias de usuários para as versões subsequentes.Nesse estágio, é possível avaliar se a metodologia ágil foi bem-sucedida, avaliando se os recursos têm valor comercial real e, ao mesmo tempo, eliminam o desperdício.Versão de Produção – Como um pré-requisito para a versão de produção, os itens na lista de “Definição de Concluído” são revisados e marcados como concluídos. Uma reunião de retrospectiva é realizada após o lançamento da versão de produção para entender pontos problemáticos e áreas de melhoria.Mapa Mental ÁgilFerramentas e RecursosFerramentas de trabalho, como o JIRA por exemplo, são extremamente importantes para a execução de projetos ágil, uma vez que ele suporta diferentes metodologias ágeis como Scrum ou Kanban ou qualquer outra metodologia customizada. A ferramenta deve suportar os quatro pilares da metodologia ágil.Planejamento de sprintStand-upsGerenciamento de SprintsRetrospectivaDevOpsOs métodos DevOps, em combinação com metodologias ágeis comprovadas, podem ajudar a cumprir os princípio de agilidade.BenefíciosEquipe de desenvolvimento – A equipe de desenvolvimento tem a oportunidade de preparar os requisitos com frequência e destacar o feedback e as restrições. A carga de trabalho fica mais equilibrada e a equipe consegue automatizar as funções de rotina.Usuários finais – Os usuários finais conseguem fornecer feedback à medida que a aplicação evolui. Isso garante que a correção do curso seja feita no início de alguma funcionalidade que não funcione de acordo com as suas necessidades.Caminhos em direção ao futuroEstá ocorrendo muita inovação ao redor do Ágil e estas inovações continuarão a acontecer cada vez mais no futuro. As metodologias que giram em volta do Agile, podem ajudar as empresas a avançarem para o próximo nível. Alguns dos principais aspectos que ajudarão nessa transformação são:Modelos Mentais  – Construções de modelos mentais que ajudam a eliminar o preconceito humano para tomar melhores decisões. As falhas do projeto geralmente resultam da tomada de decisões erradas ou da incapacidade de enxergar a imagem real até que o problema de fato ocorra.Mentalidade ágil como um hábito – A mentalidade ágil é algo difícil de se alcançar, já que estamos acostumados a pensar e usar velhos hábitos prejudiciais. Assim, o aprendizado continuo é necessário para reforçar a verdadeira mentalidade ágil. Na maioria dos casos, o Agile falha quando as pessoas pensam que estão seguindo o Agile, quando em realidade não estão.Conhecimento indisciplinar – É comprovado o conhecimento interdisciplinar leva a insights profundos e dá origem a novas ideias. As equipes ágeis devem ser treinadas em habilidades com o objetivo de aprender “como aprender”.Automação – A automação de tarefas repetitivas pode liberar o tempo da equipe para concentrar seus esforços de maneiras criativas, aumentando a produtividade.Trabalho remoto – O trabalho remoto ajuda a alavancar recursos, o que contribuí para a construção da equipe certa em um curto período de tempo. Graças aos avançaos  na tecnologia, membros de equipe conseguem trabalhar em lugares distintos, garantindo a mesma produtividade que se estivessem on-site. n

LER MAIS ARTIGOS

Acompanhe a Kumulus nas redes sociais:

Facebook

Instagram

Youtube

Envelope

Cloud Education

Parte 2/3 – Learn: Desvendando o poderoso Kubernetes – Por dentro dos seus componentes

No artigo anterior, da nossa série sobre Kubernetes, você aprendeu sobre a origem do Kubernetes, o que são e para que servem os containers, pods e clusters. Neste segundo artigo, você vai aprender sobre os componentes do Kubernetes. Quais são eles, como funcionam e para que servem. Vamos iniciar falando sobre os componentes principais .. São os componentes principais que fornecem o controle do cluster, além de serem responsáveis por executar decisões globais sobre o cluster (por exemplo, agendamento), também detectam e respondem por eventos do cluster.Você pode ler também:How To: Executando o Elasticsearch no KubernetesAprenda sobre o papel que os Bots têm no DevOpsGerenciamento de Big Data: 5 coisas que você precisa saberOs componentes principais podem ser rodados em qualquer máquina no cluster. Para simplificar, os scripts de configuração normalmente iniciam todos os componentes principais na mesma máquina e não rodam containers de usuários nesta máquina.ETCD:O ETCD é o armazenamento de alta disponibilidade de informações chamadas de consistentes. Ele é utilizado como armazenamento de apoio para todos os dados de clusters do Kubernetes.Se o seu cluster de Kubernetes usa o ETCD como seu repositório de apoio, é importante vocÊ se certificar de que tem um plano de backup para esses dados.Kube-scheduler:O Kube-scheduler é o componente do master, ele observa os novos pods criados, que não possuem nenhum nó atribuído e permite que seja selecionado um nó para eles conseguirem rodar.Os fatores levados em conta para decisões de agendamento são: requisitos individuais e coletivos de recurso, hardware/software/contratos de política, especificações de afinidade e anti-afinidade, dados locais e interferência entre cargas de trabalho e prazos.Kube-controller-manager:Kube-controller-manager é o componente do master que roda os controladores. Pensando pela lógica, cada controle tem um processo diferente, mas para reduzir a complexidade, eles são compilados em um único binário e rodam em um único processo.Esses controladores incluem:Node controller: são responsáveis por noticiar e responder quando os nós caem.Replication controller: é responsável por manter o número correto de pods para cada objeto do controlador de replicação no sistema.Endpoints: preenche o objeto Endpoints (isso é, junta serviços e pods)Service Account & Token Controllers: cria contas padrão e tokens de acesso à API para novos ingressantes.Cloud Controller ManagerSão controladores que interagem com os provedores de cloud. O binário cloud-controller-manager é um recurso introduzido no Kubernetes versão 1.6.O Cloud Controller Manager executa somente loops de controlador específicos do provedor de cloud. Você pode desabilitar os loops do controlador definindo o sinalizador- cloud-provider como external ao iniciar o kube-controller-manager.O Cloud Controller Manager permite também que o código do fornecedor de cloud e o código de Kubernetes possa evoluir independentemente um do outro. Em versões anteriores, o código principal do Kubernetes era dependente de um código específico do provedor de cloud para funcionalidade. Os seguintes controladores que dependem de um servidor cloud:Node Controller: serve para checagem do provedor de cloud, para determinar se um nó foi deletado na cloud depois de parar de responder.Route Controller: serve para definir rotas na estrutura de cloud.Service Controller: para criar, atualizar e deletar balanceadores de carga do provedor de cloud.Volume Controller: para criar, anexar, volumes de montagem e interagir com o provedor de cloud para orquestrar volumes.Componentes dos nósOs componentes dos nós rodam em qualquer nó. O mantendo e rodando os pods e fornecendo o  ambiente de tempo de execução do Kubernetes.API do Kubernetes O Kubernetes é construído em torno de uma robusta API RESTful. Cada ação realizada no Kubernetes, seja comunicação entre componentes ou comando do usuário, interage de alguma forma com a API do Kubernetes. O objetivo da API é ajudar a facilitar o estado desejado do cluster do Kubernetes.A API do Kubernetes é um “modelo declarativo”, o que significa que se concentra no que, e não no como. Você diz o que você quer realizar e faz. Isso pode envolver a criação ou a destruição de recursos, mas você não precisa se preocupar com esses detalhes. Para criar esse estado desejado, crie objetos , que normalmente são representados por arquivos YAML chamados manifestos , e aplique-os por meio da linha de comando com a ferramenta kubectl .KubeletKubelet é um agente que roda em cada nó no cluster. O Kubelet leva um conjunto de PodSpecs que são fornecidos por vários mecanismos e garantem que os containers descritos nesses PodSpecs estejam funcionando e sejam saudáveis. O kubelet só gerencia containers que foram criados pelo Kubernetes.Kube-proxyO Kube-proxy é um proxy de rede que roda em cada nó do cluster. Ele permite a abstração do serviço Kubernetes, mantendo as regras de rede no host e realizando o encaminhamento de conexões.O Kube-proxy permite o encaminhamento de fluxo TCP, UDP ou round-robin TCP e encaminhamento UDP em um conjunto de funções de back-end.Tempo de execução dos ContainersÉ o software que é responsável por rodar os containers.O Kubernetes suporta vários tempos de execução de containers: Docker, containerd, cri-o, rktlet, e qualquer implementação do Kubernetes CRI.AddonsAddons usam os recursos do Kubernetes (DaemoSet, Desenvolvimento, etc) para implementar características do cluster. Como eles fornecem recursos no nível do cluster, os recursos com namespaces para os addons pertencem ao namespace do sistema kube.Como selecionar addons:DNSO Cluster DNS é um servidor DNS, além de outros servidores DNS em seu ambiente, que serve para registrar DNS nos serviços do Kubernetes.Enquanto os outros addons não são obrigatoriamente necessários, todos os clusters do Kubernetes devem ter o cluster DNS.Web UI (Dashboard)O Web UI Dashboard é uma interface de usuário, baseada em web, usada para clusters de Kubernetes. Ela permite que os usuários gerenciem e solucionem problemas de aplicativos em execução no cluster, bem como o próprio cluster.Container Resource MonitoringContainer Resource Monitoring é o processo de rastrear a operação de um aplicativo em container. Ele grava métricas genéricas de séries temporais sobre containers em um banco de dados central e fornece uma interface para o usuário navegar nesses dados.Cluster-level LoggingO Cluster-Level-Logging é responsável por salvar os logs de container em um armazenamento de log central, que funciona com interface de pesquisa/navegação.Você gostou do artigo? Continue acompanhando a série!No próximo artigo falaremos sobre cases de sucesso com Kubernetes. empresas que estão adotando Kubernetes como principal gerenciador de containers, e os resultados obtidos após esta mudança.

LER MAIS ARTIGOS

Acompanhe a Kumulus nas redes sociais:

Facebook

Instagram

Youtube

Envelope

Social media & sharing icons powered by UltimatelySocial