1 of 10

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

2 of 10

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

3 of 10

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

4 of 10

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.

5 of 10

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.

6 of 10

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

7 of 10

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

8 of 10

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)

9 of 10

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

10 of 10

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