Open Source: trabalhando com programação reativa e Azure CosmosDB

A Microsoft há muito tempo tem demonstrado seu interesse em trabalhar em conjunto com tecnologias Open Source. Com a Microsoft você tem a liberdade de escolher a tecnologia com a qual você se sinta mais confortável para desenvolver. Veja aqui exemplos de como essas tecnologias trabalham simbioticamente com tecnologias Microsoft e produzem um resultado excelente. 

Um paradigma de programação bastante interessante para ter em vista é o de programação reativa. Mas por que é importante aprender programação reativa? O principal ponto é que a demanda do consumidor final mudou e a maior parte dos acessos se dá por meio do consumo de aplicações móveis. 

Aplicativos comumente funcionam baseados em uma arquitetura de serviços que são alimentados por informações dos usuários. Este comportamento, chamado reativo, pode gerar um considerável aumento nos custos relacionados à infraestrutura da aplicação. Esse novo paradigma impacta não somente o modo como as aplicações são desenvolvidas, mas também a cultura do time de desenvolvimento. 

Fica fácil observar esta mudança na forma como a aplicação é desenvolvida e na ideia da mudança de cultura do time de desenvolvimento quando se fala em DevOps e microsserviços. Em DevOps, é necessário entender que a cultura aplicada preza pela necessidade de um melhor gerenciamento de toda a estrutura de desenvolvimento, principalmente em um cenário baseado em microsserviços. 

Um rollback, por exemplo, não deve ser aplicado a todos os serviços apenas porque um dos serviços não está funcionando como esperado. É necessário corrigir somente aquele que agiu de forma inesperada e manter os demais e, por consequência, toda a aplicação funcionando. Esta ação, tão comum em entregas contínuas, é também coberta pelas tecnologias da Microsoft. Se você gosta de manter a sua liberdade de escolha e quer que suas aplicações rodem em qualquer plataforma, você pode testar o App Service que facilita a criação, implantação e dimensionamento da sua aplicação. Independentemente da linguagem de programação que você escolher, PHP, Ruby, .NET, Node.js ou Python. Além disso, você também pode contar com integração com o github e Docker. 

Pensando na mentalidade da equipe, é preciso entender que elas passam a trabalhar como os microsserviços dentro de uma cultura DevOps. Uma equipe precisa ter visibilidade do desenvolvimento de outra, assim, evita-se a criação de códigos duplicados e melhora-se o processo de deploy, desde que se pense em deploy automático, rápido e que não impacte negativamente nos outros serviços. 

Atualmente é quase impossível falar de DevOps sem falar de contêineres. Esta tecnologia também se aplica facilmente a este cenário. Automatização e orquestração de contêineres é fundamental para que todo o seu ambiente permaneça ativo, com alto desempenho e confiável.  

Antes que você tenha dúvidas, sim, a Microsoft também está alinhada com esta tecnologia. Seja Docker, Kubernetes ou Marathon, o Azure Container Service facilita a orquestração de contêineres, além de possibilitar que você trabalhe com qualquer API Open Source. 

Para atender às demandas de utilização das aplicações e manter uma experiência do usuário adequada, é preciso trabalhar constantemente com multi-threads, e é comum precisar que essas threads façam uso de eventos. Para este cenário, uma opção é o Azure Functions, pois facilita a criação da sua aplicação. O Azure Functions é baseado em serverless e orientado a eventos. 

Por ser focado em eventos e em processos não bloqueantes, o framework Node.Js pode ser uma excelente opção para esse caso, por não depender de um retorno do banco de dados ou da leitura de um arquivo. E pensando em banco de dados, uma ideia interessante é trabalhar com o Azure CosmosDB. 

O Cosmos funciona muito bem nesse cenário pois é um serviço de banco de dados multimodelo, ou seja, ele permite que você use chave-valor, grafos, família de colunas e dados de documentos em serviços. O Azure Cosmos DB indexa automaticamente todos os dados e permite que você use sua API favorita, incluindo SQL, JavaScript, Gremlin, MongoDB, Apache Cassandra e o Armazenamento de Tabelas do Azure para acessar seus dados. 

Além disso, o banco foi projetado para ser facilmente escalável. Então, se sua aplicação é baseada em microserviços, Devops, roda na nuvem e constantemente precisa estar focada na escalabilidade, o Azure CosmosDB é uma ideia interessante para se trabalhar. Quer saber mais sobre o assunto? Confira essas vídeoaulas gratuitas e aprenda a desenvolver uma aplicação utilizando React, Node, Express e CosmosDB.


Autor: Microsoft Tech