Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Falando de Microservices: Configurações

40 vues

Publié le

OBS: Para ver o slide em qualidade melhor, fazer o download
Apresentação: Falando de Micro Serviços - Configurações
Código fonte de exemplo: https://github.com/justiandre/exemplo.springcloudconfig
Contatos:
- Linkedin: https://www.linkedin.com/in/andrejusti/
- Github: https://github.com/justiandre
- E-mail: andre.justi@gmail.com

Publié dans : Technologie
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Soyez le premier à aimer ceci

Falando de Microservices: Configurações

  1. 1. Por André Justi Grupo de estudos UCS Falando de Microservices: Configurações
  2. 2. Agenda ● Problema ● Padrões ● Ferramentas ● Exemplo ● Referências OBS: Essa apresentação foi criada em Junho/2019.
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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:
  20. 20. Exemplo Spring Cloud Config https://github.com/justiandre/exemplo.springcloudconfig + + +
  21. 21. Referências O'Reilly Building Microservices por Sam Newman microservices.io Packt Mastering Spring Cloud por Piotr Mińkowski Twelve-Factor App
  22. 22. !!! /justiandre /in/andrejusti andre.justi@gmail.com André Justi Junho/2019

×