Definitivamente, Cloud Computing deixou de ser apenas uma tendência e tornou-se um padrão de uso de recursos computacionais de escala mundial. Diretamente relacionado ao crescimento exponencial dessa tecnologia, temos o crescimento das startups nos últimos anos, o que seria mais difícil de alcançar sem as facilidades e o baixo custo da computação em nuvem, que reduz consideravelmente o “time-to-market” de um software e permite que empresas com poucos recursos escalem suas aplicações conforme a demanda por elas aumente.
No entanto, para desenvolver um software que seja escalável e eficiente para esse ambiente, precisamos atentar para a forma como a nuvem opera, os serviços que ela oferece, o custo dos mesmos e nos livrar de paradigmas antigos de desenvolvimento, que nos serviram muito bem até agora, mas que precisam ser deixados de lado para que nossas aplicações sejam realmente competitivas em um ambiente cloud.
Para quem iniciou no desenvolvimento de software recentemente, já entrou no mercado na “era” cloud. Consequentemente, já adota (ou deve adotar), naturalmente, práticas que são mais adequadas ao deploy na nuvem, algumas vezes até mesmo sem saber disso, pois apenas são direcionados ou condicionados pelo serviço de nuvem que estão utilizando. Porém, desenvolvedores que fizeram carreira nas empresas criando aplicações corporativas devem se atentar a esse novo modelo, principalmente porque estamos vivendo um momento no qual as empresas estão iniciando sua jornada (termo utilizado para migração) para a nuvem. Dentro desse contexto de mudanças de paradigma, aplicações legadas são um grande desafio para a cloud, pois são menos eficientes do que aplicações que foram criadas para ela, já que essas últimas se aproveitam dos benefícios ofertados pelos provedores de computação na nuvem.
Neste artigo iremos falar sobre computação em nuvem, seus benefícios e como construir aplicações mais aderentes ao seu modelo, principalmente nos concentrando no mundo das aplicações Java Enterprise Edition. Como exemplo, iremos implementar uma aplicação que utiliza um serviço de fila local de um container Java EE, demonstrar como substituí-lo por um serviço de fila de um provedor de nuvem e abordar os ganhos que temos ao realizar essa atualização.
Antes disso, no entanto, vamos nos aprofundar sobre os modelos de deploy e as diferenças entre eles, iniciando com uma breve introdução sobre computação em nuvem.
Computação em NuvemO Gartner define computação em nuvem como um estilo de computação onde a TI escalável e elástica é entregue como serviço usando tecnologias da internet. Em outras palavras, computação em nuvem pode ser definida como um conjunto de serviços de tecnologia, inclusive computação propriamente dita, ofertado de uma forma que você paga pelo que usar, quando usar e se usar. Fazendo uma analogia com nosso cotidiano, podemos comparar a oferta de computação em nuvem com a energia elétrica. Não precisamos ter em nossas casas ou empresas uma usina de geração de energia elétrica. Basta conectar os aparelhos na tomada e consumir a energia no período que desejarmos. A computação em nuvem é similar. Ao invés de manter um parque de máquinas e pessoas qualificadas para manter esse parque em nossas casas ou empresas, basta conectarmos nossas máquinas à internet e aos serviços de nuvem e utilizar a computação, rede, banco de dados, filas, caches e tantos outros serviços que os diversos provedores oferecem, pagando apenas por aquilo que utilizarmos. Como esperado, isso reduz consideravelmente o custo de infraestrutura de software e em alguns casos até mesmo possibilita o que antes era inviável financeiramente.
Provedores de computação em nuvem
A AWS (Amazon Web Services) é a pioneira nos serviços de computação em nuvem. Em consequência disso, é a mais madura e com maior quantidade de serviços ofertados. No entanto, nos últimos anos diversas empresas investiram pesado nesse segmento e estão abraçando uma boa fatia do mercado. O Google, por exemplo, vem ganhando bastante força, assim como a IBM, Microsoft, Rackspace, entre outras. Isso sem contar os diversos fornecedores que utilizam esses provedores como base e oferecem uma abstração de alto nível (PaaS), como veremos a seguir.
Tipos de oferta — IaaS, PaaS, SaaS
Termos comuns dentro do mundo da computação em nuvem, IaaS (Infrastructure as a Service), PaaS (Platform as a Service) e SaaS (Software as a Service) referem-se aos tipos de oferta que estão relacionados ao quanto de autonomia você terá sobre os recursos contratados da nuvem.
Quando usamos um serviço de IaaS estamos consumindo o nível mais baixo de serviço da nuvem, que é a computação propriamente dita. Isto é, estamos pagando para utilizar uma máquina que nos é fornecida pela internet, com os diversos recursos contidos na mesma, como CPU, memória, rede, etc. Nesse modelo, somos responsáveis por praticamente toda a gestão da máquina, como:
- Instalação e manutenção do sistema operacional e tudo que for relacionado a ele, como patches de segurança, updates, etc.;
- Instalação e configuração do ambiente necessário para executar nossa aplicação, como JVM, servidor de aplicação, etc.;
- Instalação e configuração da própria aplicação.
O IaaS é o modelo mais próximo do modelo tradicional, sendo que se difere por não termos que cuidar fisicamente da máquina, pois alguém (o provedor de serviço na nuvem) está fazendo isso por nós, mantendo a máquina ligada, resfriada e funcionando. Além disso, quando desligamos a máquina não pagamos por ela, apenas pelo espaço que a sua imagem ocupa no datacenter do provedor.
Por sua vez, quando falamos de PaaS, nossas responsabilidades diminuem e as do provedor aumentam. Nessa opção, a máquina, sistema operacional e muitas vezes até o servidor de aplicação nos são abstraídos. Assim, devemos nos preocupar exclusivamente com a nossa aplicação. Nesse tipo de oferta a quantidade de fornecedores aumenta consideravelmente e podemos citar players consolidados, como Heroku, CloudBees, Jelastic, além dos serviços de PaaS disponibilizados por grandes empresas, como IBM Bluemix, AWS Elastic Beanstalk, entre outros.
O PaaS, como esperado, é mais interessante para desenvolvedores, pois toda a operação fica por conta da nuvem. Desse modo, em muitos casos basta uma atualização no repositório de código fonte e a nova versão da aplicação já estará em produção, após um ciclo automático e integrado de build. Por outro lado, como consequência de toda essa facilidade, abre-se mão de controle, pois qualquer configuração específica de SO, de servidor de aplicação, ou mesmo de JVM, muitas vezes não é permitida. Nos casos em que precisamos disso, ir para o IaaS pode ser o melhor caminho.
A Figura 1 apresenta as responsabilidades que temos em relação ao provedor da nuvem nos diversos modelos.
Figura 1. Da esquerda para a direita, do modelo tradicional de infraestrutura até o mais alto nível de oferta de computação em nuvem (SaaS) — Fonte: Technet.
No modelo SaaS, que é a oferta de mais alto nível de tecnologia na nuvem, utilizamos um software sem saber como ele foi implementado, em qual máquina, sob qual sistema operacional ...
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.