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).
- 🌐 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
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_URLdefine o endereço do seu microsserviço Python.
SERVER_PORTdefine a porta onde o Gateway será exposto.
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
Se quiser testar em modo de desenvolvimento:
./mvnw spring-boot:runOu:
mvn clean install
java -jar target/gateway-service-0.0.1-SNAPSHOT.jargateway-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.mdserver:
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
# 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.
- ☕ Java 21
- 🧱 Spring Boot 3
- 🚏 Spring Cloud Gateway
- 🐋 Docker
- ⚙️ Maven
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.
- 🔍 Adicionar filtros globais para autenticação JWT
- 📊 Implementar logs de requisições
- 🚦 Adicionar health-check endpoints (
/actuator/health)