SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Por André Justi
Grupo de estudos UCS
Falando de
Microservices:
Configurações
Agenda
● Problema
● Padrões
● Ferramentas
● Exemplo
● Referências
OBS: Essa apresentação foi criada em Junho/2019.
Problema
Com adoção em grande escala de micro serviços nas empresas, fica cada
vez mais difícil garantir e gerenciar as configurações das aplicações, com
essa adoção vem a facilidade de se utilizar inúmeras tecnologías (Go, Java,
Groovy, JS, Python, Kotlin etc), tendo em vista também que cada tecnologia
tem sua forma de configuração, isso torna a gestão de configuração ainda
mais problemática
Exemplo:
service 04
JS
+ Node
service 01
JS
+ Node
service 05
Java
+ Spring
service 03
Python
+ Django
service 06
Python
+ Django
settings.py
service 02
Java
+ Spring
application.yml
node.env
node.env
application.yml
settings.py
Serviços com tecnologias
e características de
configurações diferentes
Problema
Outros problemas comuns:
● Dificuldade de gerenciar as configurações de cada tipo de ambiente,
como, desenvolvimento, homologação, produção etc
● Dificuldade de saber quais configurações necessárias para executar
cada sistema/serviço
● Dificuldade de atualizar as configurações do sistema, sem necessidade
de gerar uma nova versão do sistema, ou atualizá lo
● Dificuldade de centralizar as configurações em um local único e seguro
Padrões
O que diz o The Twelve-Factor App sobre isso:
A configuração de uma aplicação é tudo que varia entre deploys
(homologação, produção, ambientes de desenvolvimento, etc). Isto inclui:
● Recursos para o DB, Memcached, e outros serviços de apoio
● Credenciais para serviços externos como Amazon S3 ou Twitter
● Valores por deploy como o nome canônico do host
Padrões
Aplicações às vezes armazenam as configurações no código como
constantes. Isto é uma violação dos 12 fatores, a qual exige uma estrita
separação entre configuração e código. Configuração varia
substancialmente entre deploys, código não.
A prova de fogo para saber se uma aplicação tem todas as configurações
corretamente consignadas fora do código, é saber se a base de código
poderia ter seu código aberto ao público a qualquer momento, sem
comprometer as credenciais ou endereçamentos.
Padrões
O que diz o Chris Richardson do microservices.io sobre isso:
Contexto
Um aplicativo geralmente usa uma ou mais infraestruturas e serviços de
terceiros.
● Exemplos de serviços de infraestrutura incluem: um registro de serviço
um intermediário de mensagem e um servidor de banco de dados.
● Exemplos de serviços de terceiros incluem: processamento de
pagamentos, email e mensagens, urls, etc.
Padrões
Problema
Como habilitar um serviço para ser executado em vários ambientes sem
modificar seu código?
Solução
Externalize toda a configuração do aplicativo, incluindo as credenciais do
banco de dados e a localização da rede. Na inicialização, um serviço irá ler
a configuração de uma fonte externa, como por exemplo, as variáveis de
ambiente do sistema operacional ou um config server.
Assim não será necessário nenhuma alteração no código fonte de
ambiente para ambiente.
Padrões
Atualmente é considerado um Anti Pattern de Microservice a configuração
dentro de cada aplicação.
MicroServices Anti-Pattern
service 04
JS
+ Node
service 01
JS
+ Node
service 05
Java
+ Spring
service 03
Python
+ Django
service 06
Python
+ Django
settings.py
service 02
Java
+ Spring
application.yml
node.env
node.env
application.yml
settings.py
Exemplo de vários
serviços, cada um com
suas configurações
Ecossistema de uma aplicação com microservices
Padrões
MicroServices Pattern
Externalized configuration
Exemplo de vários serviços,
com todas as configurações
centralizadas
Ecossistema de uma aplicação com microservices
service 01
JS
+ Node
service 05
Java
+ Spring
service 06
Python
+ Django
service 04
JS
+ Node
service 03
Python
+ Django
Config
Server
service 02
Java
+ Spring
get configurations
Ferramentas
Existem muitas ferramentas para resolver a gestão de configuração em
sistemas.
Algumas resolvem o problema a nível de infraestrutura, como Kubernetes
ConfigMap & Secrets e outras a nível de código, como, Spring Cloud Config
que será detalhada em seguida.
Ferramentas
Spring Cloud Config
Spring Cloud Config é uma aplicação feita sobre Spring Boot que provê
uma solução centralizada para gerenciamento de configuração. Entre suas
vantagens estão:
Atualização das configurações em tempo real
É possível atualizar as configurações das aplicações sem a necessidade de
criação de uma nova versão da mesma ou de se realizar um restart. Dessa
forma, uma única ação é realizada e está atualizará as configurações de
uma aplicação em todos os seus nodos.
+ +
Ferramentas
Consumo via API REST
Como a solução é baseada em REST, é simples para qualquer aplicação, de
qualquer linguagem ou natureza, consumir os dados do Spring Cloud
Config. Existe uma facilidade para aplicações JVM com Spring Boot porque
já possui um cliente que facilita a recuperação das configurações.
Versionamento das configurações
Como as configurações normalmente ficam armazenadas no GIT, é simples
saber quais foram as alterações realizadas, quem fez, quando e porque
aconteceram.
Ferramentas
Configurações baseadas em perfis
As configurações no Spring Cloud Config são armazenadas baseadas em
perfis. Dessa forma também conseguimos definir um perfil default com as
configurações padrão e um perfil específico, alterando só o conteúdo de
algumas configurações.
Arquitetura stateless
Como a base arquitetural do Spring Cloud Config é totalmente stateless é
muito simples escalar a solução.
Ferramentas
Arquitetura Spring Cloud Config
Ecossistema de uma aplicação com microservices
service
01
service
02
service
03
get configurations
Repo
Configs
Config
Server
Atualizador
Por padrão o repositório de
configurações é o GIT, mas
pode ser usado SVN, Banco
de dados etc
Por padrão o atualizar é o
RabbitMQ, mas pode ser usado
Kafka ou Redis, o atualizador
também é de uso opcional.
Ferramentas
Estrutura do repositório GIT e arquivos:
● application.yml: Arquivo com configurações carregadas por todas
aplicações, independente do perfil, utilizado para configurações
gerais.
● application-{profile}.yml: Arquivo com configurações carregadas
por todas aplicações, mas para um perfil específico. Carrega e
sobrescrever as configurações do arquivo application.yml
Ferramentas
● {appName}.yml: Arquivo com configurações de uma aplicação
específica, independente do perfil, sobrescreve as configurações dos
arquivos application.yml e application-{profile}.yml
● {appName}-{profile}.yml: Arquivo com configurações de uma
aplicação específica e de um perfil específico, sobrescreve as
configurações dos arquivos application.yml, application-{profile}.yml e
{appName}-{profile}.yml
OBS: Os arquivos podem ser na extensão .properties e podem ser criadas
pastas para dividir a configuração de cada aplicativo.
Ferramentas
Acessando as configurações
O Config Server disponibiliza APIs baseadas nos arquivos de configurações.
Com isso, as configurações podem ser requisitadas das seguintes formas:
● GET /{appName}/{profile}/{key}: Recupera uma propriedade de uma
aplicação de um perfil específico.
● GET /{appName}-{profile}.yml: Recupera todas as propriedades de
uma aplicação de um perfil específico.
● GET /{appName}-default.yml: Recupera todas as propriedades sem
perfil de uma aplicação.
OBS: As propriedades podem ser recuperadas tanto no formato .json quanto
no .properties. Para isso, basta alterar o sufixo da URL.
Ferramentas
Processo de carregamento das configurações com atualização em
tempo real
Config
Server
Atualizador
Repo
Configs service
app
client
Alteração na
configuração
5
6
8
1 3 , 9
4
2
7
Lê todas as configurações
Se inscreve na fila para notificar as atualizações
Carrega as configurações da aplicação
Se inscreve na fila para receber as atualizações
Faz alteração de uma configuração
Dispara WebHook para Config Server informando a atualização
ConfigServer envia uma notificação de atualização
App Cliente recebe a notificação de atualização
Recarrega as configurações
1
2
3
4
5
6
7
8
9
Passos:
Exemplo
Spring Cloud Config
https://github.com/justiandre/exemplo.springcloudconfig
+ + +
Referências
O'Reilly
Building
Microservices
por Sam Newman
microservices.io
Packt
Mastering Spring
Cloud
por Piotr Mińkowski
Twelve-Factor
App
!!!
/justiandre
/in/andrejusti
andre.justi@gmail.com
André Justi
Junho/2019

Weitere ähnliche Inhalte

Kürzlich hochgeladen

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Kürzlich hochgeladen (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Empfohlen

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Falando de Microservices: Configurações

  • 1. Por André Justi Grupo de estudos UCS Falando de Microservices: Configurações
  • 2. Agenda ● Problema ● Padrões ● Ferramentas ● Exemplo ● Referências OBS: Essa apresentação foi criada em Junho/2019.
  • 3. Problema Com adoção em grande escala de micro serviços nas empresas, fica cada vez mais difícil garantir e gerenciar as configurações das aplicações, com essa adoção vem a facilidade de se utilizar inúmeras tecnologías (Go, Java, Groovy, JS, Python, Kotlin etc), tendo em vista também que cada tecnologia tem sua forma de configuração, isso torna a gestão de configuração ainda mais problemática Exemplo: service 04 JS + Node service 01 JS + Node service 05 Java + Spring service 03 Python + Django service 06 Python + Django settings.py service 02 Java + Spring application.yml node.env node.env application.yml settings.py Serviços com tecnologias e características de configurações diferentes
  • 4. Problema Outros problemas comuns: ● Dificuldade de gerenciar as configurações de cada tipo de ambiente, como, desenvolvimento, homologação, produção etc ● Dificuldade de saber quais configurações necessárias para executar cada sistema/serviço ● Dificuldade de atualizar as configurações do sistema, sem necessidade de gerar uma nova versão do sistema, ou atualizá lo ● Dificuldade de centralizar as configurações em um local único e seguro
  • 5. Padrões O que diz o The Twelve-Factor App sobre isso: A configuração de uma aplicação é tudo que varia entre deploys (homologação, produção, ambientes de desenvolvimento, etc). Isto inclui: ● Recursos para o DB, Memcached, e outros serviços de apoio ● Credenciais para serviços externos como Amazon S3 ou Twitter ● Valores por deploy como o nome canônico do host
  • 6. Padrões Aplicações às vezes armazenam as configurações no código como constantes. Isto é uma violação dos 12 fatores, a qual exige uma estrita separação entre configuração e código. Configuração varia substancialmente entre deploys, código não. A prova de fogo para saber se uma aplicação tem todas as configurações corretamente consignadas fora do código, é saber se a base de código poderia ter seu código aberto ao público a qualquer momento, sem comprometer as credenciais ou endereçamentos.
  • 7. Padrões O que diz o Chris Richardson do microservices.io sobre isso: Contexto Um aplicativo geralmente usa uma ou mais infraestruturas e serviços de terceiros. ● Exemplos de serviços de infraestrutura incluem: um registro de serviço um intermediário de mensagem e um servidor de banco de dados. ● Exemplos de serviços de terceiros incluem: processamento de pagamentos, email e mensagens, urls, etc.
  • 8. Padrões Problema Como habilitar um serviço para ser executado em vários ambientes sem modificar seu código? Solução Externalize toda a configuração do aplicativo, incluindo as credenciais do banco de dados e a localização da rede. Na inicialização, um serviço irá ler a configuração de uma fonte externa, como por exemplo, as variáveis de ambiente do sistema operacional ou um config server. Assim não será necessário nenhuma alteração no código fonte de ambiente para ambiente.
  • 9. Padrões Atualmente é considerado um Anti Pattern de Microservice a configuração dentro de cada aplicação. MicroServices Anti-Pattern service 04 JS + Node service 01 JS + Node service 05 Java + Spring service 03 Python + Django service 06 Python + Django settings.py service 02 Java + Spring application.yml node.env node.env application.yml settings.py Exemplo de vários serviços, cada um com suas configurações Ecossistema de uma aplicação com microservices
  • 10. Padrões MicroServices Pattern Externalized configuration Exemplo de vários serviços, com todas as configurações centralizadas Ecossistema de uma aplicação com microservices service 01 JS + Node service 05 Java + Spring service 06 Python + Django service 04 JS + Node service 03 Python + Django Config Server service 02 Java + Spring get configurations
  • 11. Ferramentas Existem muitas ferramentas para resolver a gestão de configuração em sistemas. Algumas resolvem o problema a nível de infraestrutura, como Kubernetes ConfigMap & Secrets e outras a nível de código, como, Spring Cloud Config que será detalhada em seguida.
  • 12. Ferramentas Spring Cloud Config Spring Cloud Config é uma aplicação feita sobre Spring Boot que provê uma solução centralizada para gerenciamento de configuração. Entre suas vantagens estão: Atualização das configurações em tempo real É possível atualizar as configurações das aplicações sem a necessidade de criação de uma nova versão da mesma ou de se realizar um restart. Dessa forma, uma única ação é realizada e está atualizará as configurações de uma aplicação em todos os seus nodos. + +
  • 13. Ferramentas Consumo via API REST Como a solução é baseada em REST, é simples para qualquer aplicação, de qualquer linguagem ou natureza, consumir os dados do Spring Cloud Config. Existe uma facilidade para aplicações JVM com Spring Boot porque já possui um cliente que facilita a recuperação das configurações. Versionamento das configurações Como as configurações normalmente ficam armazenadas no GIT, é simples saber quais foram as alterações realizadas, quem fez, quando e porque aconteceram.
  • 14. Ferramentas Configurações baseadas em perfis As configurações no Spring Cloud Config são armazenadas baseadas em perfis. Dessa forma também conseguimos definir um perfil default com as configurações padrão e um perfil específico, alterando só o conteúdo de algumas configurações. Arquitetura stateless Como a base arquitetural do Spring Cloud Config é totalmente stateless é muito simples escalar a solução.
  • 15. Ferramentas Arquitetura Spring Cloud Config Ecossistema de uma aplicação com microservices service 01 service 02 service 03 get configurations Repo Configs Config Server Atualizador Por padrão o repositório de configurações é o GIT, mas pode ser usado SVN, Banco de dados etc Por padrão o atualizar é o RabbitMQ, mas pode ser usado Kafka ou Redis, o atualizador também é de uso opcional.
  • 16. Ferramentas Estrutura do repositório GIT e arquivos: ● application.yml: Arquivo com configurações carregadas por todas aplicações, independente do perfil, utilizado para configurações gerais. ● application-{profile}.yml: Arquivo com configurações carregadas por todas aplicações, mas para um perfil específico. Carrega e sobrescrever as configurações do arquivo application.yml
  • 17. Ferramentas ● {appName}.yml: Arquivo com configurações de uma aplicação específica, independente do perfil, sobrescreve as configurações dos arquivos application.yml e application-{profile}.yml ● {appName}-{profile}.yml: Arquivo com configurações de uma aplicação específica e de um perfil específico, sobrescreve as configurações dos arquivos application.yml, application-{profile}.yml e {appName}-{profile}.yml OBS: Os arquivos podem ser na extensão .properties e podem ser criadas pastas para dividir a configuração de cada aplicativo.
  • 18. Ferramentas Acessando as configurações O Config Server disponibiliza APIs baseadas nos arquivos de configurações. Com isso, as configurações podem ser requisitadas das seguintes formas: ● GET /{appName}/{profile}/{key}: Recupera uma propriedade de uma aplicação de um perfil específico. ● GET /{appName}-{profile}.yml: Recupera todas as propriedades de uma aplicação de um perfil específico. ● GET /{appName}-default.yml: Recupera todas as propriedades sem perfil de uma aplicação. OBS: As propriedades podem ser recuperadas tanto no formato .json quanto no .properties. Para isso, basta alterar o sufixo da URL.
  • 19. Ferramentas Processo de carregamento das configurações com atualização em tempo real Config Server Atualizador Repo Configs service app client Alteração na configuração 5 6 8 1 3 , 9 4 2 7 Lê todas as configurações Se inscreve na fila para notificar as atualizações Carrega as configurações da aplicação Se inscreve na fila para receber as atualizações Faz alteração de uma configuração Dispara WebHook para Config Server informando a atualização ConfigServer envia uma notificação de atualização App Cliente recebe a notificação de atualização Recarrega as configurações 1 2 3 4 5 6 7 8 9 Passos: