segunda-feira, 23 de novembro de 2015

Bem vindo à Infraestrutura Ágil






Meu último trabalho foi premiado no Conserpro. O título era: "Processamento distribuído de eventos complexos, utilizando microsserviços e servidores imutáveis, baseados em software livre", um pouco longo, mas demonstra exatamente o princípio da "Infraestrutura Ágil", que eu quero demonstrar.

Infraestrutura Ágil é o futuro do Devops! Veja aqui um exemplo prático, que foi o nosso trabalho apresentado.





O trabalho recebeu o terceiro lugar, em um evento extremamente disputado, concorrendo com vários trabalhos igualmente inovadores.

Coautores: 

  •  Francisco Machado das Chagas Rodrigues;
  • Humberto de Mello Pacheco.

Infraestrutura ágil

Todo o arcabouço tecnológico e prático para facilitar o desenvolvimento ágil:
  • Ferramentas e técnicas de Engenharia de Software;
  • Melhores práticas de processo e gestão;
  • Infraestrutura operacional.
Se você quiser saber mais sobre infraestrutura ágil, confira o vídeo da palestra que eu ministrei pelo CISL, e baixe os SLIDES.

Um estudo de caso

Os problemas de Governo são, geralmente, formados por vários eventos simples, cuja agregação e associação, podem levar a detecção de eventos complexos. Situações de Segurança Pública, Mobilidade Urbana e Saúde, por exemplo, podem ser melhor tratadas se o Governo conseguir coletar, agregar e processar esses milhões de pequenos eventos, que ocorrem a todo momento.

Porém, algumas questões surgem:
  • Como receber e armazenar tantos eventos? 
  • Como agregar de maneira eficiente?
  • Como manter alta disponibilidade, de maneira sustentável?
As soluções costumeiras podem até funcionar, mas elevam os custos de qualquer investimento destes até a estratosfera, enchendo o bolso dos fornecedores e esvaziando o nosso. Sim, o nosso bolso, afinal de contas, somos nós, cidadãos, que pagamos a conta.

Detecção de problemas baseados em sintomas

A Saúde é uma das áreas mais importantes de qualquer Governo, e a prevenção de epidemias e detecção de possíveis problemas de saneamento básico são ações prioritárias. Porém, nem sempre essas ações são bem direcionadas, resultando em abordagem ineficiente.

Pensamos em desenvolver um mecanismo de alerta para proliferação de sintomas, como: Dor de cabeça, diarreia ou febre. Sempre que um paciente for atendido em um hospital, seja público ou particular, o médico utilizaria um Smartphone para comunicar os sintomas apresentados. O sistema permite a recepção e agregação instantâneas, fornecendo gráficos atualizados por período e região.


Big Data

Big Data é uma nova maneira de enxergar os dados, estruturados ou não, em conjunto com técnicas para sua agregação.

É claro que os "espertalhões" do Mercado já se apossaram desse termo, criando miríades de produtos, frameworks e "soluções" mirabolantes, cujo único propósito é fazer você, as empresas e o Governo gastarem mais e mais.

Nós já demonstramos AQUI como qualquer pessoa ou empresa pode realizar operações de Big Data a baixo custo.

Porém, podemos pensar em uma grande operação de Big Data para resolver problemas de Governo: 
  • Big Data envolve operações de agregação;
  • Operando em dados estruturados ou não;
  • Com operações de agregação, por exemplo: MapReduce;
No nosso exemplo, os sintomas são recepcionados e armazenados em um banco MongoDB. De tempos em tempos, um microsserviço executa operações de MapReduce nesses dados coletados, permitindo a geração de gráficos.


Problemas

Parece simples, não? Porém, todo profissional de TI começaria a pensar nos problemas deste sistema:
    • Como dispor de um parque computacional que suporte a demanda?
    • Como dispor de terabytes de armazenamento?
    • Como arcar com o alto custo envolvido, o que torna proibitivo para soluções sociais?

    A solução está em um alto grau de processamento distribuído, que permita executar os serviços do sistema em vários datacenters, ou mesmo utilizando equipamentos de baixo custo. Eis a solução que enxergamos:

    CEP Distribuído (Processamento de Eventos Complexos)
    • Processamento de Eventos Complexos (CEP);
    • MapReduce utilizando MongoDB;
    • Arquitetura de microsserviços;
    • Múltiplas instâncias, em Containers Imutáveis (Docker);
    • Coordenação de serviços distribuídos (ZooKeeper);
    • Curadoria com escalabilidade elástica (projeto ServKeeper;
    • Código disponível em: github.com/cleuton/servkeeper;







    Utilizamos arquitetura de microsserviços, usando Dropwizard: Um para receber e armazenar os dados de eventos de sintomas e fazer agregações, e outro para coordenar o processamento distribuído. Uma aplicação Web simples retorna um código javascript capaz de gerar gráficos com os resultados (Chart.js).

    Para fazer balanceamento de carga e coordenar as várias instâncias dos microsserviços, utilizamos o Apache Zookeeper, através do nosso componente ServKeeper, que também usa o Docker para subir containers imutáveis, gerados através do processo de Entrega Contínua com o Jenkins. Um Job do Jenkins roda periodicamente, analisando a quantidade de requests e fazendo escalabilidade para cima (criando mais instâncias) ou para baixo (deletando instâncias).

    O sistema funciona desta forma:
    • Os sintomas são recebidos e armazenados por uma instância de um microsserviço, fornecida pelo ServKeeper;
    • Caso a quantidade de requisições seja muito grande, o ServKeeper escala automaticamente a quantidade de instâncias, tanto para cima como para baixo;
    • Sob demanda, o sistema efetua uma operação de Big Data (MapReduce) e gera gráficos de agregação.Também feito por um microsserviço escalado automaticamente;
    Eis um exemplo de consulta e geração de gráficos:






    O futuro

    A solução DCEP se mostrou escalável e econômica, com resultados surpreendentes. Ela pode ser aplicada a qualquer área de Governo, como: Mobilidade urbana e Segurança, por exemplo. Imagine rastrear todas as movimentações de passageiros, verificando origens e destinos? Ou então, analisar o tráfego utilizando as câmeras das prefeituras e tomar medidas proativas?

    O uso do OpenCV permite contar carros:





    Desde já nos colocamos à disposição de qualquer nível de Governo para fornecer gratuitamente o código e as soluções.


    Aguarde


    Em breve, faremos Webinars e palestras sobre esta arquitetura de Infraestrutura ágil.