BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos As perguntas mais frequentes sobre Java, Cloud, PaaS e Platform.sh

As perguntas mais frequentes sobre Java, Cloud, PaaS e Platform.sh

Favoritos

Migrar uma aplicação para a nuvem sempre foi um grande desafio de alta complexidade, como a execução de uma migração de um site para a nuvem em segurança. A nuvem possui vários benefícios, incluindo a falta de preocupação em manter, comprar e mover o hardware necessário. No entanto, essa complexidade de migração também apresenta riscos para os negócios. Esta postagem tem como objetivo responder às perguntas mais comuns sobre como mover uma aplicação para a nuvem e como o Platform.sh pode nos ajudar com isso.

O que é computação na nuvem?

Essa é fácil, e de maneira bem simples, é usar o computador de outra pessoa.

O software está em toda parte. Não importa para onde olhamos, há um software em execução. Na história humana, vimos o número de máquinas e softwares aumentar com o tempo, de uma máquina compartilhada por várias pessoas a uma única pessoa usando milhares de programas. Agora, podemos ver o software interagindo com outro software, como quando compramos uma passagem aérea: Um sistema envia um email, outro lê e dispara um evento para o nosso calendário. Essa nova abordagem abre mais perspectivas e oportunidades de negócios para todos, incluindo o machine learning. Atenção, a Skynet está chegando!

Com a computação na nuvem disponível sob demanda para os recursos que precisamos para nossos sistemas, especialmente o armazenamento de dados e poder computacional, sem gerenciamento ativo direto do usuário, podemos dizer que a computação em nuvem significa: Não nos importamos com o hardware não ser nosso. Esses serviços são amplamente divididos em três categorias: Infraestrutura como Serviço (Infrastructure as a Service, IaaS), Plataforma como Serviço (Platform as a Service, PaaS) e Software como Serviço (Software as a Service, SaaS).

Por que devemos migrar nosso projeto para a nuvem?

Como as empresas de software, não precisamos nos importar com o hardware. O objetivo é executar nossa aplicação e se concentrar no nosso negócio, o que significa que não precisamos comprar hardware por conta própria. A nuvem permite que trabalhemos em várias regiões, o que significa que, se desejarmos fazer negócios na Europa e nos EUA, não precisamos mover um grupo de engenheiros para esses lugares, alugar um local para gerenciar o hardware e assim por diante. A nuvem facilita muito.

A nuvem traz uma nova perspectiva em serviços: Infraestrutura, plataforma e software. Podemos fazer uma analogia com a pizza como serviço, onde podemos comprar todos os ingredientes, preparar tudo, assar e depois comermos a pizza, ou termos a menor abstração possível, onde vamos a um restaurante e simplesmente pedimos a pizza que quisermos.

O que é o Platform.sh e como ele pode nos ajudar a atingir esse objetivo?

O Platform.sh é uma maneira fácil de mover nossa aplicação para a nuvem. O Platform.sh é uma segunda geração do PaaS, na qual é possível criar uma aplicação usando a infraestrutura como abordagem de código por meio de três arquivos: Um para definir rotas, outro para o aplicativo e um terceiro para os serviços, como um banco de dados que precisaremos executar para nossa aplicação. Cada ramificação que implantamos no Platform.sh é criada como um cluster virtual, contendo um conjunto de containers. A ramificação principal do nosso repositório Git é sempre implantada como o cluster de produção. Portanto, teremos a produção, homologação e desenvolvimento com apenas um novo ramo. O Platform.sh também é uma infraestrutura orientada ao Git, ou seja, podemos integrar ao GitHub, Gitlab ou a um repositório Git que nós iremos fornecer.

O que é cloud-native?

Eu escrevi um artigo sobre esse conceito. Resumidamente, a ideia é nova e possui várias visões. Li vários artigos e livros sobre o tema e não há uma definição única sobre esse assunto. Novamente, o conceito é muito novo, então ainda estamos longe de uma definição cravada na pedra. Com base nessas leituras, criei uma definição que uso até o presente momento:

Um conjunto de boas práticas para otimizar uma aplicação na nuvem por meio de:

  • Containerização;
  • Orquestração;
  • Automação.

O Platform.sh é cloud-native?

Sim. Como mencionamos, o Platform.sh é um PaaS que permite aproveitar a nuvem por meio de clusters, containers e orquestração. Além disso, estamos na página de destino da Cloud Native Software Foundation.

O que é um container?

Um container é uma unidade padrão de software que empacota o código e todas as dependências. O Java tem o slogan WORA - escreva uma vez, execute em qualquer lugar (do inglês, write once, run anywhere) - em um container, e nós temos o PORA no Platform.sh - pacote uma vez, execute em qualquer lugar (do inglês, package once, run anywhere). Há um excelente artigo que explica profundamente os containers de Larry Garfield.

O que há de errado com o Kubernetes?

Não há nada errado com o Kubernetes, ele é uma excelente ferramenta para orquestração de containers, no entanto, é difícil manter a orquestração e os containers. O Platform.sh simplifica este trabalho. Existe uma apresentação em que Robert Douglas mostra como containerizar as aplicações em nuvem em algumas linhas de código sem o Kubernetes. O grande objetivo da Platform.sh é reduzir a complexidade e por sua vez o risco no ciclo de vida da aplicação que por sua vez, faz com que o time de desenvolvimento foque muito mais no desenvolvimento do software.

E o Java?

O Platform.sh tem suporte para várias linguagens como Go, Lisp, Node.JS, PHP, Python, Ruby e, com certeza, o Java. Os containers Java possuem ferramentas de gerenciamento de compilação, como Gradle, Maven e Ant. Para salientar, a JVM é poliglota, portanto, se desejarmos, podemos criar e mover nossa aplicação Kotlin em Platform.sh.

O que são os serviços?

O Platform.sh permite usar serviços como Elasticsearch, MongoDB, Kafka, Memcached, MySQL, MariaDB, PostgreSQL e assim por diante. Um grande ponto do PaaS é que todo o recurso será gerenciado, criado e mantido pela plataforma.

Podemos integrar os serviços em frameworks populares como Hibernate, Spring e JavaEE/Jakarta EE. Podemos usar a biblioteca Platform.sh, que lida com a decodificação de informações de credenciais de serviço, ou sobrescrever as configurações no arquivo da aplicação. Ou podemos ter essa configuração definida especificamente para executar na nuvem ou usar como padrão local com estruturas como Spring e Jakarta EE/MicroProfile.

Mostre-me o código!

Com certeza, temos muito código para mostrar. Além dos modelos Java (um esqueleto de projeto pré-fabricado para iniciarmos nosso projeto), também oferecemos uma série de artigos com seu respectivo código sobre como usar o Java na nuvem com Platform.sh.

É isso, terminamos com as perguntas frequentes sobre como mover nossa aplicação para um PaaS como Platfrom.sh. Esse tipo de serviço, apesar de não ser novo, ainda é pouco explorado pelas empresas e pelos times de desenvolvimento. Um grande ponto é a altíssima camada de abstração a ponto de controlar toda a complexidade do cloud de modo que um deploy é realizado a partir de um push no repositório remoto do Git. A maior vantagem e o foco do projeto se encontra na facilidade para o foco do negócio. Tem alguma pergunta que não está respondida aqui? Entre em contato conosco via Twitter ou no Slack, nossa equipe está pronta para ajudar a levar seus negócios ao infinito e também para a nuvem.

Sobre o autor

Otávio Santana é engenheiro de software, com grande experiência em desenvolvimento open source, com diversas contribuições ao JBoss Weld, Hibernate, Apache Commons e outros projetos. Focado em desenvolvimento poliglota e aplicações de alto desempenho. Otávio trabalhou em grandes projetos nas áreas de finanças, governo, mídias sociais e e-commerce. Membro do comitê executivo do JCP e de vários Expert Groups de JSRs, é também Java Champion e recebeu os prêmios JCP Outstanding Award e Duke's Choice Award.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

BT