En la plática se mostrará la arquitectura que se utilizo para lograr que se puedan validar 600 facturas por segundo en un solo servidor con 16 GB de RAM y un procesador quad core.
Por Misael Pérez
8. • Validación de catálogos
• Validación de contribuyentes
• Validación de impuestos y totales
• Validación de tipos de comprobantes
(Ingreso/Egreso)
CFDI 3.3
9. • Nómina
• Pagos
• Combustibles
• Comercio Exterior
• Estados de cuenta
• 37 complementos en Total
Complementos
10. • 601441101 - Juegos educativos
• 601441102 - Juegos de mesa
• 601441103 - Naipes
• 601441104 - Juegos de video
Catálogo productos
15. • 600 documentos por segundo
• Máximo en 4 servidores
• Actualización de catálogos diaria en minutos
Desempeño requerido
16. • Reportes de errores claros para el usuario (350
código oficiales por parte del SAT)
• Facturas sin emitir
• Facturas emitidas y timbradas
• Facilidad de agregar más reglas
Validación
17. • Añadir más complementos en poco tiempo
• Añadir más reglas de validación en poco tiempo
• Añadir reglas personalizadas por cliente
Validación
18. • Horizontal (Para dedicar servidores a un cliente)
• Vertical (Para aprovechar todos los recursos del
servidor)
Escalabilidad
26. • Viabilidad de usar una base de datos relacional
• Tiempos de indexación mayores de 10 horas
• Tiempos de consulta de 40 - 60 ms
Carga masiva (Postgres)
27. • Búsqueda Binaria - 2 a10 ms
• ETS (Indexed Keys) - 20 a 60 μs
Almacenamiento en
memoria
28. Búsqueda binaria
Registro Federal de
Contribuyentes
80 Millones - 3GB
Memoria
150
Cold Cache
Tiempo de carga 2 segundos
Tiempo de búsqueda 2 - 10 ms
54. Escalamiento horizontal
SERVER
- Código
- Cache
- Maquina Virtual
- Web Server
- Reglas
SERVER
- Código
- Cache
- Maquina Virtual
- Web Server
- Reglas
SERVER
- Código
- Cache
- Maquina Virtual
- Web Server
- Reglas
SERVER
- Código
- Cache
- Maquina Virtual
- Web Server
- Reglas
58. • 1200 Pruebas automatizadas
• Generador de Facturas
• Agregar facturas reales para probar
• Cada motor se puede probar unitariamente
Pruebas automatizadas
59. • Realizar 1200 facturas a mano llevaría mucho
tiempo
• Compilador de facturas
Generador de facturas
60. Generador de facturas
Factura Completa
Certificado
Emisor
Receptor
Lista de Conceptos
Sello Emisor
Sello Pac
5 Campos
10 Campos
10 Campos
20 Campos
5 Campos
4 Campos
Deltas de
Prueba
Compilador
Factura de
Prueba
61. • MikeFlow Multiple (Variante de GithubFlow)
• Linter en cada branch feature
• 1200 Pruebas unitarias en cada branch feature(15
s)
Integración continua
62. • Gitlab Docker Runners
• Despliegue a staging en cada push a master
• Despliegue a prod en la generación de TAGS
Entrega continua