Giter VIP home page Giter VIP logo

caseitau's Introduction

Projeto desenvolvido para o processo seletivo Itau Unibanco

O projeto visa a criação de uma arquitetura limpa, e construida com o objetivo de facilitar manutenção e adição de funcionalidades.

Foi escolhido o Docker como ferramenta para criação de conteiners, criando assim um ambiente com microserviços rodando de forma separada.

Para rodar a aplicação é necessário possuir o docker instalado e configurado, de acordo com cada sistema operacional, em seguida é necessário ir até a pasta A4S.CaseItau e abrir o terminal de sua preferência, e assim rodar o comando "docker-compose up --build", as imagens serão baixadas automaticamente e os conteiners gerados, com suas respectivas configurações.

O projeto possui 7 containers:

case-itau-server

Banco de dados SQL Server 2017, utilizado para gerir os bancos de dados para CatApi, e a TwitterApi. Possui dois bancos de dados case_itau_cat_bd e case_itau_twitter_bd.

graylog

Serviço para a centralização de Log de Erro, as duas api citadas sempre que uma exceção é gerada dispara log para está ferramenta de forma independente.

Determinados prints foram tirados com erros que ocorreram no desenvolvimento da api, e foram coletados por meio do graylog:

Handler Erro Context Erro Command Erro

prometheus

Serviço que faz a captação de metricas geradas pelas api, por meio do endpoint /metrics.

Determinados prints foram tirados de 3 Gráficos, que mostrem em tempo real a quantidade de execução, a latência e quantidade de erros das api criadas.

Através de outra ferramenta chamada Grafana, foram possíveis coletar informações e criar dois Dashboard:

CatApi Métricas:

Print

TwitterApi Métricas:

Print

case-itau-twitter-api

Objetivo

Serviço desenvolvido com o objetivo de coletar informações de postagens do twitter, através da API fornecida pela Rede Social Twitter. As postagens foram coletadas baseando-se em hashtags fornecidas (#opentracing, #remediation, #devops, #sre, #microservices, #observability, #oauth, #metrics, #logmonitoring, #opentracing), foram coletadas centenas de postagens para a retirada de determinadas informações e métricas, . A documentação de cada endpoint está do documenter do postman Documenter.

Os seguintes requisitos foram alcançados:

  • Quais são os cinco usuários da amostra coletada, que possuem mais seguidores.
  • Qual o total de postagens, agrupadas por hora do dia, independentemente da hashtag.
  • Qual o total de postagens pada cada uma das hashtags por idioma/pais do usuário que postou.

case-itau-cat-api

Com o objetivo de coletar informações de Raças de Gatos e Imagens, a Api https://api.thecatapi.com/ , possui vasto repositório de raças e imagens de gatos. A documentação de cada endpoint está do documenter do postman Documenter.

Os seguintes requisitos foram alcançados:

  • Para cada uma das raças de gatos disponíveis, armazenar as informações de origem, temperamento e descrição em uma base de dados.
  • Para cada uma das raças acima, salvar o endereço de 3 imagens em uma base de dados.
  • Salvar o endereço de 3 imagens de gatos com chapéu.
  • Salvar o endereço de 3 imagens de gatos com óculos.
  • Api capaz de listar todas as raças.
  • Api capaz de listar todas as informações de uma raça.
  • Api capaz de a partir de um temperamento listar as raças.
  • Api capaz de a partir de uma origem listar as raças.

Para ambas as api foram utilizadas ferramentas:

Base de dados SqlServer 2017.

Métricas são externadas utilizando a URL Métricas CatApi e Métricas TwitterApi ou pelo Prometheus

Foi utilizado GrayLog para a centralização de Log de Erro, disponível pela URL GrayLog

  • UserName: admin
  • Password: admin

Estrutura de Pastas e Técnicas utilizadas para desenvolvimento das API

Ambas as API possuem a mesma estrutura de pastas:

  • 📁 1 - Api
    • 💻 A4S.CaseItau.Api : Api propriamente dita com todas as controllers possuindo os endpoints necessários para aplicação
  • 📁 2 - Application
    • 📚 A4S.CaseItau.Application : Camada de negócio aqui estão abstraidas todas as regras de negócio da aplicação, utilizando Mediator como principal Design Pattern
  • 📁 3 - Domain
    • 📚 A4S.CaseItau.Domain : Camada de dominio, na qual possui todas as entidades e interfaces necessárias para o pleno funcionamento da aplicação.
  • 📁 4 - Infra
    • 📚 A4S.CaseItau.Infra : Camada de infraestrutura, esta camada possui a responsabilidade de gerir o acesso aos dados, que estão no servidor, utilizando o Entiy Framework Core como ORM e diversos design patterns, dentre eles Repository e Builder.
  • 📁 5 - Core
    • 📚 A4S.CaseItau.Core : Camada possuindo classes e métodos genéricos para abstração e prevenção de repetição de código.
    • 📚 A4S.CaseItau.Http : Camada que possui acesso a api externa, separada das outras regras.
    • 📚 A4S.CaseItau.Logging : Camada que visa a configuração das ferramentas de log
    • 📚 A4S.CaseItau.Injection : possui todas as classes responsaveis por gerir a Injeção de Dependencia dos serviços
  • 📁 6 - Teste
    • 📚 A4S.CaseItau.Teste : Camada de testes unitários da aplicação

Todo o projeto seguem o SOLID e POO, para a codificação de sua arquitetura.

caseitau's People

Contributors

pfloa avatar

Watchers

 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.