Este documento fornece um resumo de uma palestra sobre microserviços com Spring Boot. A palestra aborda conceitos de microserviços e arquitetura RESTful, apresenta Spring Boot como uma forma de facilitar a criação de aplicações baseadas em microserviços e discute alguns tópicos como customização, desempenho e padrões fundamentais do Java.
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
O documento discute as novas funcionalidades do .NET 6, incluindo bibliotecas comuns e SDK unificados, desempenho líder da indústria, desenvolvimento simplificado, suporte para Apple Silicon (Arm64) e lançamento de longo prazo. Ele também descreve brevemente ferramentas como o Visual Studio 2022 e o .NET Upgrade Assistant.
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
Lucas Ferreira (BurnWeb)
A talk abordará uma forma diferente de desenvolver apps para celular utilizando o framework React Native criado pelos engenheiros do Facebook. Ao final também teremos um pouco de mão na massa.
4º Meetup Criciúma Dev
.NET 6: O que há de novo e o que está por vir?akamud
1. O documento discute as novidades e melhorias do .NET 6, incluindo SDK e bibliotecas base unificadas, melhor desempenho, e simplificação do desenvolvimento.
2. Ele também aborda novas funcionalidades como suporte a Apple Silicon, C# 10, .NET Multi-platform App UI, e cronograma de lançamentos do .NET.
3. Por fim, incentiva o leitor a experimentar o .NET 6 e suas ferramentas de desenvolvimento.
Existem muitas possibilidades de inovar no seguimento de lojas físicas, que tem em sua maioria uma tecnologia mais antiga.
Essa palestra conta a história do desenvolvimento de um produto para atender esse mercado do mundo físico e é focada nas decisões técnicas que impactaram a visão de negócio diretamente, fazendo um comparativo das tecnologias que levaram a essas decisões (escolha do React, React Native, Electron e libs auxiliares).
Hoje o produto roda em Android, iOS, Windows e web, compartilhando a maior parte do código-fonte, permitindo entregar features multi-plataforma de forma ágil.
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileakamud
O documento apresenta uma palestra sobre o desenvolvimento de aplicativos móveis usando Xamarin e testes automatizados. O palestrante discute os desafios do desenvolvimento mobile, como múltiplos sistemas operacionais e dispositivos, e propõe o uso de C# e Xamarin para compartilhar código entre plataformas. Ele também argumenta que testes automatizados melhoram a qualidade e manutenibilidade do código, reduzindo bugs.
O documento apresenta uma introdução à linguagem de programação C#. Apresenta os principais conceitos como: 1) Histórico e características da linguagem; 2) Ambiente de desenvolvimento Visual Studio; 3) Criação de um programa "Olá Mundo" simples para demonstrar os primeiros passos.
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
1. O documento descreve as principais novidades e melhorias do .NET 6, como o SDK e bibliotecas base unificadas, melhor desempenho, e suporte a desenvolvimento simplificado e multiplataforma.
2. Ele também discute recursos do C# 10, como usings globais e registros, além de melhorias em ferramentas como o Visual Studio 2022 e o assistente de atualização.
3. Por fim, apresenta novas APIs para desenvolvimento na nuvem e em dispositivos móveis, como Blazor, .NET MAUI e sup
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
O documento discute as novas funcionalidades do .NET 6, incluindo bibliotecas comuns e SDK unificados, desempenho líder da indústria, desenvolvimento simplificado, suporte para Apple Silicon (Arm64) e lançamento de longo prazo. Ele também descreve brevemente ferramentas como o Visual Studio 2022 e o .NET Upgrade Assistant.
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
Lucas Ferreira (BurnWeb)
A talk abordará uma forma diferente de desenvolver apps para celular utilizando o framework React Native criado pelos engenheiros do Facebook. Ao final também teremos um pouco de mão na massa.
4º Meetup Criciúma Dev
.NET 6: O que há de novo e o que está por vir?akamud
1. O documento discute as novidades e melhorias do .NET 6, incluindo SDK e bibliotecas base unificadas, melhor desempenho, e simplificação do desenvolvimento.
2. Ele também aborda novas funcionalidades como suporte a Apple Silicon, C# 10, .NET Multi-platform App UI, e cronograma de lançamentos do .NET.
3. Por fim, incentiva o leitor a experimentar o .NET 6 e suas ferramentas de desenvolvimento.
Existem muitas possibilidades de inovar no seguimento de lojas físicas, que tem em sua maioria uma tecnologia mais antiga.
Essa palestra conta a história do desenvolvimento de um produto para atender esse mercado do mundo físico e é focada nas decisões técnicas que impactaram a visão de negócio diretamente, fazendo um comparativo das tecnologias que levaram a essas decisões (escolha do React, React Native, Electron e libs auxiliares).
Hoje o produto roda em Android, iOS, Windows e web, compartilhando a maior parte do código-fonte, permitindo entregar features multi-plataforma de forma ágil.
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileakamud
O documento apresenta uma palestra sobre o desenvolvimento de aplicativos móveis usando Xamarin e testes automatizados. O palestrante discute os desafios do desenvolvimento mobile, como múltiplos sistemas operacionais e dispositivos, e propõe o uso de C# e Xamarin para compartilhar código entre plataformas. Ele também argumenta que testes automatizados melhoram a qualidade e manutenibilidade do código, reduzindo bugs.
O documento apresenta uma introdução à linguagem de programação C#. Apresenta os principais conceitos como: 1) Histórico e características da linguagem; 2) Ambiente de desenvolvimento Visual Studio; 3) Criação de um programa "Olá Mundo" simples para demonstrar os primeiros passos.
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
1. O documento descreve as principais novidades e melhorias do .NET 6, como o SDK e bibliotecas base unificadas, melhor desempenho, e suporte a desenvolvimento simplificado e multiplataforma.
2. Ele também discute recursos do C# 10, como usings globais e registros, além de melhorias em ferramentas como o Visual Studio 2022 e o assistente de atualização.
3. Por fim, apresenta novas APIs para desenvolvimento na nuvem e em dispositivos móveis, como Blazor, .NET MAUI e sup
O documento explica como o Javascript é executado no navegador, descrevendo a criação do contexto de execução global, memória global e pilha de chamadas. Também explica como funções são armazenadas na memória e chamadas, e como cada chamada cria seu próprio contexto de execução e memória. Por fim, fornece detalhes sobre como engines como V8 compilam e otimizam o código Javascript.
Xamarin não é só uma tradução de código para C#, com ele temos soluções completas para o desenvolvimento de aplicativos, desde o desenvolvimento até a distribuição e monitoramento. Com Xamarin.iOS, Xamarin.Android e Xamarin.Forms temos acesso a um ecossistema poderosíssimo para otimizar o desenvolvimento de aplicativos com o máximo de reaproveitamento de código para todas as plataformas.
This document discusses experiences with Test Driven Development (TDD) in a corporate environment. It describes challenges with current development practices that lead to bugs and difficulties, benefits of TDD like secure development and reduced bugs, and a case study of successful TDD adoption on a large project. Common myths about TDD are also addressed.
1. O documento discute técnicas para escalar aplicações React e TypeScript, incluindo estrutura de projetos, boas práticas de código, testes e monitoramento.
2. O autor tem experiência desenvolvendo sites com milhões de visitas diárias e discute como projetos podem crescer rapidamente sem problemas de desempenho ou manutenibilidade.
3. Escalabilidade envolve estruturar o código e projeto para que novos desenvolvedores possam entender facilmente, adicionar novas funcionalidades rapid
O documento descreve o framework ASP.NET MVC, incluindo suas principais características como separação de preocupações, testabilidade, extensibilidade e manutenibilidade. O framework implementa o padrão MVC e fornece templates e classes que facilitam a criação de aplicações web claras, fáceis de manter e extensíveis.
A importância de DDD e o Domain Model na construção de APIs!Isaac de Souza
O documento discute a importância de aplicar Domain-Driven Design (DDD) na construção de APIs, especificamente: (1) Modelar o domínio do negócio com entidades e contextos claros; (2) Usar uma linguagem universal consistente nos contratos da API; (3) Construir a API como uma camada separada da implementação, focada no negócio.
O documento apresenta os principais conceitos e técnicas de testes de software, incluindo testes unitários, TDD, coding dojo e diferentes tipos de testes. É destacada a importância da programação orientada a testes para melhorar a qualidade do código e reduzir bugs.
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoThiago Ferreira
O documento discute como CI/CD pode melhorar a qualidade de vida de times de desenvolvimento ao automatizar processos como build, testes e code review. Ele explica o que são runners e provedores de CI/CD, como a integração contínua permite code reviews mais rápidos através de testes e linters, e como a entrega contínua pode envolver live coding. Exemplos de ferramentas e um projeto Django são citados.
O documento introduz o GitHub Actions, que permite automatizar, personalizar e executar fluxos de trabalho de desenvolvimento de software diretamente no repositório GitHub. As ações podem ser usadas, criadas e compartilhadas para realizar qualquer tarefa, incluindo CI/CD. Os workflows são compostos de jobs executados por runners hospedados no GitHub ou localmente.
Usando Git na Unity - Gaming For All 2021Erik Cruz
O documento fornece uma introdução sobre como usar o Git na Unity, incluindo: 1) Uma explicação do que é o Git e como ele pode ser usado; 2) Demonstração dos principais comandos do Git como commit, push, pull e merge; 3) Uma discussão sobre branches e como eles podem ser usados para isolar mudanças.
O documento compara as bibliotecas React e Vue, discutindo suas histórias, comunidades, ferramentas de renderização, gerenciamento de estado, roteamento e testes. Não há uma conclusão definitiva sobre qual é a melhor, mas React se destaca por ter tudo em JavaScript e um ecossistema mais maduro, enquanto Vue é mais simples e fácil de aprender. Ambas possuem fortes comunidades e casos de uso em grandes empresas.
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...MVP ShowCast
O documento apresenta uma palestra sobre interoperabilidade entre aplicações e serviços web com o padrão CORS. A palestra discute conceitos como user-agent, origem web, política de mesma origem, JSON-P e CORS. Uma demonstração mostra como habilitar requisições cross-domain com CORS usando Visual Studio e Windows Azure.
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformatdc-globalcode
O documento apresenta as novidades do .NET Core 1.0 e do ASP.NET Core 1.0, que são plataformas multiplataformas e de código aberto. Apresenta as principais características como desempenho aprimorado, modularidade e suporte a vários sistemas operacionais como Windows, Linux e MacOS. Também discute as ferramentas do .NET Core como o .NET Core CLI e o .NET Platform Standard para portabilidade binária.
Na palestra "Docker com ASP.NET Core e Hospedagem no Azure", eu apresentei uma visão geral sobre contêineres, o Docker, o ASP.NET Core, Docker em contêineres Windows, Suporte a Dcoker no Azure, Visual Studio 2017 & Docker e Recursos para estudo.
A versão final (RTM) do novo framework .NET Core 1.0 foi lançada em 27 de junho de 2016. Veja os recursos do .NET Core 1.0 para desenvolver aplicações web com ASP.NET Core, aplicações Console e aplicações para Universal Windows Platform (UWP). Desenvolva no seu sistema operacional predileto: Windows, Mac OS X ou Linux. E veja qual a relação existe entre o novo framework .NET Core multiplataforma e o .NET Framework tradicional para Windows.
A versão final (RTM) do ASP.NET Core 1.0 também foi lançada em 27 de junho de 2016. Veja os recursos do ASP.NET Core 1.0 para desenvolver aplicações web com ASP.NET Core MVC e serviços web com ASP.NET Core Web API no seu sistema operacional predileto: Windows, Mac OS X ou Linux. Além disso, veja aplicações web ASP.NET Core 1.0 executando em servidores Windows, Linux e contêineres Docker. E veja qual a relação existe entre as novas aplicações ASP.NET Core e as anteriores: aplicações ASP.NET tradicionais, incluindo: ASP.NET Web Forms, ASP.NET MVC e ASP.NET Web Pages.
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
O documento resume a história do ASP.NET, desde sua criação em 2002 até o desenvolvimento do ASP.NET vNext. Aborda perguntas comuns sobre o vNext e destaca suas principais características como modularidade, ciclo de desenvolvimento rápido, independência de plataforma e código aberto.
REST e GraphQL são duas APIs populares. REST usa métodos HTTP como GET e POST para recuperar e enviar dados, enquanto GraphQL permite que os clientes solicitem exatamente os dados de que precisam através de uma única consulta. Embora GraphQL elimine problemas como over-fetching, REST tem vantagens como cache e monitoramento mais fácil.
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
Este documento discute a arquitetura de microserviços como uma nova abordagem para implementação de softwares. Ele começa explicando os problemas com aplicações monolíticas e como serviços e arquitetura SOA/REST tentam resolver esses problemas. Em seguida, introduz microserviços como uma alternativa, discutindo seus benefícios como alta disponibilidade, escalabilidade e facilidade de implantação. Por fim, fornece princípios e um exemplo prático de implementação de microserviços usando tecnologias Microsoft Azure.
O documento explica como o Javascript é executado no navegador, descrevendo a criação do contexto de execução global, memória global e pilha de chamadas. Também explica como funções são armazenadas na memória e chamadas, e como cada chamada cria seu próprio contexto de execução e memória. Por fim, fornece detalhes sobre como engines como V8 compilam e otimizam o código Javascript.
Xamarin não é só uma tradução de código para C#, com ele temos soluções completas para o desenvolvimento de aplicativos, desde o desenvolvimento até a distribuição e monitoramento. Com Xamarin.iOS, Xamarin.Android e Xamarin.Forms temos acesso a um ecossistema poderosíssimo para otimizar o desenvolvimento de aplicativos com o máximo de reaproveitamento de código para todas as plataformas.
This document discusses experiences with Test Driven Development (TDD) in a corporate environment. It describes challenges with current development practices that lead to bugs and difficulties, benefits of TDD like secure development and reduced bugs, and a case study of successful TDD adoption on a large project. Common myths about TDD are also addressed.
1. O documento discute técnicas para escalar aplicações React e TypeScript, incluindo estrutura de projetos, boas práticas de código, testes e monitoramento.
2. O autor tem experiência desenvolvendo sites com milhões de visitas diárias e discute como projetos podem crescer rapidamente sem problemas de desempenho ou manutenibilidade.
3. Escalabilidade envolve estruturar o código e projeto para que novos desenvolvedores possam entender facilmente, adicionar novas funcionalidades rapid
O documento descreve o framework ASP.NET MVC, incluindo suas principais características como separação de preocupações, testabilidade, extensibilidade e manutenibilidade. O framework implementa o padrão MVC e fornece templates e classes que facilitam a criação de aplicações web claras, fáceis de manter e extensíveis.
A importância de DDD e o Domain Model na construção de APIs!Isaac de Souza
O documento discute a importância de aplicar Domain-Driven Design (DDD) na construção de APIs, especificamente: (1) Modelar o domínio do negócio com entidades e contextos claros; (2) Usar uma linguagem universal consistente nos contratos da API; (3) Construir a API como uma camada separada da implementação, focada no negócio.
O documento apresenta os principais conceitos e técnicas de testes de software, incluindo testes unitários, TDD, coding dojo e diferentes tipos de testes. É destacada a importância da programação orientada a testes para melhorar a qualidade do código e reduzir bugs.
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoThiago Ferreira
O documento discute como CI/CD pode melhorar a qualidade de vida de times de desenvolvimento ao automatizar processos como build, testes e code review. Ele explica o que são runners e provedores de CI/CD, como a integração contínua permite code reviews mais rápidos através de testes e linters, e como a entrega contínua pode envolver live coding. Exemplos de ferramentas e um projeto Django são citados.
O documento introduz o GitHub Actions, que permite automatizar, personalizar e executar fluxos de trabalho de desenvolvimento de software diretamente no repositório GitHub. As ações podem ser usadas, criadas e compartilhadas para realizar qualquer tarefa, incluindo CI/CD. Os workflows são compostos de jobs executados por runners hospedados no GitHub ou localmente.
Usando Git na Unity - Gaming For All 2021Erik Cruz
O documento fornece uma introdução sobre como usar o Git na Unity, incluindo: 1) Uma explicação do que é o Git e como ele pode ser usado; 2) Demonstração dos principais comandos do Git como commit, push, pull e merge; 3) Uma discussão sobre branches e como eles podem ser usados para isolar mudanças.
O documento compara as bibliotecas React e Vue, discutindo suas histórias, comunidades, ferramentas de renderização, gerenciamento de estado, roteamento e testes. Não há uma conclusão definitiva sobre qual é a melhor, mas React se destaca por ter tudo em JavaScript e um ecossistema mais maduro, enquanto Vue é mais simples e fácil de aprender. Ambas possuem fortes comunidades e casos de uso em grandes empresas.
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...MVP ShowCast
O documento apresenta uma palestra sobre interoperabilidade entre aplicações e serviços web com o padrão CORS. A palestra discute conceitos como user-agent, origem web, política de mesma origem, JSON-P e CORS. Uma demonstração mostra como habilitar requisições cross-domain com CORS usando Visual Studio e Windows Azure.
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformatdc-globalcode
O documento apresenta as novidades do .NET Core 1.0 e do ASP.NET Core 1.0, que são plataformas multiplataformas e de código aberto. Apresenta as principais características como desempenho aprimorado, modularidade e suporte a vários sistemas operacionais como Windows, Linux e MacOS. Também discute as ferramentas do .NET Core como o .NET Core CLI e o .NET Platform Standard para portabilidade binária.
Na palestra "Docker com ASP.NET Core e Hospedagem no Azure", eu apresentei uma visão geral sobre contêineres, o Docker, o ASP.NET Core, Docker em contêineres Windows, Suporte a Dcoker no Azure, Visual Studio 2017 & Docker e Recursos para estudo.
A versão final (RTM) do novo framework .NET Core 1.0 foi lançada em 27 de junho de 2016. Veja os recursos do .NET Core 1.0 para desenvolver aplicações web com ASP.NET Core, aplicações Console e aplicações para Universal Windows Platform (UWP). Desenvolva no seu sistema operacional predileto: Windows, Mac OS X ou Linux. E veja qual a relação existe entre o novo framework .NET Core multiplataforma e o .NET Framework tradicional para Windows.
A versão final (RTM) do ASP.NET Core 1.0 também foi lançada em 27 de junho de 2016. Veja os recursos do ASP.NET Core 1.0 para desenvolver aplicações web com ASP.NET Core MVC e serviços web com ASP.NET Core Web API no seu sistema operacional predileto: Windows, Mac OS X ou Linux. Além disso, veja aplicações web ASP.NET Core 1.0 executando em servidores Windows, Linux e contêineres Docker. E veja qual a relação existe entre as novas aplicações ASP.NET Core e as anteriores: aplicações ASP.NET tradicionais, incluindo: ASP.NET Web Forms, ASP.NET MVC e ASP.NET Web Pages.
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
O documento resume a história do ASP.NET, desde sua criação em 2002 até o desenvolvimento do ASP.NET vNext. Aborda perguntas comuns sobre o vNext e destaca suas principais características como modularidade, ciclo de desenvolvimento rápido, independência de plataforma e código aberto.
REST e GraphQL são duas APIs populares. REST usa métodos HTTP como GET e POST para recuperar e enviar dados, enquanto GraphQL permite que os clientes solicitem exatamente os dados de que precisam através de uma única consulta. Embora GraphQL elimine problemas como over-fetching, REST tem vantagens como cache e monitoramento mais fácil.
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
Este documento discute a arquitetura de microserviços como uma nova abordagem para implementação de softwares. Ele começa explicando os problemas com aplicações monolíticas e como serviços e arquitetura SOA/REST tentam resolver esses problemas. Em seguida, introduz microserviços como uma alternativa, discutindo seus benefícios como alta disponibilidade, escalabilidade e facilidade de implantação. Por fim, fornece princípios e um exemplo prático de implementação de microserviços usando tecnologias Microsoft Azure.
Apresentação realizada em 05/12/2012 no JavaOneBrasil, com o Felipe Firmo pela Sensedia.
O objetivo dessa palestra foi apresentar o trabalho em andamento sobre o tema REST para a publicação de APIs por clientes de grande porte.
Here are some examples of companies that use query string pagination:
- GitHub API - Pagination is supported via the `page` and `per_page` parameters. For example: `https://api.github.com/repos/octocat/Hello-World/issues?page=2&per_page=100`
- Twitter Search API - Uses `page` and `count` parameters. For example: `https://api.twitter.com/1.1/search/tweets.json?q=twitterapi&page=2&count=100`
- Facebook Graph API - Uses `limit` and `offset` parameters. For example: `https://graph.facebook.com/search
Apresentação realizada em 05/12/2012 no JavaOneBrasil, com o Alessandro Oliveira pela Sensedia.
O objetivo dessa palestra foi apresentar o trabalho em andamento sobre o tema REST para a publicação de APIs por clientes de grande porte.
REST vs GraphQL: A batalha das APIs pode ser resumida em 3 frases:
REST usa HTTP para recuperar recursos através de métodos como GET e POST, enquanto GraphQL permite que clientes solicitem somente os dados necessários através de consultas declarativas. Embora GraphQL elimine problemas como over-fetching, REST tem vantagens como cache e status codes HTTP mais claros.
1) O documento apresenta a arquitetura e o desenvolvimento de um protótipo de aplicação web distribuída baseada em JavaScript.
2) As tecnologias utilizadas incluem HTTP, HTML5, JavaScript, AngularJS, MongoDB, Node.js, Express e Bootstrap.
3) A arquitetura proposta separa o lado servidor, onde estão as regras de negócio e a persistência dos dados, do lado cliente, responsável pela exibição e captura de dados.
Microserviços - Universidade Metodista - EETI 2016Renato Groff
Tópicos abordados nesta apresentação realizada durante o a semana EETI 2016 da Universidade Metodista - São Paulo (02/05/2016):
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microserviços
Introdução a Arquitetura Orientada a ServiçosIgor Takenami
O documento discute a arquitetura orientada a serviços (SOA) e sua evolução para atender às necessidades de integração entre sistemas de TI em organizações. A SOA surgiu para superar as limitações de soluções de integração anteriores e definir serviços como unidades modulares e reutilizáveis de funcionalidade de software. O documento também aborda características-chave de serviços e como a arquitetura orientada a serviços pode trazer benefícios como reuso e agilidade no desenvolvimento de software.
Microservices - Canal .NET Dev WeekendRenato Groff
Microservices: Uma nova arquitetura para criação de serviços que divide aplicações complexas em unidades menores e autônomas chamadas microserviços, trazendo benefícios como escalabilidade, disponibilidade e facilidade de implantação. O documento discute os problemas de aplicações monolíticas, modelos como SOA e REST, princípios para desenvolvimento de microserviços e casos de sucesso desta arquitetura.
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
1) Os desenvolvedores precisam ter habilidades em desenvolvimento de APIs, estruturação de dados, e integração de sistemas como REST, JSON e bancos de dados.
2) É importante compreender fluxos e semântica de dados, escalabilidade, e arquitetura orientada a eventos.
3) As habilidades incluem APIs REST, JavaScript, compreensão de estruturas de dados, e capacidade de colaboração.
Tópicos abordados nesta apresentação realizada durante o Interopmix (24/08/2015):
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microservices
Tópicos abordados nesta apresentação realizada durante o ALM Roadshow 2015 - São Paulo (07/11/2015):
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microservices
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
O documento analisa três frameworks PHP populares: CakePHP, CodeIgniter e Zend Framework. Explora o que são frameworks, suas vantagens e desvantagens, e fornece detalhes sobre a estrutura, funcionalidade e aplicabilidade de cada um.
O documento discute as arquiteturas SOA, WOA e REST. SOA é uma filosofia de construção de software baseada em serviços, enquanto WOA adapta SOA para a web usando recursos HTTP. REST é um estilo arquitetural para sistemas distribuídos na web que usa apenas HTTP. O documento também discute as vantagens de SOA e como empresas como TIM e Pão de Açúcar a utilizam.
O documento discute arquitetura orientada a serviços (SOA), arquitetura orientada para web (WOA) e REST. SOA descreve uma metodologia para desenvolvimento de software baseada em serviços reutilizáveis. WOA estende SOA para aplicações web. REST usa protocolo HTTP e URIs para identificar recursos e permitir que sistemas se comuniquem independentemente de plataforma.
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesJackson F. de A. Mafra
Em um momento ou outro, todo desenvolvedor se depara com o mesmo problema - seu aplicativo começa a ficar mais lento, começa a cair e não está disponível.
Muitas vezes, isso se resume a muitos usuários, muitos dados armazenados - em outras palavras, um problema de escala.
Analisando uma gama de opções, desde escalonamento horizontal e vertical até cache, fragmentação e otimização, veremos abordagens de escalonamento que podem ser usadas em novas aplicações e também algumas que podem ser adaptadas retroativamente a aplicações existentes.
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
O documento discute APIs, REST e arquitetura RESTful. Explica que APIs permitem a integração entre sistemas e microserviços estruturam soluções como coleções de serviços levemente acoplados. REST é um estilo de projetar aplicativos da Web fracamente acoplados usando recursos nomeados e métodos HTTP padronizados. Arquitetura RESTful significa que uma aplicação web segue os princípios de design REST.
1) RAD (Rapid Application Development) é um modelo de desenvolvimento de software iterativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias).
2) O processo de RAD inclui fases como modelagem de negócios, modelagem de dados, geração da aplicação e teste, variando de acordo com a abordagem adotada.
3) RAD tem vantagens como desenvolvimento rápido, prototipagem, reuso de componentes e envolvimento do usuário, mas também desvantagens como dificuldade para projetos grandes e riscos em test
Semelhante a Uaijug ADF - spring boot - microservice - Introdução (20)
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
1) O documento apresenta os princípios e benefícios do Desenvolvimento Dirigido por Testes (TDD), incluindo a melhoria da qualidade do código e das estimativas.
2) O TDD utiliza um ciclo de desenvolvimento em pequenos passos: escrever um teste falho, fazer o teste passar e refatorar o código.
3) Os testes unitários validam unidades individuais de código e são essenciais para manter o código seguro e livre de bugs.
O documento discute os princípios de código limpo, incluindo: (1) código limpo deve ser eficiente e ter lógica direta para minimizar bugs, (2) deve ter poucas dependências, e (3) deve ser legível para facilitar manutenção. Ele também fornece dicas como usar nomes significativos e formatar código claramente.
Rogério Fontes apresenta sobre MongoDB, incluindo: (1) Quem é Rogério Fontes e suas experiências com desenvolvimento de código; (2) Uma introdução ao MongoDB, comparando-o com bancos de dados relacionais e discutindo onde e como usá-lo; (3) Demonstração prática do uso de comandos básicos do MongoDB.
O documento descreve a nova versão do servidor JBoss, chamada WildFly 8. Ele apresenta as principais mudanças e melhorias como o suporte completo à especificação JEE7 e um novo módulo de layout de sistema de arquivos. Além disso, fornece um tutorial passo a passo para criar um projeto simples usando EJB 3.2 no WildFly.
O documento discute as características e funcionalidades dos dispositivos móveis e da linguagem HTML5. Apresenta os principais elementos estruturais e de conteúdo introduzidos no HTML5, como <header>, <section>, <article>, <aside>, <figure>, <canvas>, <audio> e <video>. Também discute elementos retirados e a transição do XHTML para o HTML5.
O documento descreve desafios e estratégias para empreender no interior de Minas Gerais, onde há muitas pequenas empresas dependentes de outras maiores e salários baixos. Recomenda trabalhar em outra empresa e usar horários livres para criar projetos próprios, evitando dívidas. Aconselha usar ferramentas ágeis e liberar versões de teste para ganhar receita com produtos diversos, inovando com paixão e persistência.
2. Agenda
• Conceitos de Microserviços
• Conceitos do Modelo arquitetural RestFul.
• O que é o spring boot?
• Overview de como funciona o Spring boot.
• Criando uma Aplicação, baseada em microsevice.
• Customização, padrões e extensão e conceitos fundamentais e
de performasse do Java.
14/07/2018
5. Sobre Palestrante
• Apaixonado em Maneiras e Formas Ágeis de Criar Código
Fonte.
• Sempre programando com um Bom Café e Escutando um Belo
e Pesado Rock`n Roll... Trabalha há mais de 10 Anos com JAVA
e LINUX, passando por ANDROID, PYTHON, PHP, ANGULAR E
NODE.JS.
• É Professor Universitário e ministra as disciplinas: Redes de
Computadores; Java e Dispositivos Móveis. Jugleader e Co-
Fundador do UAIJUG (Grupo de Usuários do Triângulo
Mineiro) e do TRIÂNGULO HACKERSPACE.
• Hoje na Equipe e dos projetos do PPE’s na ALGAR TECH.
14/07/2018
7. Microservices
• O que é arquitetura de micro serviço?
Para entendermos a arquitetura de micro serviços, precisamos
saber que não há uma definição formal ao termo micro
serviços. Não temos um modelo padrão que representado, que
podemos usar em nossos sistemas de micro serviços com base
nesse estilo arquitetural.
14/07/2018
8. Microservices
• Para arquitetura micro serviços, podemos seguir algumas
características comuns, que são compartilhadas para micro
serviços.
14/07/2018
9. Microservices
• Uma arquitetura de micro serviços é composta por uma
coleção de serviços pequenos e autónomos. Cada serviço
deve ter uma regra de negocio única, facilitando
escalabilidade, e gerência desse serviço.
14/07/2018
11. Microservices
Prós Contras
Melhor para gerenciar Complexidade
Stack de tecnologia, mais flexível Fontes de dados diferentes
Custo reduzido de falha Autenticação
Mais especializado Logs descentralizados
Divisão dos times API Gateway Bottleneck
Escalabilidade Seletiva Transações Distribuídas
Velocidade de desenvolvimento
Liberdade de escolha de tecnologias
14/07/2018
12. Microservices
14/07/2018
• O paradigma de Micro serviços está na moda mas temos que
parar para pensar nos prós e contras.
• Não há nada de errado com aplicações monolíticas, tudo
depende do seu contexto. É necessário avaliar esse contexto.
• Como em qualquer decisão de uso de alguma tecnologia, a
pergunta que você tem que fazer é: Qual problema eu quero
resolver com micro serviços? E quais problemas eu vou
introduzir com eles? É importante ter uma regra de negócio
separa? Vale a pena?
13. Microservices
14/07/2018
• Se sua empresa não tem uma cultura forte de DevOps,
esqueça Micro serviços. Micro Serviços, é fortemente acoplado
a cultura DevOps. Ou seja, testes automatizados, deploy
continuo entre outros conceitos.
“Primeiro fortaleça essa cultura e somente quando estiverem
muito bons nisso comecem a pensar nesse paradigma.”
• Deploy vai ser peça primordial no sucesso ou no fracasso de
um sistema baseado em micro serviços.
14. Microservices
14/07/2018
• Os benefícios normalmente superam as desvantagens de
aplicativos grandes e complexos. Mais sempre em mente,
melhoria continua:
“Crie e entregue um software melhor mais rápido, baseado em
arquitetura emergente.”
15. Microservices
14/07/2018
• Aprofundando mais:
• Monoliths and Conway’s Law
• Microservices: Avoiding the Monoliths
• Service Objects and Identifying Data
• Coordination and Dumb Pipes
• User creates a manual invoice
• User finishes a job, creating an invoice
• SOA vs. Microservices
• The Future of Microservice Architecture
17. Spring boot?
• Spring boot é uma grande “sacada” da equipe da Spring
Source. Essa sacada foi focar em minimizar o tempo de criação
e configuração de um projeto novo. Como isso o
desenvolvedor terá tempo de criar aplicação melhores,
focando em desenvolvever a sua regra de negócio.
Spring boot
14/07/2018
20. Spring boot?
• Baseado na arquitetura de Microservices, com ele é possível
criar facilmente aplicações completas com o mínimo de
esforço pois sua filosofia baseada em convenções elimina a
necessidade da maior parte das configurações.
Spring boot
14/07/2018
21. Spring boot?Spring boot
• Um ponto único de configuração, ao contrario de ter várias coleções de
configuração como spring-*.
• Uma ferramenta para começar muito rapidamente com o Spring
• Requisitos não-funcionais comuns para uma aplicação "real”
• Expõe um monte de recursos úteis por padrão
• É bem simpls com spring boot, se você alterar os padrões adotados.
14/07/2018
22. O que é RestFUL?
• Representation State Transfer (REST) é um estilo arquitetural,
quando dados e funcionalidades são acessado por URIs.
• REST não tem regras rígidas e consume é rápido
• REST é um estilo arquitetônico, não um padrão
• REST usa cabeçalhos para descrever os pedidos e respostas
• REST abraça os verbos HTTP (DRY)
14/07/2018
23. O que é RestFUL?
• Serviços Web RESTful são construídos para funcionar com os
protocolos HTTP (GET, PUT, DELETE, POST).
• É um protocolo de comunicação cacheado, Stateles, client-
side, como HTTP.
• É simples, leve e rápido.
14/07/2018
24. Sobre Resources
• Dados e funcionalidade são considerados Resources e
acessados usando URIs.
• Resources são manipulados usando as operações: [POST, PUT,
GET, DELETE].
• Recursos são separados de suas representações, de modo que
o seu conteúdo pode ser acessado em uma variedade de
formatos como HTML, JSON,Text, XML.
• Toda interação com os Resources são Stateless.
• Estado pode ser incorporado em mensagens de resposta para
apontar para futuros estados válidos da interação[1] [200,
201, 404, 500].
14/07/2018
26. Maturidade de Richardson
• O modelo de maturidade de Richardson é um caminho para
definir o nível de maturidade de uma API REST.
• Nível 0 - Uma única URI e um único HTTP method.
• Nível 1 – Diversas URI e um único HTTP method.
• Nível 2 – Diversas URI e diversos HTTP methods.
• Nível 3 - HATEOAS. Fornece links de hipermidia para
direcionar os usuário clientes.
14/07/2018
27. Os principios do REST
• Ser cliente-servidor – Deve sempre haver um cliente que
realiza as requisições e um servidor que as responde;
14/07/2018
28. Os principios do REST
• Sem estado – As requisições feitas pelo cliente devem conter
todas as informações necessárias para que o servidor consiga
processar o pedido. Ou seja, o servidor não tem seu estado
alterado e não trata requisições semelhantes de formas
diferentes devido a isso. Note que os recursos que o servidor
provê podem ser alterados, e que isso é completamente
diferente do estado da aplicação;
14/07/2018
29. Os principios do REST
• Cache – As respostas às requisições feitas pelo cliente podem
ser marcadas como “cacheáveis” ou “não-cacheáveis” pelo
servidor, indicando se podem ou não ser armazenadas em
cache pelo cliente;
14/07/2018
30. Os principios do REST
• Interface uniforme – Um dos pontos centrais do REST é a
ênfase na interface uniforme entre os componentes da
arquitetura. As informações devem ser transferidas de forma
padronizada. Este pré-requisito define outros quatro pré-
requisitos de interface:
• Identificação dos recursos – Cada recurso deve possuir um
identificador universal (URI – Universal Resource Identifier);
14/07/2018
31. Os principios do REST
Interface uniforme …
• Representação de recursos – Os recursos são manipulados a
partir de suas representações, que podem ser em diversos
formatos, como XML, JSON, TEXT, etc. Um detalhe importante
que uma aplicação REST não transmite o recurso
efetivamente, mas sempre uma representação do mesmo, em
um formato pré-acordado entre o cliente e o servidor;
• Mensagem auto descritivas – Os pedidos e respostas devem
conter meta-dados que indicam como o conteúdo transmitido
deve ser tratado (cabeçalhos para formato, autenticação, etc.);
14/07/2018
32. Os principios do REST
Interface uniforme …
• Utilização de hipermídia para estado da aplicação – Este pré-
requisito é o menos cumprido por aplicações autointituladas
RESTful: As representações de recursos obtidas em uma
aplicação REST devem possuir hiperlinks que permitam a
navegação do cliente pelos recursos. Ou seja, diferentemente
de arquiteturas baseadas em RPC (Remote Procedure Call), o
cliente não deve conhecer previamente as URIs para os
recursos da aplicação (apenas a raiz do serviço), sendo que o
servidor deve prover links que permita a descoberta dos
recursos pelo cliente; não há contrato do serviço e não há
garantia que um recurso em uma determinada URI possa estar
disponível no futuro;
14/07/2018
33. Os principios do REST
Interface uniforme …
• Sistema em camadas – A aplicação deve ser construída em
camadas sendo que uma camada só pode ver a camada
imediatamente abaixo. O objetivo principal deste pré-requisito é
garantir que as aplicações sejam escaláveis;
• Executar código sob demanda – O cliente deve ser capaz de
executar scripts armazenados no servidor de forma a estender as
funcionalidades do cliente. Um exemplo disso é a habilidade dos
browsers HTTP executarem JavaScripts. Este é o único pré-
requisito opcional para arquiteturas REST.
14/07/2018
34. Itentificação de Resources
• A sintaxe URI pode ser simplificada através do esquema:
{esquema}://{autoridade}{caminho}?{query}#{fragmento}
• Esquema: “HTTP”, “FTP”, “mailto”, “URN”, “tel”, “rtsp”, “file”
• Autoridade: www.app.com
• Caminho: /users
• Query: ?fields=_id,content
• Fragmento: #titleContent
14/07/2018
35. Interface uniforme
• Princípios Flexívies “No Hard and Fast Rules”
• Identificação dos Recursos
• Manipulação de Recursos
• Auto-descrição de Mensagens
• Hypermedia é o motor de estado da Aplicação.
14/07/2018
36. Formatos de mídia:
• Quando falamos de HTTP os tipos de conteúdo comumente
suportados são os definidos pela IANA. Esses contratos são
negociados da seguinte maneira:
• Accept: application/xml, application/json – Cliente declara
formatos aceitos de resposta
Content-Type: application/json – Servidor indica formato da
resposta
14/07/2018
37. Métodos:
• Como já é de se esperar o protocolo mais comum usado em
arquiteturas REST é o HTTP que define 6 métodos-base em
sua versão 1.1:
• GET
• POST
• PUT
• DELETE
• OPTIONS
• HEAD
14/07/2018
38. Respostas de métodos:
• Categorias:
• 1xx: informational
• 2xx: success
• 3xx: redirection
• 4xx: client error
• 5xx: server error
• "HTTP response codes for dummies. 50x: we fucked up. 40x:
you fucked up. 30x: ask that dude over there. 20x: cool."
@DanaDanger.
14/07/2018
39. Verbos
• GET - Recuperar Informação.
• Devem ser seguros e idempotente, ou seja, sempre tem o
mesmo valor mesmo ser chamado várias vezes.
• GET /users
14/07/2018
40. Verbos
• POST - Solicitar que um recurso seja criado.
• A maior diferenca entre POST e PUT é a identidicação na URI
• POST /users
14/07/2018
41. Verbos
• PUT - Solicitar que um recurso seja alterado.
• PUT /users/1/role/2
• {"status":"SELECTED"}
14/07/2018
42. Verbos
• DELETE - Solicitar que um recurso seja removido.
• DELEE /users/1
14/07/2018
43. Anotações Rest
• @Path - Um URI relativo indica onde a classe Java será
hospedada.
• @[GET/PUT/POST/DELETE] - rá processar solicitações HTTP
requests
• @[PathParam/QueryParam] - para extrair os parâmetros
• @[Consumes/Produtos] - espeficica MIME types
14/07/2018
44. Suporte MINEs types
• @Consumes – Específica a lista de media types que podem ser
consumidos.
• @Produces - Específica a lista de media types que podem ser
produzidos.
• Media-Types:
• application/xml
• application/json
• text/plain
• text/html
14/07/2018
47. Instalação
• Java (>=1.6) + (for Java projects) Maven 3 or gradle >=1.6
• Download:
http://repo.spring.io/milestone/org/springframework/boot/sp
ring-boot-cli/0.5.0.M6/spring-boot-cli-0.5.0.M6-bin.zip
• Descompactar e procurar o diretorio: bin/
• $ spring --help ...
14/07/2018
48. Iniciando super rápido
• @RestController
• class Example {
• @RequestMapping("/")
• public String hello() {
• return "Hello World!";
• }
}
• $ mvn spring-boot:run
• ... application is running at http://localhost:8080
14/07/2018
49. O Que aconteceu?
• // import org.springframework.web.bind.annotation.RestController
// other imports ... //
• //@Grab("org.springframework.boot:spring-boot-web-
starter:0.5.0")
• // @EnableAutoConfiguration
• @RestController
• class Example {
• @RequestMapping("/")
• public String hello() {
• return "Hello World!";
• }
• }
14/07/2018
50. O Que aconteceu?
• // import org.springframework.web.bind.annotation.RestController
// other imports ...
• // @Grab("org.springframework.boot:spring-boot-web-
starter:0.5.0")
• // @EnableAutoConfiguration
• @RestController
• class Example {
• @RequestMapping("/")
• public String hello() {
• return "Hello World!";
• }
• // public static void main(String[] args) {
• // SpringApplication.run(Example.class, args);
• //
• }
• }
14/07/2018
51. Spring boot em Java
• import org.springframework.boot.SpringApplication;
• import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
• import org.springframework.context.annotation.*;
• @RestController
• @EnableAutoConfiguration
• public class MyApplication {
• public static void main(String[] args) {
• SpringApplication.run(MyApplication.class, args);
• }
• }
14/07/2018
52. Iniciando os POMs
• O Spring boot usa o conceito de POMs padrões do que é mais
usado no Spring.
• <dependency>
• <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
• </dependency>
• Esse resume tudo que é necessário para iniciar uma aplicação
web, Spring MVC.
14/07/2018
53. Iniciando os POMs
• Spring 4.0 – Sem Spring boot
• <!-- Spring dependencies -->
• <dependency>
• <groupId>org.springframework</groupId>
• <artifactId>spring-core</artifactId>
• <version>${spring.version}</version>
• </dependency>
• <dependency>
• <groupId>org.springframework</groupId>
• <artifactId>spring-web</artifactId> <version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
14/07/2018
54. Iniciando os POMs
• Essa opção está disponível para web, batch, integration, data,
amqp, aop, jdbc, ...
• e.g. data = hibernate + spring-data + JSR 303
14/07/2018
55. SpringApplication
• SpringApplication app = new SpringApplication(MyApplication.class);
• app.setShowBanner(false);
• app.run(args);
• Essa opção roda a apllicação com Spring ApplicationContext.
• Use EmbeddedWebApplicationContext para aplicações web,
que vai gerar um ambiente embarcado.
• Podemos rodar por uma unica linha, com o comando:
• SpringApplication.run(MyApplication.class, args)
• Ou pode ser customizado (veremos mais tarde)
14/07/2018
56. @EnableAutoConfiguration
• Anotar uma classe com @Configuration indica que essa classe pode ser
usada pelo Spring como fonte de definições de beans.
• @Configuration
• @EnableAutoConfiguration
• public class MyApplication {
• }
• Podemos usar @ConditionalOnClass e @ConditionalOnMissingBean,
não veremos nesse artigo.
14/07/2018
57. @Configuration
• DispatcherConfig.java
• @Configuration
• @Import(WebAppConfig.class)
• public class DispatcherConfig {
• @Bean
• public ViewResolver viewResolver() {
• InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
• viewResolver.setPrefix("/WEB-INF/jsp/");
• viewResolver.setSuffix(".jsp"); return viewResolver;
• }
• }
14/07/2018
59. Empacotando para produção
• $ java -jar yourapp.jar
• O Spring boot gera um simples jar para rodar a aplicação
então basta rodar com um comando simple de jar do java, que
a aplicação já estará sobrando, ou seja, não precisa
descompactar ou criar scripts como sh ou python para rodar
essa aplicação. Aplicação gerada é leve e eficiente, pacote com
menos de 10Mb.
14/07/2018
60. Módulos do Spring Boot
• Spring Boot – Biblioteca principal que suporta outras partes do
Spring.
• Spring Boot Autoconfigure - @EnableAutoConfiguration
annotation, cria um conjunto de contexto do Spring.
• Spring Boot Starters - Um conjunto de dependency descriptors
que você pode incluir em sua aplicação.
• Spring Boot CLI – Compila sua aplicação Spring usando groovy
e rodando-a no terminal.
14/07/2018
61. Módulos do Spring Boot
• Spring Boot Actuator[11] - Actuator habilita os recurso
production-ready, para uma aplicação de inicialização Spring -
sem ter de aplicar na prática estas coisas sozinho.
• Eles são usados principalmente para expor diferentes tipos de
informações sobre o aplicativo em execução - saúde, métricas,
info, despejo, env etc. E enquanto estes são nenhum
substituto para uma solução de monitoramento de nível de
produção - elas são um bom ponto de partida.
14/07/2018
62. Módulos do Spring Boot
• Spring Boot Tools - Usado para construir um container
proprios para arquivos jars e WARs
• Spring Boot Samples - Uma ampla gama de aplicativos de
exemplo para seguir e usar.
14/07/2018
64. Não é uma aplicação web?
• CommandLineRunner
• é um gancho para executar código específico do aplicativo
depois que o contexto é criado.
• @Component public class Startup implements CommandLineRunner {
• @Override
• public void run(String... args) throws Exception {
• System.out.println("Hello World");
• }
}
14/07/2018
65. SpringApplicationBuilder
• Estilo flexivel para construir API fluente para construção de
uma Aplicação Spring com requisitos mais complexos.
• new SpringApplicationBuilder(ParentConfiguration.class)
• .profiles("adminServer”,"single")
• .child(AdminServerApplication.class) .run(args);
14/07/2018
66. Ambiente e Perfis
• Todo ApplicationContext tem um Ambiente (Environment)
• Spring Environment existe desde a versão 3.1
• Abstracção por pares de chave / valor de múltiplas fontes
• Usado para gerenciar trocas de @Profile.
• Always available: System properties and OS ENV vars
• Sempre disponível: Propriedades do sistema e OS ENV vars.
14/07/2018
67. Command Line Arguments
• SpringApplication acrescenta argumentos de linha de
comando para o Ambiente do Spring para que possa consultá-
los e injetar os beans:
• @Value("${name}")
• private String name;
• $ java -jar yourapp.jar --name=Dave
• Você também pode configurar muitos aspectos do Spring
Boot:
• $ java -jar target/*.jar --server.port=9000
14/07/2018
68. Propriedades
• Basta colocar o arquivo application.properties no seu
classpath ou no mesmo diretorio do seu jar.
• Arquivo /src/main/resource/application.properties
• server.port: 9000 # conteúdo de exemplo.
• Properties pode ser subistituídas (command line
arg > file > classpath)
14/07/2018
69. Use YAML
• É uma forma de você definir uma ou mais ambientes
• Inclu-a snake-yaml.jar e o arquivo application.yml em seu
classpath
• /src/main/resources/application.yml
• server: port: 9000
• Podemos definir mais de um ambiente no YAML, se
necessário.
14/07/2018
71. DataBinding
para @ConfigurationProperties
• Spring DataBinder faz a coerção e a conversão quando possível.
• Custom ConversionService adicionalmente descobre o nome do
bean (igual a ApplicationContext)
• Ditto for validation
• configurationPropertiesValidator bean, se ele estiver presente.
• JSR303, se ele estiver presente.
• ignoreUnkownFields=true (default)
• ignoreInvalidFields=false (default)
•
• Usa uma RelaxedDataBinder que aceita variaveis comuns para
nomes de propriedades
(e.g. CAPITALIZED, camelCased orwith_underscores)
• Também faz bind para o SpringApplication
14/07/2018
72. Customizandoconfiguraçãolocal
• Set
• spring.config.name - default application, por ser separado por
virgula a lista de nomve
• spring.config.location - a Resource path, substitui o nome
• .
• $ java -jar target/*.jar --spring.config.name=production
14/07/2018
73. Spring Profiles
• ….
• Activate external configuration with a Spring profile
• file name convention e.g. application-development.properties
• or nested documents in YAML:
• application.yml
• defaults: etc... --- spring: profiles: development,postgresql
other: stuff: more stuff...
• Set o perfil default do spring em uma configuração externa:
• application.properties
• spring.profiles.active: default, postgresql
14/07/2018
74. Logging
• Spring Boot providencia uma configuração default usando a
commons logging frameworks: logback, log4j e
java.util.logging
• Starters (e Samples) usam logback com cores para output do
log.
• Configuração externa e classpath influiencia o comportamento
do runtime
• LoggingApplicationContextInitializer, configura a dependência
do framework de logging que ele encontra no classpath e no
Ambiente (Environment).
14/07/2018
76. Adding Static Resources
• Facilidade: use classpath:/static/**
• Muitas alternativas:
• classpath:/public/**
• classpath:/resources/**
• classpath:/META-INF/resources/**
• Normal servlet context / (root of WAR file, será visto depois)
• i.e. src/main/webapp se criado com Maven ou Gradle
• static/**
• public/**
• set documentRoot in EmbeddedServletContextFactory (será visto
depois)
• Tratamento especial para o index.html (em qualquer um dos locais
acima)
14/07/2018
77. Adicino UI comThymeleaf
• Adicione Thymeleaf no seu classpath para redenrizar a view.
• Spring Boot Autoconfigure adiciona configurações padrões.
• Configurações padrões via spring.thymeleaf.*, e.g.
• spring.thymeleaf.prefix:classpath:/templates/ (location of
templates)
• spring.thymeleaf.cache:true (seta para false pra atualizar
templates quando mudados)
• Para extender e substituir, apenas adicione os beans:
• Thymeleaf IDialect
• thymeleafViewResolver
• SpringTemplateEngine
• defaultTemplateResolver
14/07/2018
78. Comportamento do
Autoconfigured
• Embedded servlet container (Tomcat or Jetty)
• JDBC: DataSource and JdbcTemplate
• JPA, JMS, AMQP (Rabbit), AOP
• Websocket
• Spring Data JPA (scan for repositories) e Mongodb
• Thymeleaf
• Mobile
• Batch processing
• Reactor for events and async processing
• Actuator features (Security, Audit, Metrics, Trace)
14/07/2018
79. Actuator
• Adiciona requisitos não funcionais para aplicação e expoem
endpoints MVC para interações Security
• Secure
endpoints: /metrics, /health, /trace, /dump, /shutdown, /bean
s, /env
• /info
• Audit
• Se a aplicação for embarcada use a mesma porta diferente
(management.port) e direfentes interfaces de rede
(management.address) e caminho do contexto
(management.context_path).
14/07/2018
80. Adicione um servidor SSH
• Use o Actuator.
• Adicione spring-boot-starter-shell-remote no classpath.
• A aplicação é exposta na porta 2000 de SSH por default.
14/07/2018
81. Criando seu WAR
• Spring boot usa por padrao o resultado da aplicação em um
jar, mas se quisermos podemos reda-lo com WAR para
colocara em nossos servidores. Para isso podemos
usar SpringBootServletInitializer em vez do nosso
“famoso” SpringApplication.
14/07/2018
82. CustomizandoBusiness Content
• Relembre, spring boot é Spring.
• Adicione definições de@Bean
• Use @Autowired, @Value e @ComponentScan
• Groovy CLI auto-imports common DI annotations
• Mesmo se você usar XML se você gosta.
14/07/2018
83. CustomizandoApplicationContext
• Diretamente SpringApplication instance (spring.main.*)
• Adicione configuração externa (System properties, OS env
vars, config file, command line arguments)
• Adicione implementações SpringApplicationInitializer e
habilite dentro de META-INF/spring.factories
14/07/2018
84. CustomizandoApplicationContext
• Desabilite feature específica:
• @EnableAutoConfiguration(disable={WebMvcAutoConfigurati
on.class})
• Escreva seu próprio...
• Add JAR com META-INF/spring.factories entrada
para EnableAutoConfiguration
• Todas as entradas do classpath aleradas e adicionadas para o
context
14/07/2018
85. Customizando o CLI
• Use standard Java META-INF/services scanning
• CompilerAutoConfiguration: adicione dependencias e imports
• CommandFactory: adicione comandos via a
custom CommandFactory in META-INF/services
• E.g. pode-se adicionar script commands (written in Groovy)
• $ spring foo ...
• Exemplo:
• Para foo.groovy in ${SPRING_HOME}/bin and ${SPRING_HOM
E}/ext por default.
14/07/2018
86. Customizando Container de
propriedades
• Algumas features comuns são exportas com configuração
externa, exemplo:
server.port (ServerProperties bean) Adicionento um bean de
tipo EmbeddedServletContainerCustomizer - todas as
instancias pega o callback.
• Adiciona bean de
tippo EmbeddedServletContainerFactory (subistitue uma
auto-configução)
14/07/2018
87. Spring Boot Loader
• Motivação: Existe soluções para executar JAR que não são
robustas; WAR executável é muito difícil de criar.
• Resposta: JarLauncher e WarLauncher comspecialized ClassLo
ader e JarFile implementations que pode encontrar resources
dentro dos JARs (e.g. lib/*.jar or WEB-INF/lib/*.jar)
14/07/2018
88. Spring Test (and MVC)
• SpringApplication é um criador de ApplicationContext
opinativo, mas a maior parte do comportamento é
encapsulado em implementações
inApplicationContextInitializer. Para reproduzir o
comportamento do seu aplicativo em, por exemplo, em um
teste de integração é útil para duplicar esses recursos, para
que você possa usar os initializers correspondentes. Você
pode usar contexto correspondentes fornecido pelo Spring
Boot.
14/07/2018
89. Spring Test (and MVC)
• Exemplo com configuração externa:
• @RunWith(SpringJUnit4ClassRunner.class)
• @ContextConfiguration(classes = IntegrationTestsConfiguration.class, loader =
SpringApplicationContextLoader.class)
• public class IntegrationTests {
• // Normal Spring Test stuff
• }
• dica: use spring-boot-starter-test no pom do maven.
14/07/2018