A fábrica de Microservices

14 de março de 2019 Por Ramon Durães

O movimento da transformação digital tem provocando uma necessidade de renovação nas empresas e como elas fazem negócio. O software e a tecnologia tornaram-se um componente estratégico demandando a modernização das aplicações.

As mudanças estão ocorrendo em uma velocidade tão grande que os profissionais e empresas que não entenderem esse novo fluxo digital de trabalho não vão conseguir se posicionar. Não é difícil encontrar profissionais tentando evitar a inovação pela dificuldade de se reinventar acreditando na sobrevivência em sua zona de conforto e esse é um dos maiores desafios nas empresas atuais.

A inovação não é mais um item opcional. Se a área de tecnologia deixar de responder vai surgir novas iniciativas como “TI BIMODAL” para ocupar o espaço. Na minha opinião o único caminho é buscar entender as limitações atuais, desafios de negócio e se atualizar para se posicionar desenhando um plano de modernização por estágios.

As aplicações modernas precisam atender a princípios fundamentais de arquitetura de software e engenharia de aplicação que habilitem iniciativas como:

  • Padronização e desacoplamento
  • Qualidade de software
  • Performance
  • Resiliência e tolerância a falhas
  • Alta estabilidade
  • Monitoramento e Observabilidade

O universo de aplicações baseadas na arquitetura de Microservices viabiliza respostas rápidas aos novos cenários de negócio como independência e segurança para alterar um fluxo de negócio sem prejudicar toda a operação ou simplesmente escalar apenas o que está sendo mais demandado no momento. 

A independência entre aplicação e banco de dados é outro passo importante na maturidade das suas aplicações viabilizando cenários de alta escalabilidade. Esse tema sempre rende profundas conversas sobre as abordagens de inconsistência eventual tratados no teorema de CAP para quebra dos paradigmas tradicionais pelo fato principal da separação de cada Microservices com o seu domínio.

Durante os últimos 20 anos acompanhando as discussões em projetos de software me deparei com cenários comuns como deixar de atender uma demanda de uma área de negócio por que o banco de dados não aceita ou ao realizar uma modificação em uma área e quebrar na outra ou o negócio não escalar pelo fato do custo caro e lento de processar negócio no banco de dados.

Na 2PC Nós adotamos nos últimos 05 anos a abordagem de Domain Driven Design (DDD) para aproximar as equipes de software com as áreas de negócio usando uma linguagem natural para comunicação e definição das fronteiras dos domínios de negócio que são fundamentais na separação das responsabilidades dos Microservices.

O termo Domain Driven Design (DDD) tornou-se popular pelo Eric Evans em seu livro ” Domain-Driven Design: Tackling Complexity in the Heart of Software ” e anos depois no livro “Implementando Domain Driven Design” por Vernon Vaughn que complementou numa visão mais próxima do dia a dia.

A decomposição do negócio é um dos passos fundamentais justamente por definir o escopo e fronteiras de cada serviço no lugar de sair criando métodos individuais aleatórios em projetos de API’s. 

Ao desenvolver um novo projeto de Microservices você estará habilitando as suas aplicações para conviverem em ambientes de computação distribuída e principalmente assíncronas tendo um processo que pode executar em várias instâncias garantindo a disponibilidade, escalabilidade e continuidade.

As ofertas de containers usando Docker, Kubernetes e plataformas de nuvem como o Azure da Microsoft, plataformas de API’s, Cache e plataformas de desenvolvimento como o Visual Studio e .NET Core consolidam a infraestrutura base para o desenvolvimento ágil de aplicações modernas.

Em complemento as estratégias é fundamental orquestrar a gestão dos Microservices usando um ciclo de DevOps / SRE integrado para controlar o planejamento ágil, gestão do código fonte, Continous Integration (CI), Contrinous Delivery (CD), Monnitoring e Observability .

As empresas dependem de “software” como estratégia de negócio. Quanto mais rápido conseguirem implantar e escalar mais sucesso nos projetos. Seja um agente de transformação digital de aplicações.

Até a próxima !! Participe nos comentários.

Para conversar sobre estratégia e modernização de aplicações em sua empresa visite http://2pc.software

[],

Ramon Durães

CEO, 2PC