7 bons motivos para mudar para microsserviços
E cinco razões pelas quais você pode não ter sucesso na abordagem
A adoção de microsserviços aconteceu em ondas, desde que o termo foi criado em 2011. E agora, os microsserviços estão prestes a se tornarem mainstream. De cordo com uma pesquisa recente da Nginix, 36% das empresas pesquisadas estão usando microsserviços, com outros 26% na fase de pesquisa. Mas o que é exatamente a arquitetura de microsserviços, e que benefícios pode trazer dada a cultura, as habilidades e as necessidades de sua organização?
Este artigo da CIO.com aborda sete razões pelas quais você deve considerar microsserviços para o seu próximo projeto de desenvolvimento de aplicativos – e cinco obstáculos que podem fazer com que a experiência não seja tão bem sucedida quando o esperado.
Variante da arquitetura orientada a serviços (SOA), os microsserviços são um estilo arquitetônico em que as aplicações são decompostas em serviços acoplados, oferecendo modularidade crescente, tornando as aplicações mais fáceis de desenvolver, testar, implantar e, o mais importante, mudar e manter.
Não há dúvida de que sua organização ainda está amarrada com aplicativos desenvolvidos na era monolítica, quando as arquiteturas centralizadas e multi-camadas foram usadas para criar aplicativos inteiros em uma única base de código. Esse modelo de serviço ao cliente era uma excelente opção quando os desktops governavam a TI. Mas com a ascensão de dispositivos móveis e a nuvem, os dados de back-end devem estar sempre disponíveis para uma ampla gama de dispositivos, e essa arquitetura monolítica não o tornará fácil para você, como sempre que uma mudança é feita. O aplicativo deve ser atualizado, abrindo a possibilidade de novos erros sempre que você tentar adicionar um recurso ou ajustar para um novo contexto. Pior ainda, com tudo ligado a uma única base de código, você não pode escalar uma função ou serviço específico, já que há a necessidade de expandir toda a aplicação, levando a custos muito maiores.
Com microsserviços, seu código é dividido em serviços independentes que são executados como processos separados. A saída de um serviço é usada como uma entrada para outro em uma orquestração de serviços independentes. Um modelo especialmente útil para empresas que não possuem uma ideia pré-definida da variedade de dispositivos que irão suportar seus aplicativos. Ao ser agnóstico de dispositivos e plataformas, os microsserviços permite que as empresas desenvolvam aplicativos que proporcionem experiências de usuário consistentes em uma variedade de plataformas, abrangendo os ambientes web, móveis, de IoT, wearables e rastreadores. Netflix, PayPal, Amazon, eBay e Twitter são apenas algumas empresas que usam microsserviços.
O Walmart Canadá, por exemplo, mudou toda a sua arquitetura de software para microsserviços em 2012. A empresa, que não conseguiu lidar com os 6 milhões de páginas vistas por minuto que estava recebendo no momento, obteve resultados instantâneos com um aumento significativo em sua taxa de conversão noturna. O tempo de inatividade foi minimizado, e a empresa conseguiu substituir o hardware caro com servidores x86 virtuais mais baratos, resultando em uma economia global de custos entre 20% a 50%.
Mesmo que sua organização não seja do tamanho de um Walmart ou uma Amazon, os microsserviços ainda podem oferecer um ótimo valor.
Aqui estão alguns dos benefícios que sua organização irá desfrutar ao mudar para microsserviços.
1 – Aumento da resiliência
Com microsserviços, toda a sua aplicação é descentralizada e desacoplada em serviços que atuam como entidades separadas. Ao contrário da arquitetura monolítica, em que uma falha no código afeta mais de um serviço ou função, há um impacto mínimo em caso de falhas. Mesmo quando vários sistemas são reduzidos para manutenção, seus usuários não perceberão isso.
2 – Escalabilidade aprimorada
A escalabilidade é o aspecto-chave dos microsserviços. Como cada serviço é um componente separado, você pode expandir uma única função ou serviço sem ter que dimensionar todo o aplicativo. Os serviços críticos para o negócio podem ser implantados em vários servidores para aumentar a disponibilidade e o desempenho de um serviço sem impactar o desempenho de outros serviços.
3 – Capacidade de usar a ferramenta certa para a tarefa certa
Com microsserviços, você não precisa se amarrar a um único fornecedor. Em vez disso, você tem a flexibilidade de usar a ferramenta certa para a tarefa certa. Cada serviço pode usar seu próprio idioma, estrutura ou serviços auxiliares e ainda se comunicar facilmente com os outros serviços em sua aplicação.
4 – Time to market mais rápido
Como microsserviços funcionam com serviços acoplados, você não precisa reescrever sua base de código inteira para adicionar ou modificar um recurso. Você faz alterações apenas em um serviço específico. Ao desenvolver aplicativos em incrementos menores que são independentemente testáveis e implantáveis, você pode disponibilizar sua aplicação e serviços mais rapidamente.
5 – Depuração e manutenção mais fáceis
A arquitetura de microsserviços também facilita a depuração e teste de aplicativos. Com módulos menores passando por um processo contínuo de teste e entrega, sua capacidade de fornecer aplicativos sem erros é muito melhorada.
6 – ROI melhorado com TCO reduzido
O uso de microsserviços também permite otimizar recursos. Várias equipes podem trabalhar em serviços independentes, permitindo que você implante mais rapidamente – e mude mais facilmente quando você precisa. O tempo de desenvolvimento é reduzido e o código de suas equipes será mais reutilizável. Ao desacoplar os serviços, você não terá que operar em máquinas caras. Máquinas básicas x86 irão fazê-lo. A maior eficiência dos microsserviços não só reduz os custos de infraestrutura, mas também minimiza o tempo de inatividade.
7 – Entrega contínua
Ao contrário das aplicações monolíticas, em que equipes dedicadas trabalham em funções discretas, como UX, banco de dados, lógica do lado do servidor e camadas tecnológicas, a arquitetura de microsserviços faz uso de equipes multifuncionais para lidar com todo o ciclo de vida de uma aplicação em um modelo de entrega contínua. Quando os desenvolvedores, as operações e as equipes de teste trabalham simultaneamente em um único serviço, teste e depuração tornam-se fáceis e instantâneos. Com esta abordagem de desenvolvimento incremental, o código é continuamente desenvolvido, testado e implantado, e você pode usar bibliotecas existentes em vez de reinventar a roda.
Mas microserviços não são para todas as empresas
Empresas que abraçaram microsserviços tiveram benefícios significativos, e as organizações que ignoram esse fato podem ser deixadas para trás. Mas mesmo parecendo promissora, nem todas as empresas podem capitalizar a arquitetura. Certifique-se de que sua empresa é capaz de gerenciá-la.
Aqui estão algumas advertências organizacionais.
1 – Você precisará estar equipado para provisionamento rápido e implantação de aplicativos
O pessoal deve poder providenciar recursos instantaneamente para acompanhar o ritmo necessário para aproveitar ao máximo os microsserviços. Se demorar dias ou meses para fornecer um servidor, você terá sérios problemas. Da mesma forma, você deve rapidamente implantar novos serviços ou aplicativos.
2 – Um monitoramento robusto é obrigatório
Como cada serviço depende do seu próprio idioma, plataforma e API, e você estará orquestrando várias equipes trabalhando simultaneamente em diferentes entidades do seu projeto de microsserviços, você precisa de um monitoramento robusto para gerenciar efetivamente toda a infraestrutura, porque se você não fizer isso, pode ficar impossível rastrear problemas, como saber quando um serviço falhar ou uma máquina cair.
3 – Você deve abraçar a cultura DevOps
Para trabalhar em equipes multifuncionais, sua empresa deve incorporar práticas e cultura DevOps. Em uma configuração tradicional, os desenvolvedores estão focados em recursos e funcionalidades, e a equipe de operações está no alcance de desafios de produção. Em DevOps, todos são responsáveis pelo provisionamento de serviços – e as falhas.
4 – Os testes podem ser complexos
Com microsserviços, o teste não é direto. Cada serviço possui suas próprias dependências, algumas diretas, outras transitivas. À medida que os recursos são adicionados, novas dependências aparecerão. Manter controle de tudo isso rapidamente torna-se impraticável. Além disso, à medida que seu número de serviços aumenta, a complexidade aumenta também. Quer se trate de erros de banco de dados, latência de rede, problemas de cache ou indisponibilidade de serviço, sua arquitetura de microsservices pode ser capaz de lidar com um nível razoável de falhas. Assim, o teste de resiliência e a injeção de falhas são indispensáveis.
5 – Você precisa projetar com falhas em mente
Projetar o fracasso é essencial. Você deve estar preparado para lidar com vários tipos de falha, como tempo de inatividade do sistema, serviço lento e respostas inesperadas. Aqui, o balanceamento de carga é importante, mas ter um plano B é outra opção importante. Quando ocorre uma falha, o serviço com problemas ainda deve ser executado em uma funcionalidade degradada sem afetar demais todo o sistema.
Fonte: CIO
Texto original:
http://cio.com.br/tecnologia/2018/06/15/sete-bons-motivos-para-mudar-para-microservicos/