Mostrando postagens com marcador Metologia. Mostrar todas as postagens
Mostrando postagens com marcador Metologia. Mostrar todas as postagens

segunda-feira, 11 de janeiro de 2021

A Importância da Escalabilidade

 

Há um tempo atrás a maioria das empresas mantinha projeção de expansão programadas e limitadas, se imaginava uma estrutura final para as aplicações que sempre iria atender as necessidades por um longo tempo. Entretanto, o cenário atual possibilita cada vez o crescimento rápido e volátil de qualquer negócio, com isso se torna essencial criar soluções que se adaptem rapidamente aos novos patamares utilizando a escalabilidade para gerar estabilidade aos seus usuários.

Mas o que é escalabilidade? É basicamente a condição de uma solução de lidar com uma quantidade crescente de trabalho, minimizando o tempo de inatividade e erros, ou seja, é garantir que sempre seja possível atender a todos usuários com uma experiência de qualidade.

Existem dois tipos de escalabilidade, a mais utilizada é Dimensionamento (conhecido como horizontal), esse tipo é quando aumentamos o número de máquinas ou instâncias onde a aplicação está instalada, oferecendo através de balanceamento a distribuição de processamento de carga evitando a sobrecarga num único ponto. O outro é a Ampliação (conhecido como vertical), é quando efetuamos o aumento da capacidade computacional da máquina ou instância, para garantir que sempre haja recurso para processar as requisições. Não há uma opção ideal, é necessário a avaliação do cenário para definição de uma solução, e ainda pode ser considerada uma terceira opção que é a utilização de uma mistura entre as duas opções.

Além do fator mais importante, a disponibilidade da aplicação, o custo é outro fator que com a utilização da escalabilidade é beneficiado, isso porque através de uma estrutura altamente volátil podemos criar regras automatizadas de modificação de recursos que irão manter o ambiente do tamanho necessário para cada momento, reduzindo o investimento desnecessários, ou seja, estamos pagando pelo que está sendo consumido e não pelo achamos que será consumido.

Outro fator beneficiado também é a segurança, com a escalabilidade, a redundância e aumento de recursos de forma automática garante a disponibilidade e segurança dos dados. Falhas de hardware e gargalos que podem danificar os dados são corrigidos de forma praticamente automática.

A escalabilidade é cada vez mais um diferencial vital para qualquer solução, desde as monolíticas chegando nos micro serviços, por isso é fundamental fazer parte da concepção desde o início, porque dessa forma será possível garantir, disponibilidade, estabilidade, versatilidade, segurança e direcionamento de recursos.


Marcelo Goberto de Azevedo 

Arquiteto na GFT Brasil

//marcelogoberto.com.br


terça-feira, 24 de março de 2020

Principais Motivos para Adoção de Desenvolvimento Guiado por Teste (TDD)




Cada metodologia tem suas vantagens para adoção, a TDD (Test-Driven Development ) oferece uma técnica simples que pode garantir a qualidade de entrega e principalmente a segurança nas alterações realizadas no código após sua implementação.

A técnica dessa metodologia é escrever os testes primeiro e depois codificar, dessa maneira você irá se preocupar em pensar em cenários de aceitação, como entrada e saída para atender requisitos de funcionalidade, antes de efetivamente implementá-los. 

Tudo Terá um Teste Afinal

Tudo que precisa ser criado deverá começar pelo teste, para que possamos criar os testes, precisamos ter pleno entendimento da implementação para escrever os testes que precisaram ser validados para atender os requisitos. Outro ponto, é que os testes são evolutivos, devemos escrever um teste, efetuar a implementação, verificação seu resultado positivo, melhorar o código, testar o resultado, escrever um novo teste, implementar a solução, verificar seu resultado e assim por diante. Se durante o processo de uma nova implementação ou melhoria algo quebrar, os testes anteriores vão apontar e tudo deverá ser validado antes de darmos continuidade.

Redução de Código Complexos

Muitas vezes escrevemos códigos que acabam ficando imutáveis, ou seja, uma vez que funcionou ficamos com receio de alterá-lo e acabar quebrando o que está funcionando. Tendo uma fundação baseada em testes, podemos tranquilamente analisar o código para efetuar sua refatoração para simplificá-lo ou ainda performá-lo, sem a preocupação que ao final ele poderá quebrar algo, porque os testes vão garantir sua aderência. Outro fator positivo é que os testes não serão escritos para atender a codificação e sim cenários de negócios, como consequência teremos mais códigos testáveis.

Simplicidade em Primeiro Lugar

Todo desenvolvedor tem o deve ter como parte principal do seu trabalho planejar a implementação, e sem dúvida alguma sendo feito esse planejamento da forma mais simples e objetiva possível o resultado será praticamente a perfeição, já dizia Leonardo da Vinci, "Simplicidade é o último grau de sofisticação".  Quando definimos iniciamos pelo teste que precisa ser validado, temos que pensar na implementação mais simples que atende os requisitos e caso a solução não seja simplista no primeiro momento, podemos melhorá-la num próximo ciclo garantido a qualidade da execução.

Código Refatorados com Segurança

Muitas vezes temos que alterar códigos de terceiros, ou os nossos próprios, e não se sentimos confortáveis em garantir que nada irá parar de funcionar, contudo, se essa rotina contiver testes que foram escritos exclusivamente pensando em atender os requisitos de negócio, podemos tranquilamente efetuar alterações e aplicar os testes para validá-los, com isso qualquer alteração fica praticamente segurança em fornecer a garantia de sucesso na sua implementação.

Basicamente, o ciclo do TDD é escreva o teste, implemente um código para fazer o teste ser válido e melhore o código sem quebre nenhum teste. Repita esse ciclo até que sinta-se todos os requisitos foram testados e atendidos.

Para um cenário onde um desenvolvedor deve garantir seu produto final, ou seja, a codificação de uma necessidade, essa metodologia oferece muitos fatores positivos para facilitar a entrega e também garantir a qualidade, é um paradigma começar por algo que não seja o código, porém após um período de adaptação você verá como é mais simples e funcional utilizar o método Test-Driven Development (TDD).


Marcelo Goberto de Azevedo
Arquiteto na GFT Brasil
//marcelogoberto.com.br