1 of 66

Honrando memorias

FUNDAMENTOS DE INGENIERÍA DEL SOFTWARE PARA SISTEMAS CLOUD

  • Miguel Encina Martínez
  • Daniel Galván Cancio
  • Andrés Martínez Reviriego
  • Daniel Ruiz López
  • Ramón Gavira Sánchez

Realizado por:

  • Daniel Vela Camacho
  • Jaime Linares Barrera
  • Sergio Álvarez Piñón
  • Rafael Pulido Cifuentes
  • Benjamín Maureira Flores

SOCIAL BEATS

2 of 66

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

3 of 66

2/65

01

INTRODUCCIÓN

4 of 66

3/65

02

Customer agreement

5 of 66

4/65

02

Plan de precios

6 of 66

5/65

02

Acuerdo de Nivel de Servicio

7 of 66

6/65

02

Términos de PRIVACIDAD

8 of 66

7/65

02

ACUERDO DE CLIENTE

9 of 66

8/65

03

ARQUITECTURA

frontend

Api gateway

10 of 66

AUTENTICACIÓN JWT

DOCUMENTACIÓN SWAGGER

9/65

03

arquitectura

https://api.socialbeats.es/socialbeats-api/api/v1/docs/

11 of 66

10/65

03

despliegue

socialbeats.es/socialbeats

12 of 66

11/65

03

SPACE

Pricing2YAML

14

13 of 66

12/65

03

SPACE

{userId}

14 of 66

13/65

03

SPACE

frontend

Api gateway

15 of 66

14/65

03

suscripciones

Payments and subscription

Registrar usuario

(command)

USER AUTH

space

Crear suscripción

Crear contrato

16 of 66

15/65

03

Stripe

17 of 66

16/65

03

SPACE

18 of 66

17/65

03

Stripe - productos

19 of 66

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

20 of 66

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

21 of 66

20/65

04

MICROSERVICIOS

22 of 66

21/65

04

User auth

23 of 66

22/65

04

User auth - arquitectura

24 of 66

23/65

04

USER AUTH - redis

🛡️Blacklist

🔄Rotación de Refresh Tokens

📱2FA Storage

Api gateway

25 of 66

24/65

04

User auth - kafka

Publicados

USER DELETED

USER EDITED

USER CREATED

26 of 66

25/65

04

User auth - digital ocean

🖼️ Avatares de Usuario

🎨 Banners de Perfil

📜 Certificaciones

27 of 66

26/65

04

User auth - digital ocean

webhook

Api gateway

Perfil VERIFICADO

28 of 66

27/65

04

User auth - RESEND

29 of 66

28/65

04

User auth - RESEND

30 of 66

29/65

04

User auth - RESEND

31 of 66

30/65

04

User auth - RESEND

CIRCUIT BREAKER

emailService.js

Patrón rate limit

32 of 66

31/65

04

BEATS UPLOAD

33 of 66

32/65

04

BEATS UPLOAD

34 of 66

33/65

04

BEATS UPLOAD

Aws s3

cloudfront

  1. Presigned POST URL
  2. Subidas desde cliente
  • URLs firmadas
  • Expiración 2 h.

Rate limit

Throttling

35 of 66

34/65

04

BEATS UPLOAD

suscritos

Publicados

ELIMINAR USUARIO

CRUD BEAT

VIEWS

DESCARGAS

implementa

Circuit breaker

36 of 66

35/65

04

BEATS UPLOAD

Solicitar URL

firmada

Subir fichero

CDN

Validar subida

Solicitar URL streaming

1

2

3

4

37 of 66

36/65

14

integración

04

BEATS UPLOAD

TESTING

273

unitarios

287

38 of 66

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

39 of 66

38/65

04

BEATS UPLOAD

presente

futuro

0 € / mes

< 1 € / mes

40 of 66

39/65

04

SOCIAL

41 of 66

40/65

04

SOCIAL - AMISTADES

42 of 66

41/65

04

SOCIAL - FEED

43 of 66

42/65

04

SOCIAL - KAFKA

USUARIOS

Beats Upload

Beats INTERACTION

Copia local

Poblar feed

44 of 66

43/65

04

SOCIAL - MENSAJES

45 of 66

44/65

04

SOCIAL - WEBSOCKETS

46 of 66

45/65

04

BEATS INTERACTION

47 of 66

46/65

04

BEATS INTERACTION - Stack tecnológico

48 of 66

npm run test:inproc

npm run test:outproc

47/65

04

BEATS INTERACTION - Testing

49 of 66

48/65

04

BEATS INTERACTION - api externa

- RATE LIMIT (10% de margen)

- Plan ÓPTIMO: Pay-as-you-go

50 of 66

49/65

04

BEATS INTERACTION - kafka

Beats interaction

Evento

BEATS UPLOAD

USER AUTH

Evento

cONSUMO

Evento

MATERIALIZED VIEW

CREACIÓN

Evento SOCIAL

51 of 66

50/65

04

BEATS INTERACTION - circuit breaker

CIRCUIT BREAKER

52 of 66

51/65

04

ANALYtIcS AND DASHBOARD

53 of 66

52/65

04

ANALYtIcS AND DASHBOARD

QUOTABLE API

54 of 66

53/65

04

ANALYtIcS AND DASHBOARD

Alto rendimiento y documentación automática

Sistema de autenticación desde cero en python

55 of 66

54/65

04

ANALYtIcS AND DASHBOARD

Circuit Breaker

Rate Limiting

Sistema de Caché

56 of 66

55/65

04

ANALYtIcS AND DASHBOARD

Evento:

Beat Subido

Consumo de Evento

Métricas calculadas

Analytics and

Dashboards

57 of 66

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

58 of 66

57/65

04

ANALYtIcS AND DASHBOARD

QUOTABLE

AZURE

59 of 66

58/65

04

ANALYtIcS AND DASHBOARD

60 of 66

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

61 of 66

60/65

05

CONCLUSIONES

1

Monolítico vs. Microservicios

2

Plantillas Frontend y Backend

3

Uso responsable de la IA

4

Comunicación

62 of 66

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

63 of 66

62/65

06

VÍDEO DEMOSTRACIÓN

64 of 66

64

65 of 66

64/65

CRÉDITOS: Esta presentación incluye iconos de Flaticon e Icons Icons

APP

github

Muchas gracias

66 of 66

Fuentes y colores utilizados

Esta presentación ha sido realizada utilizando las siguientes fuentes:

65/65

#F8FAFC

#1E293B

#7C3AED

#DB2777