Aqui desenvolvemos e aprimoramos continuamente um sistema eficiente para gerenciar o fluxo de processos em petshops.
Este sistema de Petshop apresenta uma arquitetura distribuída com integração entre diferentes tecnologias. Inicialmente, a autenticação é gerenciada por uma aplicação em Java, proporcionando segurança no acesso ao sistema. A aplicação principal do petshop é implementada em Go, aproveitando a eficiência e desempenho dessa linguagem.
Para promover a comunicação assíncrona e escalável entre os diferentes componentes, utiliza-se uma fila com Apache Kafka. Isso possibilita o processamento de eventos de maneira eficiente, além de fornecer uma abordagem de mensageria robusta.
Em fases futuras do desenvolvimento, está prevista a implementação de uma interface frontend para melhor interação com os usuários. Essa camada permitirá uma experiência mais amigável e intuitiva, facilitando a utilização do sistema.
Para atender a concepção das telas e do fluxo da aplicação será utilizado o Figma.
Para atender a solução proposta, as seguintes tecnologias estão sendo utilizadas:
- Docker
- Go (Golang)
- Java (Spring Boot)
- Kafka (Message)
- PostgreSQL
- Python
- Redis (Cache)
- Swift (IOS)
- Flutter
A solução que o projeto Petshop-System proporciona é suportada por um conjunto de aplicações que combinadas possibilitam que as atividades sejam executadas.
Aplicação | Host | Porta | Linguagem |
---|---|---|---|
petshop-api | localhost,petshop-api | 5001 | Go |
petshop-api-gateway | localhost,petshop-api-gateway | 9999 | Go |
petshop-admin-api | localhost,petshop-admin-api | 5002 | Java |
petshop-auth-api | localhost, petshop-auth-api | 5004 | Java |
petshop-bff-desktop | localhost,petshop-bff-desktop | 9998 | Java |
petshop-bff-mobile | localhost,petshop-bff-mobile | 9997 | Go |
petshop-message-api | localhost,petshop-message-api | 5003 | Java |
petshop-reports-api | localhost | undefined | Python |
petshop-system-ios | undefined | N/A | Swift (IOS) |
petshop-system-flutter | undefined | N/A | Flutter (Híbrido) |
Para iniciar as aplicações de forma padronizada se faz necessário configurar as variáveis de ambiente DEV_ENV_FOLDER
e PETSHOP_GO_FOLDER
. Essas variáveis devem conter as pastas padrões de desenvolvimento, desta forma, facilitando e padronizando a utilização do docker-compose para inicializar as aplicações.
$ export DEV_ENV_FOLDER=[PASTA RAÍZ DE DESENVOLVIMENTO] // ex.: /home/[MINHA_PASTA]/Desenvolvimento
$ export PETSHOP_GO_FOLDER=$GOPATH/src/github.com/petshop-system
Estrutura esperada.
DEV_ENV_FOLDER
| [JAVA_PROJECTS]
| - go
| -- src
| --- github.com
| ---- petshop-system
| ----- [GO_PROJECTS]
OBS: pode-se adicionar (exportar) as variáveis de ambiente ao arquivo bashrc
ou zshrc
.
Exemplo no arquivo bashrc
ou zshrc
:
export DEV_ENV_FOLDER=/home/[MINHA_PASTA]/Desenvolvimento
export PETSHOP_GO_FOLDER=$GOPATH/src/github.com/petshop-system
PATH=$DEV_ENV_FOLDER:$PETSHOP_GO_FOLDER:$PATH
O objetivo principal deste tópico é alinhar a utilização das boas práticas de versionamento, proporcionando um fluxo de trabalho consistente e eficiente para o desenvolvimento do projeto.
Branches | Descrição |
---|---|
master |
Representa a versão de produção estável. (a develop é mescrlada aqui assim que estiverem pronta pra produção) |
develop |
Branch de desenvolvimento contínuo. (as features são mescladas aqui assim que estiverem prontas para teste) |
feature/#numero-da-issue |
Para alterações na documentação. (criadas a partir da develop e mescladas de volta nela quando concluídas) |
bugfix/#numero-da-issue |
Para melhorias estéticas ou formatação do código. (criadas a partir da develop) |
- Certifique-se de estar na branch develop:
git checkout develop
- Atualize a branch develop com as últimas alterações do repositório remoto:
git pull origin develop
- Crie um novo branch para o seu pull request:
git checkout -b feature/#numero_da_issue
Commit | Descrição |
---|---|
feat: |
Para novas funcionalidades. |
fix: |
Para correção de bugs |
docs: |
Para alterações na documentação. |
style: |
Para melhorias estéticas ou formatação do código. |
refactor: |
Para refatorações no código que não corrigem bugs nem adicionam funcionalidades. |
test: |
Para adição ou modificação de testes. |
- Realize e confirme as alterações necessárias:
git commit -m "feat: Descrição da sua feature"
- Envie o branch com as alterações para o repositório remoto:
git push origin feature/#numero_da_issue
Objetivo: Garantir que todas as informações do repositório remoto estejam atualizadas localmente.
git fetch
Objetivo: Listar todas as branches remotas disponíveis.
git branch -r
- Certifique-se de que a branch develop está presente nas branches remotas.
Objetivo: Estabelecer o rastreamento da branch local develop com a branch remota origin/develop.
- Caso não exista a branch, siga criando localmente a branch develop rastreando a branch remota origin/develop:
git checkout -b develop origin/develop
Objetivo: Isolar o desenvolvimento de novas funcionalidades.
git checkout -b feature/#numero_da_issue
Objetivo: Integrar as novas funcionalidades na branch principal de desenvolvimento (develop).
git checkout develop
git merge feature/#numero_da_issue
Objetivo: Sincronizar as alterações feitas na branch develop com o repositório remoto.
git push origin develop
Identificação e correção de bugs são tratados com um fluxo específico.
Objetivo: Isolar a correção de bugs específicos.
git checkout -b bugfix/#numero_da_issue
Objetivo: Integrar correções na branch principal de desenvolvimento.
git checkout develop
git merge feature/#numero_da_issue
Objetivo: Sincronizar as alterações feitas na branch develop com o repositório remoto.
git push origin develop