Honrando memorias
FUNDAMENTOS DE INGENIERÍA DEL SOFTWARE PARA SISTEMAS CLOUD
Realizado por:
SOCIAL BEATS
INTRODUCCIÓN
CUSTOMER AGREEMENT
ARQUITECTURA
DESCOMPOSICIÓN EN MICROSERVICIOS
VÍDEO DEMOSTRACIÓN
CONCLUSIONES Y LECCIONES APRENDIDAS
1/65
01
02
04
03
06
ÍNDICE
05
2/65
01
INTRODUCCIÓN
3/65
02
Customer agreement
4/65
02
Plan de precios
5/65
02
Acuerdo de Nivel de Servicio
6/65
02
Términos de PRIVACIDAD
7/65
02
ACUERDO DE CLIENTE
8/65
03
ARQUITECTURA
frontend
Api gateway
AUTENTICACIÓN JWT
DOCUMENTACIÓN SWAGGER
9/65
03
arquitectura
https://api.socialbeats.es/socialbeats-api/api/v1/docs/
10/65
03
despliegue
socialbeats.es/socialbeats
11/65
03
SPACE
Pricing2YAML
14
12/65
03
SPACE
{userId}
13/65
03
SPACE
frontend
Api gateway
14/65
03
suscripciones
Payments and subscription
Registrar usuario
(command)
USER AUTH
space
Crear suscripción
Crear contrato
15/65
03
Stripe
16/65
03
SPACE
17/65
03
Stripe - productos
18/65
03
Upgrade plan/comprar add-on
space
1.- Calcula diferencia plan actual y plan a mejorar
2.- Cobrar diferencia/precio add-on
3.- actualizar plan/aplicar add-on
1.- actualizar contrato
19/65
03
Downgrade plan/cancelar add-on
1.- Mantiene el plan/add-on
2.- crea evento para hacer el cambio de plan/add-on al final del periodo
3.- cuando termina el periodo, actualiza el plan/cancela add-on
1.- actualizar contrato
space
20/65
04
MICROSERVICIOS
21/65
04
User auth
22/65
04
User auth - arquitectura
23/65
04
USER AUTH - redis
🛡️Blacklist
🔄Rotación de Refresh Tokens
📱2FA Storage
Api gateway
24/65
04
User auth - kafka
Publicados
USER DELETED
USER EDITED
USER CREATED
25/65
04
User auth - digital ocean
🖼️ Avatares de Usuario
🎨 Banners de Perfil
📜 Certificaciones
26/65
04
User auth - digital ocean
webhook
Api gateway
Perfil VERIFICADO
27/65
04
User auth - RESEND
28/65
04
User auth - RESEND
29/65
04
User auth - RESEND
30/65
04
User auth - RESEND
CIRCUIT BREAKER
emailService.js
Patrón rate limit
31/65
04
BEATS UPLOAD
32/65
04
BEATS UPLOAD
33/65
04
BEATS UPLOAD
Aws s3
cloudfront
Rate limit
Throttling
34/65
04
BEATS UPLOAD
suscritos
Publicados
ELIMINAR USUARIO
CRUD BEAT
VIEWS
DESCARGAS
implementa
Circuit breaker
35/65
04
BEATS UPLOAD
Solicitar URL
firmada
Subir fichero
CDN
Validar subida
Solicitar URL streaming
1
2
3
4
36/65
14
integración
04
BEATS UPLOAD
TESTING
273
unitarios
287
37/65
04
BEATS UPLOAD
PAY-AS-YOU-GO
Free + Créditos promocionales
Métrica
Usuarios
100 -500
500 - 2000
Capacidad
~3 GB / mes
~30 GB /mes
Tráfico
~60k req /mes
Desarrollo
~2k req / mes
Lanzamiento
38/65
04
BEATS UPLOAD
presente
futuro
0 € / mes
< 1 € / mes
39/65
04
SOCIAL
40/65
04
SOCIAL - AMISTADES
41/65
04
SOCIAL - FEED
42/65
04
SOCIAL - KAFKA
USUARIOS
Beats Upload
Beats INTERACTION
Copia local
Poblar feed
43/65
04
SOCIAL - MENSAJES
44/65
04
SOCIAL - WEBSOCKETS
45/65
04
BEATS INTERACTION
46/65
04
BEATS INTERACTION - Stack tecnológico
npm run test:inproc
npm run test:outproc
47/65
04
BEATS INTERACTION - Testing
48/65
04
BEATS INTERACTION - api externa
- RATE LIMIT (10% de margen)
- Plan ÓPTIMO: Pay-as-you-go
49/65
04
BEATS INTERACTION - kafka
Beats interaction
Evento
BEATS UPLOAD
USER AUTH
Evento
cONSUMO
Evento
MATERIALIZED VIEW
CREACIÓN
Evento SOCIAL
50/65
04
BEATS INTERACTION - circuit breaker
CIRCUIT BREAKER
51/65
04
ANALYtIcS AND DASHBOARD
52/65
04
ANALYtIcS AND DASHBOARD
QUOTABLE API
53/65
04
ANALYtIcS AND DASHBOARD
Alto rendimiento y documentación automática
Sistema de autenticación desde cero en python
54/65
04
ANALYtIcS AND DASHBOARD
Circuit Breaker
Rate Limiting
Sistema de Caché
55/65
04
ANALYtIcS AND DASHBOARD
Evento:
Beat Subido
Consumo de Evento
Métricas calculadas
Analytics and
Dashboards
56/65
04
ANALYtIcS AND DASHBOARD
Integración Personalizada con SPACE
Coordinador Técnico: Alejandro García Fernández
Biblioteca para facilitar la auto adaptación de aplicaciones python
PR al repositorio de SPACE
57/65
04
ANALYtIcS AND DASHBOARD
QUOTABLE
AZURE
58/65
04
ANALYtIcS AND DASHBOARD
59/65
04
ANALYtIcS AND DASHBOARD
Estrategia Redis
Desacoplar el tráfico de usuarios del consumo de API.
Eficiencia Extrema
Consumo real de 300 chars/hora frente a 2.000.000 del límite.
Coste
0€/mes.
Suscripción óptima → F0
60/65
05
CONCLUSIONES
1
Monolítico vs. Microservicios
2
Plantillas Frontend y Backend
3
Uso responsable de la IA
4
Comunicación
61/65
05
Lecciones aprendidas
1
Adaptabilidad de microservicios
2
Integración en Kubernetes
3
Conflictos con ramas longevas
4
Importancia de la coordinación
62/65
06
VÍDEO DEMOSTRACIÓN
64
64/65
CRÉDITOS: Esta presentación incluye iconos de Flaticon e Icons Icons
APP
github
Muchas gracias
Fuentes y colores utilizados
Esta presentación ha sido realizada utilizando las siguientes fuentes:
65/65
#F8FAFC
#1E293B
#7C3AED
#DB2777