[Spring Boot 2.3] – Gerando uma imagem docker com buildpacks.

Olá,

Com a chegada do spring boot 2.3 agora temos um novo goal chamado “build-image”, na verdade por debaixo dos panos a spring preparou uma integração com o projeto: https://buildpacks.io/. Para quem ainda não conhece o projeto, esse trata de aspectos relacionados a geração de containers multicamadas de forma simplifica usando varios conceitos interessantes, no futuro talvez aborde um pouco mais sobre o tema, mas por hoje vou apenas mostrar como podemos fazer a geração de containers usando o novo goal.

E aqui está o comando, tudo que temos que fazer agora para gerar a imagem é executar o comando abaixo na raiz do seu “projeto spring boot 2.3”:

$ mvn spring-boot:build-image

Por padrão o nome do container será o nome do seu projeto e a tag será a versão do seu projeto.

Para rodar o container recem criado basta executar:

$ docker run -it -p 8080:8080 demo:0.0.1-SNAPSHOT

Se você está usando o spring tool suite, segue um exemplo abaixo:

Usando DIVE para entender os layers da imagem docker

Para entender melhor o trabalho do buildpack, vamos analisar a imagem usando o dive ( https://github.com/wagoodman/dive )

Iteragindo com o dive é possível ver cada layer do container, incluindo a mais importante: 18MB → Nossa Aplicação.

Habilitando o modo “layered” para criaçao das imagens

Basta adicionar a configuração abaixo no seu pom.xml:

Essa é uma alternativa para aquele cenário onde apenas o código fonte da aplicação sofreu modificação, dessa forma nem todas as layers precisam ser geradas novamente.

olhando novamente para o dive é possivel ver a diferença:

Isso é tudo pessoal, agora a geração de um container para um projeto spring boot se resume apenas em rodar build-image.

Abrcs.

Natanael Fonseca

Novidades do Spring Boot 2.3

Olá,

Acho que se alguém me perguntar o porque o Java ainda está funcionando a todo vapor nos dias atuais, com certeza eu creditaria essa responsabilidade a equipe do spring framework, principalmente ao spring boot. A quantidade de evoluções que vem sendo feitas a cada dia é simplesmente brutal e por isso se você é um Javeiro de mão cheia, com certeza você deveria acompanhar de perto cada nova release que é lançada por eles.

Pensando nisso eu resolvi condensar num post as principais mudanças da ultima versão lançada, spring boot 2.3, são muitas alterações e cheias de nuancias, isso só me faz acreditar que a equipe do spring está indo no caminho certo.

Antes de tudo, algumas caracteristicas importantes:

  • A cada 6 meses podemos esperar por uma release;
  • Não necessariamente isso vale para todos os projetos da família spring, como é o caso do spring framework que é lançado somente quando realmente está com as funcionalidades estáveis.
  • Agora temos suporte ao Micrometer 1.5 (https://micrometer.io/);
  • Full suporte ao Java 14 (https://www.oracle.com/java/technologies/javase/jdk14-archive-downloads.html) ;
  • Agora a construção de containers está mais fácil, estão utilizando a tecnologia buildpacks, desenvolvida pela VMWare e Heroku. ( https://buildpacks.io/ )
  • Agora temos um new ‘goal’ chamado build-image e não precisamos mais usar plugin de terceiros para criar imagens docker do projeto. ( https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/maven-plugin/reference/html/#build-image)
  • O suporte a ambientes de cloud está cada vez melhor em termos de probes, agora e possivel usar o actuator masi voltado para o Kubernetes, usando por exemplo: Liveness e Readiness.
  • E pra mim a noticia mais impactante, a equipe da spring já começou a anunciar que está migrando tudo para gradle e o suporte ao Maven será cada vez menor. Assim sendo, se você ainda tá usando maven é melhor já ir pensando em mudar para gradle também.

Esse é um resumo do video que coloquei no inicio do post, para as principais features novas vou fazer também novos posts.

Abrcs.

Natanael Fonseca

Cloud Native com Quarkus + ISTIO e OpenShift

Gostei tanto desse conteudo que resolvi fazer um repost, trata-se de uma video aula feita pelo Elder Moraes, que é um Red Hat Developer Advocate, abordando diversos temas como Cloud Native, Quarkus, ISTIO e OpenShift.

O legal disso tudo é perceber como a plataforma Java envelheceu bem nos últimos anos, sempre com a comunidade criando projetos interessantes e se adequando as novas tendências, principalmente no mundo enterprise.

Com certeza vou trazer o Quarkus mais vezes para cá, exemplos abordando o tema que mais amo na área atualmente: Microserviços.

Não deixando de comentar que trata-se de um vídeo feito pelo “Canal Código Fonte TV“, um dos canais BR mais legais para aprender programação.

Abrcs.

Pensando Arquiteturalmente

Olá,

Semana passada resolvi ler um livro que me chamou atenção pelo título, o que você faria se visse um livro chamado “Pensando Arquiteturalmente”? Minha primeira reação foi achar que o livro se tratava de um livro ultra mega técnico, detalhando diversos estilos arquiteturais e etc. Porém quando acabei de ler ele, percebi que se tratava não de um livro tecnico, mas sim um livro de carreira.

Um livro muito gostoso de ler e que por ser pequeno pode ser lido em uma tarde, aborda principalmente aspectos como:

  • Como um profissional de TI, sendo arquiteto ou não, deve encarar o uso de novas técnologias ;
  • Saber uma técnologia antiga, realmente faz de você ultrapassado?
  • Dicas sobre como avaliar novas ferramentas que venham a surgir.
  • Dicas sobre como convencer o seu time a adotar novas técnologias.
  • Como se manter sempre atualizado nessa área que sempre possui técnologias novas.

Viu só, é um livro interessante porque sai um pouco da caixinha técnica e começa a olhar o lado mais humano de quem precisa estar em constante evoluçao.

O livro pode ser baixado aqui:

https://tanzu.vmware.com/content/ebooks/thinking-architecturally