Observação: 98% dos fluxos de BPMN, UML, desenhos técnicos e repositórios são de autoria própria.
- ❤️ 9+ anos de experiência em desenvolvimento moderno;
- 🎓 Bacharel em Engenharia de Computação - Instituto Federal da Paraíba;
- 🎓 Pós-graduado em Arquitetura de Software Distribuído - PUC Minas;
- ☂️ MBA em Engenharia de Software com IA, pela Full Cycle - (Em andamento);
- ☂️ Go Expert, pela Full Cycle - (Finalizado);
- ☂️ Especialista Microserviços com Java, pela AlgaWorks - (Em andamento);
- Stacks de backend NodeJs, Go e Java;
- Stacks de frontend VueJs, Angular e React, sendo especialista na stack VueJs.
- ✝️ Professante da fé em Jesus Cristo (meu único Senhor e Salvador);
- 🍖 Fã de churrasco, fez um? me chama! 🔥
Desenvolvedor principal, responsável pela migração e desenvolvimento de 4 microserviços principais e 7 auxiliares, que hoje estão em produção gerando cerca de 6 milhões de reais por mês. Microserviços de transferências de pontos gerados no cartão Sicoob para: Livelo, Decolar, Smiles, Azul e Latam. Os microserviços desenvolvidos, são integrados com diversos webservices para validação de transferência, como: Oracle, Vtex, Siebel, Salesforce, entre outros.
O fluxo abaixo demonstra o primeiro passo, o entendimento das regras de negócios e a diagramação do microserviço a ser migrado.
Observação: Alguns dados foram removidos do fluxo para não comprometer a segurança do sistema.
- VueJs 2 e 3 com bibliotecas de UI (Vuetify / PrimeVue / Quasar);
- React;
- Angular.
- Java 8, 11, 17 e 21;
- NodeJs / NestJs / Typescript / Javascript;
- GoLang;
- Python;
- RabbitMQ / Kafka / SQS;
- gRPC;
- Clean Architecture / CQRS / MVC / DDD;
- TypeORM / Prisma / Mongoose / Redis / SQL;
- BFF / GraphQL;
- Oracle, Postgres, Mysql, Redis, MongoDB;
- AWS (Redis, S3, DocumentDB, Cognito, SQS, Gateway);
- Elasticsearch / OpenSearch / Prometheus / Grafana;
- Kubernetes / Istio / Helm / Terraform;
- Especialista em documentações BPMN.
+ Sobre
- Atuação em ambientes com adoção de metodologias ágeis;
- Atuação em ambientes de pressão com grande volume de dados financeiros;
- Banco de dados relacional e NoSql;
- Experiência em desenvolvimento em arquitetura de microsserviços;
- Experiência em API Manager (Linkapi);
- Experiência na criação de componentes reutilizáveis;
- Experiência na utilização de conceitos DDD;
- SOLID / Clean Architecture;
- Git / Gitflow / Conventional Commit;
- UML;
- BPMN;
- Docker;
- Sonarlint;
- Sentry;
- Documentação de APIs;
- Compreensão de CI/CD;
- Jira / Bitrix24 / GitLab.
Técnicas de desenvolvimento utilizadas
- Fail first;
- Padronização de commits (conventional commits);
- Versionamento de módulos para facilitação de refatorações;
- Modelagem de entidades ricas com tratamento de exceções (Either) (DDD);
- Desenvolvimento guiado a interfaces;
- Chaveamento nas injeções de dependências utilizando o padrão strategy;
- Persistência dos dados em memória para facilitação dos testes unitários;
- Tratamento de exceções personalizados;
- Utilizações dos padrões Adapter, Build, Strategy, Barrels, Dto, Factory;
- Utilização dos pipes validations para validação de dados nos DTOs;
- Camada de repositórios com ORM TypeORM;
- Versionamento do banco de dados, através das migrations;
- Criação dos index nas colunas através das migrations;
- Mappers para realizar as conversões de dados;
- Variáveis de ambiente;
- Interceptadores para criação dos logs da aplicação;
- Decorators personalizados;
- Testes unitários com o Jest, guiado pelo coverage reports;
- Utilização de bibliotecas para transpilar o código mais rapidamente;
- Rate Limit;
- Swagger;
- Socket.io;
- Criação de caches;
- Interceptação de erros com o sentry;
- Utilização das bibliotecas: bull, tsryng, ioredis, supertest, mongodb, sentry, moment;
- Técnica de expurgo.
👉 Sensor: Desenvolvimento de backend com Java, arquitetura de microserviços e comunicação assíncrona via RabbitMQ. O projeto iniciou com a modelagem de um sistema monolítico, que posteriormente foi refatorado em microserviços, incorporando o uso de um message broker para orquestração e troca de mensagens.
Tags: Java | Microservice | SpringBoot | Gradle | RabbitMQ | Retry Pattern | Dead Queue | Docker | MongoDB
👉 Modelo de microserviço baseado em Eventos
👉 Luizalabs: backend em NodeJs utilizando clean architecture e frontend utilizando VueJs.
Tags: Nodejs | VueJs | Frontend | Backed | Mongodb | Microservice | Jest | Solid | Clean-code | Design-patterns | Clean-architecture | Retry Pattern | Tests | Jdocs
Tecnologia | Link | O que resolve? |
---|---|---|
👉 Cache Parallel | Requisições externas utilizando estratégia de paralelismo. | |
👉 Fetch | Requisição externas utilizando estratégia de paralelismo com fallback. | |
👉 Upload | Upload de arquivos na AWS S3, utilizando estratégia de fallback. | |
👉 gRPC | Implementação gRPC. | |
👉 GraphQL | Implementação GraphQL. |
O que resolve?
Monitoramento da criança no ambiente escolar através de IA.
👉 Bekid é um sistema para mapeamento de emoções para o auxílio no combate ao bullying escolar. Aplicação em NodeJs e VueJs. (finalizado, online em produção)
👉 Bestore - Aplicação de venda de produtos. API REST em Java com Spring Boot e Mysql. (finalizado)
O projeto abaixo demonstra as camadas utilizadas em uma arquitetura limpa de microsserviços.
👉 Guia Clean Architecture - Guia de repasses para equipe.
👉 Guia gRPC - Guia de repasses para equipe.
👉 Guia GraphQL - Guia de repasses para equipe.
👉 Guia RabbitMQ - Guia de repasses para equipe.
👉 Guia Kafka - Guia de repasses para equipe.
👉 Implementação de um serviço em Typescript com Kafka
👉 Kafka + NestJs
👉 Kafka + NodeJs
👉 Kafka + Python
👉 Guia BFF - Guia de repasses para equipe.
Account API é um microserviço desenvolvido em Go, que utiliza um padrão arquitetural Clean Architecture.
O que resolve?
Problemas de concorrência. Multiplas consultas paralelas e densas, no banco de dados, que levam a exaustão dos recursos de processamento.
👉 MyPoint é um sistema para registro de pontos de funcionários. Aplicação utilizando microserviços, filas com o RabbitMq, NestJs, VueJs e Socket.io. (em andamento)
👉 Instalação, configuração e plugins
👉 Go routines (caso dos trabalhadores eficiêntes)
👉 Go http retry with exponential backoff
👉 Go algoritmos
👉 Go injections
👉 Go injections com Google Wire
👉 Go API ViaCEP
👉 Go encoder
👉 Go database
👉 Go clean architecture
👉 Go deploy
👉 Go validations
👉 Go env
👉 Go concorrência (Repositório de terceiro)
👉 Resiliência de chamadas HTTP com Axios Retry
👉 NodeJs Base API
👉 VueJs v3 + Pinia + ACLs Casl (finalizado)
👉 VueJs v3 + Composition api + props + emit + watch (finalizado)
👉 Socket.io com Vue/Node/Nest - Utilização de sockets com VueJs no frontend e NodeJs/NestJs no backend, estabelecendo comunicação com validação entre tokens JWT, utilizando padrão de projeto observer. ❤️ (finalizado)
👉 NestJs + Domínios Ricos Arquitetura de uma api rest com NestJs, utilizando a modelagem de domínios ricos, através da técnica value object, tratamento de exceções com either e transformações de dados utilizando os conceitos de dtos e mappers.
👉 Evasão Escolar - Aplicação para análise da ocorrência da evasão escolar em instituições públicas de nível superior. Backend desenvolvido com Typescript, NestJs, TypeORM e Postgres. (finalizado, online em produção)
👉 Tindin - Aplicação de controle de aulas ministradas. Desenvolvida em NodeJs, utilizando banco de dados MongoDB (TypeORM), com cobertura de testes (coverages), utilizando o Jest. (finalizado)
👉 Places to Know - Desenvolvida em NodeJs, com objetivo de gerar um banco de dados de fotos de locais pelo mundo. Os detalhes do projeto são a integração com uma API externa, criação de uma busca com filtro e paginação. (finalizado)
👉 Oráculo - Sistema de gerenciamento financeiro. Frontend desenvolvido em html, javascript e JQuery para empresa cliente. (finalizado)
👉 Gerente RH - Sistema de gerenciamento de funcionários. MVC desenvolvido em C# com Microsoft SQL. (finalizado)
👉 Read Txt and convert to Xlsx - Realiza a leitura de um arquivo .txt, obtém os valores, gera o arquivo .xlsx e insere os valores lidos do txt e por seguinte, realiza a formatação para o valor moeda R$. (finalizado)
👉 Get Level - Elimina o uso de vários IF e ELSE de intervalos entre valores. (finalizado)
👉 Parse DTO - Transforma as propriedades de um objeto de Camel Case para Snake Case. (finalizado)
👉 Filter Properties - Filtra as propriedades de um objeto, passando um array indicando os propriedades a serem removidas. (finalizado)
👉 MAP Enum - Técnica que utilizo para eliminar grandes quantidades de IFs no sistema. (finalizado)
👉 Todos os scripts (em andamento)
👉 Mock tests - Estudos sobre tests unitários utilizando mocks e bibliotecas nativas do NodeJs. (finalizado)
👉 Stub com mocks - Testes utilizando a técnica de stubs para simular uma requisição a uma API. (finalizado)
👉 API Rest SigIn/SigUp - Autenticação e autorização com NestJs, TypeORM, Postgres, JWT, Interceptors, Logger, Jest. (finalizado)
👉 API Rest NestJs com Prisma - API Rest utilizando o NestJs com Prisma, Swagger, Postgres, Docker compose, Seed, Validators, Transformers, Pagination, Prisma Exception Handling e Logger. (finalizado)
👉 API Rest NodeJs com Prisma - Cadastro simples de usuários com Prisma, arquitetura Package by Feature e Teste unitário com o Jest. (finalizado)
👉 Séries TV - FullStack. Estudo de caso de um fullstack em Spring Boot + Angular 12. (finalizado)
👉 Grisoli - Aplicação em uma arquitetura de microserviços utilizando NodeJs com Typescript, Spring Boot, Prisma, TypeORM, Docker, RabbitMQ, testes unitários, CI-CD com github actions. (abortado)
👉 VacinaPB - Estudo de caso TDD, desenvolvido em Typescript e NodeJs, utilizando padrões de projetos e modelagem de domínio, baseado em uma arquitetura limpa, de acordo com ensinamentos de Martin Fowler em seu livro sobre refatoração e arquitetura limpa. (finalizado)
👉 Modelgem de entidade (Tiny) - Modelagem de uma entidade em Java, utilizando Tiny. A técnica consiste em modelar uma entidade com auxílio de uma classe externa Either.java, de forma que os erros possam ser gerenciados elegantemente. (finalizado)
👉 Teste Exaustão (JMeter) - Estudo de caso de aplicação desenvolvida em Typescript + NodeJs. (finalizado)
👉 Deploy em QA e Produção - Estudo de caso de integração continua nos serviços da Codeship, deploiando em QA e em produção. (finalizado)
👉 Create releases - Estudo de caso de criaçao de releases automatizadas no Github. (finalizado)
👉 API Rest Spring Boot com MongoDB - Estudo de caso de uma api Spring Boot + MongoDB. (finalizado)
👉 Agenda de contatos - Servlets em Java. Estudo de caso de uma agenda de contatos. (finalizado)
👉 VueJs Tests - Estudo sobre testes com jest e vuetify. (finalizado)
👉 VueJs Upload XSL - Estudo sobre upload de arquivos .xsl com vuetify. 🔒 (privado) (finalizado)
👉 VueJs Checkbox - Checkbox select com vuetify. (finalizado)
👉 VueJs Select All - Select all com vuetify. (finalizado)
👉 VueJs Vuetify - Estudo sobre vuetify. 🔒 (privado) (finalizado)
👉 VueJs Geral - Estudos gerais. (finalizado)
👉 VueJs Object Change - Estudos de como alterar, deletar propriedades e realizar cópias de objetos. (finalizado)
👉 VueJs Computed - Estudo sobre computed com uma diretiva v-for, filtrando pelo status do objeto. (finalizado)
👉 VueJs Form - Estudo sobre forms. (finalizado)
👉 VueJs Route - Estudo sobre route. (finalizado)
👉 VueJs Props - Estudo sobre props. (finalizado)
👉 VueJs Slots - Estudo sobre slots. (finalizado)
👉 VueJs Component Dinamic - Estudo sobre componentes dinâmicos. (finalizado)
👉 VueJs Vuex - Estudo sobre o estado compartilhado vuex. (finalizado)
👉 VueJs Vuex v2 - Estudo sobre o estado compartilhado vuex v2. (finalizado)
👉 VueJs Axios - Estudo sobre o vuejs com o axios. (finalizado)
👉 Vuejs Todo + Localstorage - Estudo de caso de um todo de tarefas. (finalizado)
👉 Vuejs Burguer - Estudo de caso de venda de hamburguers. (finalizado)
👉 Vuejs Refs By Copy - Estudo sobre passagem por cópia e por referência. (finalizado)
👉 Vuejs CSS - Estudo sobre css. (finalizado)
👉 Vuejs Filters - Estudo sobre filters. (finalizado)
👉 Vuejs Mixins - Estudo sobre mixins. (finalizado)
Foto | Descrição |
---|---|
👉 Sistemas Embarcados - Projeto final da disciplina de Sistemas Embarcados em Engenharia de Computação, IFPB. (finalizado) |
|
👉 Prototipagem - Projeto final da disciplina de Prototipagem em Engenharia de Computação, IFPB. (finalizado) |
Os autores citados abaixo são fontes de referências em minha jornada de estudo e trabalho, na maioria deles, participei de cursos que serviram de base para aprofundar meus conhecimentos.
- Tiago Matos (VueJs 3, Composition API, Pinia)
- João Rangel (NestJs)
- Diego Fernandes (NestJs, Microserviços e RabbitMQ)
- Stephany Henrique (GoLang)
- Otávio Augusto Gallego (GoLang)
- Ellen körbes (GoLang)
- Fernando Daciuk (Javascript e Git avançado)
- Fernando Amaral (Kafka)
- Wesley Willians (Kafka, GoLang)
- Loiane Groner (Angular)
- Leonardo Moura (VueJs, Docker, Typescript e GraphQL)
- Matheus Battisti (Docker, Kubernetes e VueJs)
- Nélio Alves (Spring Boot)
- AlgaWorks (Spring Boot e Angular)
- Otávio Lemos (Arquitetura e TDD com Typescript)
- Ruan Delgado (Algoritmos e dicas de estudo)
- Fábio Akita (Dicas de estudo Pragmático)
- Rocketseat (Stack backend NodeJs)
- Henrique Cunha (Algoritmos)
- César Vasconcelos (Java)
- Otávio Miranda (Padões de projeto com Typescript)
- Erick Wendel (NodeJs avançado)
- Linux Tips (Linux, Docker e Kubernetes)
- Dev Soltinho (Javascript, Git)
- Claudson Oliveira (Trabalho no exterior, GoLang)
- Rodrigo Branas (Javascript)
- Jonathan Baraldi (DevOps com Rancher, AWS e GCP)
- Codar.me (NodeJs)
- Plínio Naves (VueJs & Vuetify)
- Victor Hugo Negrisoli (Microserviços)
© Documento elaborado por Edivam Enéas de Almeida Júnior.