No dia 27 de Outubro de 2008, durante um evento para desenvolvedores em Los Angeles, EUA, a Microsoft lançou oficialmente aquele que se tornaria um dos principais produtos e apostas da companhia: a plataforma Azure. Já se foram quase 4 anos e a plataforma se consolidou dia após dia nesse período.
Hoje a plataforma disponibiliza diversos recursos e serviços que atendem a demandas de praticamente todo o mercado. Muito embora a plataforma já disponibilize um importante “value proposition” para boa parte das empresas, a Microsoft não parou no tempo e trabalha em ritmo acelerado no sentido de disponibilizar um modelo cada vez mais seguro, confiável e robusto para a plataforma.
Existem muitos bons textos apresentando “overviews” da plataforma Azure internet a fora e este pode parecer “mais do mesmo” para alguns. Particularmente penso de forma diferente. Defendo a ideia de que, quanto mais textos, vídeos, podcasts (conteúdos de forma geral) forem gerados sobre determinado assunto, mais a comunidade ganha. Logo, aqui estou com mais uma série de artigos – desta vez, sobre a plataforma Azure.
Mais uma série?
Neste ponto você pode estar se perguntando: mas Fabrício, mais uma série? Você tem várias sem terminar em seu site e vai começar mais uma?
O fato de possuir algumas séries em andamento não impede com que novas possam ser criadas (there are no rules). Particularmente, gosto de escrever sobre os assuntos quando tenho vontade, daí esta forma não-linear de escrever artigos. Os artigos das demais séries serão escritos à medida que a vontade deste que vos escreve permitir.
Nesta série pretendo apresentar diversos aspectos da plataforma Azure. Pretendo iniciar com aspectos gerais da plataforma e ir “aprofundando” nos recursos a medida em que se fizerem necessários.
A plataforma Azure
Windows Azure pode ser definido de forma “bem resumida” como: a plataforma de nuvem (cloud computing) proposta pela Microsoft. A palavra “plataforma” não foi escolhida por acaso. Ela passa a ideia de completude, amplitude e muitos recursos, exatamente o que é o Windows Azure. Trata-se de uma rede de computadores de alta performance distribuídos estrategicamente ao redor do mundo e mantida pela Microsoft.
Hoje Windows Azure é uma plataforma que permite a publicação de aplicações robustas (que podem ser escritas em diferentes linguagens) adicionando a elas um completo conjunto de recursos desejáveis tanto para desenvolvedores autônomos quanto para empresas de qualquer porte.
Abaixo listo as principais características proporcionadas pelo modelo de computação em nuvem e pelo Windows Azure:
- Alta disponibilidade: uma das premissas do modelo de computação em nuvem é: os recursos da plataforma devem estar disponíveis e acessíveis o máximo de tempo possível (tendendo a 100%). A plataforma Azure entrega através de seu contrato de prestação de serviços um uptime de 99.95%. A plataforma é resiliente, o que por inércia faz com que ela seja tolerante a falhas, gerando o uptime mencionado.
- Uma plataforma aberta: Windows Azure é uma plataforma pensada para ser multi-tecnologias. Isto significa que, quem escolhe a linguagem/tecnologia das aplicações é o cliente e não a Microsoft. Como passo seguinte, a plataforma Azure atua como um “host automatizado” das aplicações.
- Armazenamento “infinito”: o termo “infinito” em computação não existe de fato entretanto, diz-se que a capacidade de armazenamento do Windows Azure é infinita porque nunca faltará espaço para seus clientes, haja o que houver.
- Elasticidade: Windows Azure é uma plataforma 100% automatizada o que significa que além de disponibilizar os recursos mencionados anteriormente, ela encapsula a complexidade de administração e auto-provisionamento de recursos. Os recursos são alocados e sub-alocados conforme a necessidade.
- Recursos avançados: para complementar o set de recursos disponíveis atualmente na plataforma Azure, é preciso mencionar alguns aspectos adicionais. São eles:
- CDN: solução de cache distribuído ao redor do mundo. O objetivo principal é reduzir a latência de comunicação entre as aplicações.
- HPC (High Performance Computing): como o próprio nome sugere, é um serviço de computação de alto desempenho. Neste modelo é cobrada a hora de computação de acordo com o tipo de servidor escolhido. Exemplos de aplicações comumente encontradas execução em HPC são aquelas que utilizam código assíncrono e multithreads.
- SQL Azure, Azure Tables e Blogs: recursos para armazenamento de dados disponíveis no Windows Azure. SQL Azure é o modelo relacional de armazenamento de dados já tradicionalmente conhecido de qualquer desenvolvedor. SQL Azure foi desenvolvido com os mesmos recursos do SQL Server tradicional assim, é possível executar praticamente todas as operações já tradicionalmente realizadas no ambiente on-premises. O Windows Azure disponibiliza também um modelo de armazenamento de dados não estruturados, chamado de Azure Tables. Profissionais acostumados a trabalharem com NoSQL têem suas necessidades atendidas com este modelo. Finalmente, como última opção, mencionamos o modelo de Blobs. A ideia aqui é proporcionar um ambiente dedicado ao armazenamento de arquivos gerais em formato binário. Em artigos futuros nesta série, trataremos de cada feature apresentada em detalhes.
- Service Bus: recurso que possibilita a integração entre diferentes sistemas através de serviços diversos. Service Bus pode ser entendido como um “hub de integração”.
- Windows Azure Connect: recurso responsável por garantir a qualidade conexão entre a nuvem e o(s) ambiente(s) on-premise(s) ao(s) qual(is) ocorrerá esta(s) conexão(es).
- Active Directory: ao sofrer consideráveis melhorias em diversos aspectos o Access Control Service (ACS) tornou-se o que hoje é conhecido como Windows Azure Active Directory. Em linhas gerais, WAAD é um hub dedicado a disponibilização de serviços para autenticação de usuários, seja via AD, Facebook, Twitter, ou o que for.
- Media Services: recurso dedicado a produção e compartilhamento de recursos de mídia (vídeo e audio).
A Figura 1 apresenta uma visão geral da plataforma.
Figura 1. Visão geral do Windows Azure
Pague pelo que utilizar
Windows Azure implementa o conceito de pagamento/utilização de recursos sob demanda. A pergunta cuja resposta justifica a implementação do modelo é simples: se não utilizo todos os recursos alocados todo o tempo, porque então tenho que pagar por eles? Com Windows Azure você paga apenas pelos recursos utilizados e ponto.
A característica “pague pelo que utilizar” traz diversas vantagens em relação ao modelo tradicional para host de aplicações. A primeira delas é a economia na alocação de recursos uma vez que não há sub utilização dos mesmos. Outra característica é a redução do custo de manutenção de datacenters locais. Diversas outras vantagens poderiam ser apresentadas neste ponto.
Onde utilizar?
Muito embora tenhamos apresentado o Windows Azure como uma plataforma (e realmente é) completa para desenvolvimento e “host” de aplicações, se olharmos para o conceito de computação em nuvem, podemos ver de forma clara diferentes modelos de utilização da mesma.
Os cenários que se apresentam favoráveis a adoção/utilização da computação em nuvem são muitos. Neste ponto faremos uma análise dos modelos de negócios existentes e em quais o Windows Azure pode se tornar uma opção rentável para empresas e desenvolvedores de forma geral.
- SaaS: a computação em nuvem abre muitas possibilidades de negócios. Um dos modelos apresentados neste novo conjunto de possibilidades é a comercialização de “Software as a Service” (ou em português, Software como Serviço). A ideia básica é a de comercializar as aplicações construídas por você ou sua empresa como um serviço (através de assinaturas por períodos). Por estarem hospedadas na plataforma Azure, a aplicação suporta grandes cargas de requisições e dados. É mais barato para empresas terceiras que contratam, mais simples de manter a aplicação para quem desenvolve, etc.
- Aplicações web: se sua aplicação utiliza a web como ambiente de execução, Windows Azure é o ambiente adequado para ela pois proporciona crescimento sob demanda e alta performance com dados e arquivos redundantes em diferentes locais do mundo.
- Big Data: Windows Azure disponibiliza infraestrutura resiliente, altamente disponível e com espaço de armazenamento “infinito”. Grandes empresas possuem problemas para gerenciar grandes massas de dados e não só isso, problemas ainda maiores quando informações necessitam ser extraídas destes dados. Com Windows Azure, todas as ferramentas e características necessárias para suportar grandes massas de dados são disponibilizadas.
- Jogos: Windows Azure disponibiliza um ambiente extramente favorável a construção de jogos. Através de diversos recursos como HPC, por exemplo, jogos podem hospedar o núcleos de processamento de jogos em rede ou ainda, hospedar jogos em redes sociais.
- Mobile: construa aplicações autodimensionáveis e escaláveis que podem ser facilmente consumidas em plataformas móveis como Windows Phone, iOS (iPod, iPhone e iPad) e Android.
Conclusões
Analisando-se toda a pilha de recursos proporcionados pela plataforma Windows Azure e sua alta aderência as demandas do mercado, é possível afirmar que o futuro da plataforma Azure no Brasil e no mundo é extremamente favorável.
Para desenvolvedores ela acrescenta valor ao processo de construção de aplicações que privilegiam arquiteturas robustas ou mesmo aplicações mais simplistas. A plataforma Azure tira do desenvolvedor a responsabilidade de cuidar de aspectos técnicos relacionados a infraestrutura entregando um ambiente robusto, auto-escalável, resiliente e em função disso, tolerante a falhas.
Pingback: Windows Azure: criando as famosas “startup tasks” – Fabrício Sanchez
Pingback: Windows Azure ROI: Entenda o que sua empresa ganha com PaaS – Fabrício Sanchez