Skip to content

DevOpsProjectsLab/gateway-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚪 gateway-service

Gateway Service do projeto DevOpsPlayground.
Responsável por rotear e orquestrar as requisições entre o Front-End e os microsserviços de backend (como o autenticador e outros serviços futuros).

💡 O que faz

  • 🌐 Centraliza todas as chamadas de API do sistema
  • 🔒 Encaminha requisições de autenticação para o Authenticator Service
  • ⚙️ Facilita o versionamento e a escalabilidade dos microsserviços
  • 🧩 Pode aplicar filtros, autenticação e logging em todas as requisições

🛠️ Como rodar (local)

1. Configurar variáveis de ambiente

Crie um arquivo .env (ou utilize variáveis do sistema) com as URLs dos microsserviços que o Gateway irá rotear.

Exemplo:

AUTHENTICATOR_SERVICE_URL=http://authenticator:5000
SERVER_PORT=8080

💬 AUTHENTICATOR_SERVICE_URL define o endereço do seu microsserviço Python.
SERVER_PORT define a porta onde o Gateway será exposto.


2. Rodar via Docker

Certifique-se de ter o Docker instalado, depois execute:

docker build -t gateway-service .
docker run -p 8080:8080 --env-file .env gateway-service
  • 🧱 Constrói a imagem Docker do Gateway
  • 🚀 Sobe o container expondo a API na porta 8080

Acesse o gateway em:
👉 http://localhost:8080


3. Rodar localmente (sem Docker)

Se quiser testar em modo de desenvolvimento:

./mvnw spring-boot:run

Ou:

mvn clean install
java -jar target/gateway-service-0.0.1-SNAPSHOT.jar

🧾 Estrutura de pastas

gateway-service/
├── src/
│   ├── main/
│   │   ├── java/com/devopsplayground/gateway/ # Código principal
│   │   │   ├── GatewayServiceApplication.java # Classe principal (Spring Boot)
│   │   └── resources/
│   │       ├── application.yaml               # Configuração de rotas e serviços
│   │       └── logback-spring.xml             # Logs (opcional)
├── Dockerfile                                 # Build da imagem de produção
├── pom.xml                                    # Dependências Maven
└── README.md

🧩 Exemplo de configuração (application.yaml)

server:
  port: ${SERVER_PORT:8080}

spring:
  cloud:
    gateway:
      routes:
        - id: auth-service
          uri: ${AUTHENTICATOR_SERVICE_URL:http://localhost:5000}
          predicates:
            - Path=/auth/**

Essa configuração:

  • Define uma rota /auth/** para o Authenticator Service
  • Utiliza variáveis de ambiente para maior flexibilidade

🐳 Dockerfile — visão geral

# Etapa 1: Build da aplicação
FROM eclipse-temurin:21-jdk AS build
WORKDIR /app

# Copia o arquivo Maven Wrapper e dependências
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
RUN ./mvnw dependency:go-offline -B

# Copia o código-fonte e compila o JAR
COPY src src
RUN ./mvnw clean package -DskipTests

# Etapa 2: Execução da aplicação
FROM eclipse-temurin:21-jdk-jammy
WORKDIR /app

# Copia o JAR gerado
COPY --from=build /app/target/*.jar app.jar

# Expõe a porta padrão do Spring Gateway
EXPOSE 8085

# Executa o serviço
ENTRYPOINT ["java", "-jar", "app.jar"]

✅ Resultado:
Imagem final leve, baseada em Eclipse Temurin JRE 21, com o Gateway rodando na porta 8085.


🧩 Stack utilizada

  • Java 21
  • 🧱 Spring Boot 3
  • 🚏 Spring Cloud Gateway
  • 🐋 Docker
  • ⚙️ Maven

📡 Comunicação entre serviços

Frontend (React)  →  Gateway (Spring)  →  Authenticator (Flask/Python)

O Gateway funciona como ponte central, redirecionando as rotas do front-end (/auth/**, /api/**, etc.) para os microsserviços corretos.


📚 Próximos passos

  • 🔍 Adicionar filtros globais para autenticação JWT
  • 📊 Implementar logs de requisições
  • 🚦 Adicionar health-check endpoints (/actuator/health)

About

Redireciona chamadas para microserviços internos

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published