Giter Site home page Giter Site logo

search's Introduction

search

Exemplo de arquitetura de microserviços utilizando Spring Cloud e Netflix OSS

Construído com:

  • Spring Boot - Responsável por criar o microserviço e realizar o seu processamento e persistência.
  • Maven - Ferramenta de build automático.
  • Junit - Ferramenta utilizar para criação dos testes unitários.
  • Mockito - Ferramenta utilizada para realizar mock de objetos referente a limitação de ambiente(dev,teste e produção).
  • Docker - Ferramenta utilizada para simular o ambiente de testes de forma íntegra.
  • Insominia - Ferramenta utilizada para realizar testes de chamadas via rest.
  • Swagger - Ferramenta utilizada para documentação da API construída neste projeto.
  • Jenkins - Ferramenta responsável pela execução da automatização de testes e integração contínua.
  • Spring Netflix Eureka - Service Discovery responsável por unificar o registros dos microserviços.
  • Spring Feign - Reponsável por executar o Load Balance através do Ribbon na chamada de intgração dos microserviços.
  • Spring Sleuth - Responsável por realizar o trace de log através de um identificador único(Trace ID).
  • Zuul-Gateway - Responsável por se conectar com o eureka e expor via gateway os microserviços registrados.

Arquitetura

  • Montei o fluxograma abaixo para representar de maneira ilustrativa como foi aplicado cada tecnologia e como se relacionam.

Microserviços

Configurações

Spring Cloud components Resources
Service Discovery Eureka server
API Gateway Zuul reverse proxy and [Routing configuration]
Circuit Breaker Hystrix fallback method

Service Discovery

  • Responsável por facilitar a comunicação entre 1 ou mais microserviços. Os microserviços se registram no Eureka e passam a ser chamado pelos demais através de sua alias. Este ponto ajuda bastante quando temos vários microserviços na solução e bem como mais de uma instância.

  • No exemplo abaixo é possível identificar os serviços registrados no Eureka. Com a arquitetura proposta é possível duplicar o serviços de (search-user-api e search-client-api, ...), caracterizando uma escalabilidade horizontal

Monitoramento

  • Atualmente a ferramenta mais utilizada por grande empresas para monitoramento de microserviços é o Splunk. Neste caso aqui fiz a utilização de um projeto chamado Spring Admin. A sua configuração é bem simples e sua interface é bastante amigável.

  • Visualização de Dashboard apresentando o tempos de disponibilidade atual e número de instâncias.

  • Detalhes de consumo e uso de memória

Executar o projeto

  • Deverá executar o projeto conforme as informações abaixo:

  • (1) search-eureka-server

  • (2) search-zuul-gateway

  • (3) search-auth-server

  • (4) search-monitor

  • (5) search-cycling-api

  • (6) search-user-api

Solução

  • A arquitetura de microserviços tem sido bastante popular após o uso de sistemas através da cloud. Este tipo de arquitetura é caracterizado pela abordagem de desmembrar o software através de comoponentes mínimos e independentes. Essa abordagem valoriza a granularidade, leveza e capacidade de compartilhamento de processos entre várias aplicações. Este ponto é indispensável para otimização do desenvolvimento de aplicações quando pensamos em um modelo nativo em nuvem.

  • A solução a apresentada aqui não tem fins de utilização comercial e sim apresentação de técnicas disponíveis no mercado para monitoramento, escalabilidade e independência da solução como um todo.

search's People

Contributors

cleitonferreira avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.