Borges
Desenvolvedor Full Stack
Backend Java • APIs REST • Microsserviços
linkedin.com/in/arieldsborges
github.com/arieldsborges
Brasília — DF, Brasil
Java
Spring Boot
React
PostgreSQL
Docker
Git
APIs REST
Microsserviços
DESDE 1999
SouJava
Sociedade de Usuários da Tecnologia Java
"Sou Java" — Eu sou Java
40.000+
membros
#1
maior JUG do mundo
1999
fundada em
25+
anos de história
Fundada por Bruno Souza (JavaMan) • São Paulo, Campinas, Rio de Janeiro, Belém e Brasília
DOCUMENTO DE PROJETO
Escola de
Cursos Online
Plataforma de ensino com Java + Spring Boot + Microsserviços
Stakeholders
Requisitos
Domínio
Arquitetura
Versão 1.0 • Workshop SouJava Brasília • 2025
Do Problema ao Código — Como Chega ao Dev
O trajeto real de um projeto em uma empresa
Negócio /
Cliente
Detecta problema ou oportunidade de mercado. Ex: precisamos de uma plataforma de cursos online.
→
Product
Owner / PO
Transforma a necessidade em requisitos de produto. Define backlog, prioridades e critérios de aceite.
→
Arquiteto /
Tech Lead
Define a arquitetura de solução: microsserviços, banco de dados, APIs, integrações e stack tecnológica.
→
Analista /
UX Designer
Detalha os fluxos de usuário, escreve User Stories com critérios de aceite precisos.
→
DEV
(você!)
Recebe User Story, planeja a implementação, escreve o código, testa e entrega em Pull Request.
Documento de Requisitos — User Stories
Como o PO documenta o que o dev deve construir
Requisitos Funcionais
✓
RF01 — Aluno se cadastra e faz login
✓
RF02 — Instrutor cria e publica cursos
✓
RF03 — Curso possui módulos e aulas
✓
RF04 — Aluno se matricula em curso
✓
RF05 — Aluno acompanha progresso
✓
RF06 — Pagamento via cartão/PIX
✓
RF07 — Emissão de certificado
✓
RF08 — Avaliação do curso pelo aluno
Exemplo — User Story RF02
Como instrutor,
quero criar um curso com título,
descrição, nível e status,
para que alunos possam se matricular.
Critério: nome único no sistema.
Critério: status inicial = INPROGRESS.
Diagrama de Classes — Escola de Cursos
Modelo de domínio completo do sistema
User
id: UUID
name: String
email: String
password: String
role: UserRole
createdAt: LocalDateTime
Course
id: UUID
title: String
description: String
level: CourseLevel
status: CourseStatus
price: BigDecimal
instructorId: UUID
createdAt: LocalDateTime
Module
id: UUID
title: String
description: String
orderIndex: Integer
courseId: UUID
Lesson
id: UUID
title: String
videoUrl: String
durationSec: Integer
moduleId: UUID
Enrollment
id: UUID
studentId: UUID
courseId: UUID
enrolledAt: LocalDateTime
status: EnrollStatus
Certificate
id: UUID
enrollmentId: UUID
issuedAt: LocalDateTime
code: String
1:N
1:N
1:N
N:1
1:1
UserRole → STUDENT | INSTRUCTOR | ADMIN CourseLevel → BEGINNER | INTERMEDIARY | ADVANCED CourseStatus → DRAFT | PUBLISHED | ARCHIVED EnrollStatus → ACTIVE | COMPLETED | CANCELLED
Arquitetura de Microsserviços — Escola Online
Cada serviço tem responsabilidade única e banco próprio
🌐 Web
📱 Mobile
→
API Gateway
Auth · Rate Limit · Routing
:8081
User Service
Cadastro, login, perfis, roles
PostgreSQL
:8082
Course Service
Cursos, módulos, aulas
PostgreSQL
:8083
Enrollment Service
Matrículas, progresso
PostgreSQL
:8084
Payment Service
Pagamentos, PIX, cartão
PostgreSQL
:8085
Notification Svc
E-mail, push, SMS
Redis
:8086
Certificate Svc
Emissão de certificados
PostgreSQL
:8087
Auth Service
JWT, OAuth2, sessões
Redis
:8088
Report Service
Relatórios, analytics
MongoDB
📨 RabbitMQ / Kafka
Message Broker — eventos assíncronos
↓ rota para serviços
Stack Tecnológica — O que usamos em cada camada
Da requisição ao banco de dados
Frontend
▸ React / Next.js
▸ TypeScript
API Gateway
▸ Spring Cloud Gateway
▸ JWT Filter
Microsserviços
▸ Java 21
▸ Spring Boot
▸ Spring Data JPA
Mensageria
▸ RabbitMQ
▸ Spring AMQP
▸ Eventos de domínio
Banco de Dados
▸ PostgreSQL (principal)
▸ Redis (cache/sessão)
▸ MongoDB (relatórios)
Infra / DevOps
▸ Docker + Compose
▸ GitHub Actions (CI/CD)
Endpoints que o Projeto Cobre — Ponto de Partida
O que construímos hoje vs o que o sistema completo precisa
✅ Course Service — Construído
POST
/courses
Criar curso
PUT
/courses/{id}
Atualizar curso
GET
/courses/{id}
Buscar curso
Module CRUD
Paginação com Pageable
Busca por nível / status
🚧 Serviços para construir no futuro
User Service
Cadastro, login JWT, perfis, RBAC
Enrollment Service
Matrícula, progresso de aulas
Payment Service
PIX, cartão, controle de acesso
Certificate Service
Geração e validação de certificados
Notification Svc
E-mail de boas-vindas, alertas
Auth Service
JWT, refresh token, OAuth2
Obrigado!
Agora você tem o mapa.
Do problema do stakeholder ao código que o resolve —
esse é o trajeto real de um desenvolvedor profissional.
Stakeholders
mapeados
Diagrama de
classes
8 microsserviços
no mapa
User Stories
documentadas
Contatos:
linkedin.com/in/arieldsborges
github.com/arieldsborges
SouJava Brasília
Workshop — Escola de Cursos Online com Java • SouJava Brasília