Como criar sistemas nas nuvens com Spring Cloud

Veja esse artigo e aprenda a desenvolver aplicações orientadas a serviços nas nuvens utilizando Spring Cloud.

Fique por dentro
Neste artigo vamos aprender o que é o Spring Cloud e seu relacionamento com o framework Spring, além de entendermos as principais características para o desenvolvimento de soluções na nuvem.

Para isso, abordaremos o que é PaaS (Platform as a Service) e analisaremos na prática como são utilizadas as APIs e abstrações do Spring Cloud e o quanto ele facilita a integração das nossas aplicações com as diversas plataformas e ambientes de computação em nuvem.

Computação em Nuvem, ou Cloud Computing, já se tornou um termo amplamente conhecido na indústria de tecnologia da informação. Muito já foi especificado e debatido a respeito do assunto, que recentemente deixou de ser uma “utopia” tecnológica para se tornar uma realidade de grandes empresas de TI, como Google, Facebook, Amazon, Salesforce, Twitter, Netflix, entre outras.

De acordo com o NIST (National Institute of Standards and Technology), agência do departamento de comércio dos Estados Unidos, cloud computing é definido como “um modelo para permitir acesso ubíquo, conveniente e sob demanda através da rede a um “pool” configurável de recursos computacionais (por exemplo, redes de computadores, servidores, armazenamento em disco, aplicações e serviços) que podem ser rapidamente aprovisionados e liberados para uso com um esforço de gerenciamento mínimo e de preferência sem interferência direta do provedor de serviço”.

A ideia é permitir que qualquer empresa ou pessoa acesse e utilize serviços computacionais oferecidos por um fornecedor, da maneira mais simples possível, usando o quanto quiser (ou puder pagar) e, se for o caso, se desfaça desses recursos com a mesma facilidade.

Nicholas Carr, escritor americano especializado em Tecnologia da Informação, em seu livro The Big Switch, afirma: “assim como as empresas e pessoas a cem ou mais anos atrás deixaram de produzir sua própria energia elétrica através de geradores próprios para utilizar a rede elétrica pública, hoje algo semelhante ocorre com a migração de sistemas e hardware das empresas locais para os grandes datacenters, tornando a computação uma utilidade, assim como é a energia”.

Hoje em dia, com um tablet ou smartphone, compramos, conversamos, vendemos, falamos, trabalhamos e nos divertimos, tudo funcionando porque em algum lugar está hospedado um serviço, seja na sua cidade ou do outro lado do mundo, facilmente acessível e a um preço atraente, quando não, gratuito.

Desenvolver estas soluções para funcionar em um ambiente na nuvem exige uma série de cuidados e tecnologias que antes desconhecíamos ou ignorávamos justamente por termos uma falsa impressão de previsibilidade e controle.

Durante as fases preliminares de um projeto, estimávamos uma certa quantidade de usuários que iriam utilizar a aplicação e sabíamos que ela seria instalada nos “nossos” servidores e até mesmo contávamos com as famosas “paradas” para fazer manutenção.

Quando criamos um serviço, seja para um ambiente Cloud Computing ou não, devemos nos preparar para eventuais falhas na execução de nossas aplicações, pois elas vão acontecer.

Além disso, e principalmente na nuvem, devemos estar preparados para corrigir os defeitos em ciclos de desenvolvimento mais curtos, evitando assim maiores prejuízos econômicos; otimizar ao máximo a performance, pois estamos pagando por cada ciclo de CPU gasto inutilmente; e ainda manter uma arquitetura evolutiva, que permita escalabilidade horizontal e vertical, monitoramento, maior agilidade em recuperação de falhas e administração.

Neste contexto, o Spring Cloud surge para compatibilizar o já mundialmente famoso framework Spring e suas APIs e padrões (como injeção de dependências e inversão de controle) com as plataformas de aplicações nas nuvens, também chamadas de PaaS, tais como CloudFoundry e Heroku.

O que é IaaS, PaaS e SaaS?

A computação nas nuvens é normalmente dividida em três principais modelos de serviço: IaaS (Infraestrutura como serviço), PaaS (Plataforma como Serviço) e SaaS (Software como Serviço).

Em IaaS, o provedor de nuvem disponibiliza uma série de recursos computacionais virtualizados, como servidores, memória, storage, elementos de rede e um ambiente de administração e é o cliente o responsável por instalar e configurar qualquer aplicação que deseja, inclusive sistemas operacionais. Um exemplo de fornecedor de IaaS é o Amazon Web Services.

Já no modelo PaaS, é oferecido ao cliente uma plataforma composta de uma série de serviços e frameworks já instalados, sendo possível ao usuário desenvolver e configurar seus sistemas de acordo com as regras e suporte oferecidos pela plataforma.

O Heroku (veja a seção Links) é um exemplo claro desse modelo, onde apenas algumas linguagens de programação específicas são suportadas.

Já no modelo SaaS, é oferecido ao consumidor uma aplicação totalmente instalada e configurada em ambiente de nuvem e não é permitido ao usuário ter contato com nenhum aspecto como instalações ou novos desenvolvimentos na plataforma. Gmail, Office Online e Facebook são exemplos simples desse tipo de modelo.

O Spring Cloud pode ser utilizado tanto em IaaS quanto em PaaS. Neste contexto, possibilita uma integração perfeita com plataformas de diversos fornecedores, bem como é compatível com vários projetos open source que normalmente fazem parte de arquiteturas de alto desempenho, como balanceadores de carga, caches, servidores de proxy, controladores de versão e sistemas de mensageria.

Spring Cloud

Para ser capaz de se integrar a uma grande variedade de componentes e fornecedores de plataformas, os engenheiros da empresa Pivotal resolveram separar o Spring Cloud em uma série de componentes menores, a saber:

· Spring Cloud Config: é responsável por permitir que as aplicações mantenham suas configurações (propriedades e parâmetros) armazenadas no gerenciador de versões Git.

Com configurações e arquivos de propriedades armazenados e versionados remotamente, fica mais fácil reconfigurar aplicações sem a necessidade de acessar cada servidor da nuvem onde as mesmas estão instaladas;

· Spring Cloud Netflix: integra aplicações construídas com Spring Cloud a diversos componentes open source da Netflix, tais como Eureka (registrador e balanceador de serviços), Hystrix (biblioteca com algoritmos para construção de sistemas tolerantes a falhas), Zuul (serviço de borda para roteamento, monitoramento e segurança) e Archaius (biblioteca para gerenciamento de configurações dos componentes da aplicação);

· Spring Cloud Bus: simplifica o acesso e uso de servidores de mensageria como RabbitMQ;

· Spring Cloud for Cloud Foundry: integra a aplicação aos serviços da plataforma PaaS conhecida como Cloud Foundry;

· Spring Cloud For Amazon Web Services: facilitador para construção e manutenção de soluções integradas à plataforma de IaaS conhecida como Amazon Web Services. A partir do Spring Cloud o desenvolvedor pode fazer uso de serviços como Cache distribuído, Mensageria, Storage e outros;

· Spring Cloud Connectors: facilitador de integração entre a aplicação e sistemas de backend, principalmente Message Brokers e Bancos de Dados nas nuvens;

· Spring Cloud CLI: é um plugin para Spring Boot que traz grande rapidez na criação de aplicações Groovy baseadas em Spring Cloud.

Além disso, o Spring Cloud se integra facilmente a várias outras APIs do framework Spring, tais como Spring Boot, Spring Data, Spring Web e Spring Security. " [...] continue lendo...

Artigos relacionados