Evaluar la 'data gravity': si la lógica de negocio está fuertemente acoplada a los datos, considere mover la computación cerca o dentro de la base de datos para simplificar la arquitectura.
Evaluar la proximidad de la computación a los datos: para flujos de trabajo intensivos en datos, ejecutar la lógica dentro de la base de datos puede simplificar la arquitectura y mejorar el rendimiento.
Priorizar la reproducibilidad: Diseñar sistemas para garantizar salidas deterministas es crucial en dominios científicos y regulados, incluso si implica compromisos de rendimiento.
La modernización de sistemas distribuidos legacy es crítica para aprovechar el hardware actual y satisfacer las demandas de rendimiento de las cargas de trabajo de IA.
La iteración rápida con pruebas de hardware en el entorno real es fundamental para el desarrollo de sistemas complejos, incluso si implica fallos controlados.
No confíes ciegamente en las velocidades Wi-Fi anunciadas; el throughput real está limitado por el eslabón más débil (cliente, distancia, interferencia, eficiencia MAC).
Priorizar el aislamiento de procesos ligero (ej. V8 Isolates) para arquitecturas multi-tenant con código de usuario, optimizando el costo y la latencia de arranque.
Las referencias cíclicas son un problema fundamental en sistemas distribuidos y VMs; Rust, con su modelo de propiedad, requiere soluciones explícitas y a menudo complejas.
Evaluar el costo de abstracción: lenguajes de alto nivel pueden introducir overhead que solo se revela en cargas de trabajo intensivas, requiriendo características de bajo nivel o nightly para optimización.
Diseñar sistemas para entornos interactivos (IDE) requiere priorizar la latencia y la responsividad sobre el throughput puro, incluso si la misma herramienta se usa en CI.
El co-diseño hardware-software es crítico: las decisiones de arquitectura de software deben considerar las características de rendimiento del hardware subyacente.
Un sistema de efectos unificado puede reducir la complejidad sintáctica y semántica en lenguajes de sistemas, especialmente cuando se gestionan múltiples comportamientos no funcionales como asincronía, fallibilidad y acceso a recursos.
Las arquitecturas de seguridad de memoria por hardware (ej. CHERI) requieren una reevaluación profunda de las suposiciones del compilador sobre punteros y direcciones.