Micro-optimización de microservicios contenerizados: compilación just-in-time durante la contenerización.

No Thumbnail Available

Date

2025

Journal Title

Journal ISSN

Volume Title

Publisher

Universidad de Concepción

Abstract

Los microservicios contenerizados implementados con lenguajes interpretados como Python y Node.js presentan penalizaciones de rendimiento debido al overhead de interpretación en tiempo de ejecución. Esta investigación evaluó la hipótesis de que la aplicación de técnicas de compilación anticipada durante el proceso de contenerización mejora el rendimiento en tiempo de ejecución de microservicios implementados con lenguajes interpretados. Se aplicaron tres principios de micro-optimización: justenough containerisation (incluir solo componentes necesarios), just-for-me configuration (configuraciones específicas) y just-in-time compilation (compilar durante la construcción del contenedor). La metodología experimental comparó implementaciones estándar versus optimizadas usando micro-benchmarks sintéticos y la aplicación Bookinfo con servicios en Python (Flask), Node.js (Express) y Java (Spring Boot). Los experimentos se ejecutaron en plataformas ARM64 (MacBook M4 Pro y Raspberry Pi 4). Los resultados mostraron efectividad variable: Node.js logró mejoras del 27.9% en throughput usando pkg, Python mostró degradación del 36.6% debido a incompatibilidades entre Flask y Nuitka, mientras Java presentó mejoras del 8.2 %. La investigación identificó que la complejidad del framework tiene mayor influencia que el lenguaje, revelando trade-offs entre rendimiento, tiempo de inicio y recursos. Se concluye que la compilación durante contenerización es efectiva para microservicios Node.js con frameworks minimalistas, pero presenta resultados negativos para frameworks Python con características dinámicas, proporcionando criterios para decisiones arquitectónicas basadas en el contexto específico.
Containerized microservices implemented with interpreted languages such as Python and Node.js present performance penalties due to runtime interpretation overhead. This research evaluated the hypothesis that the application of ahead-of-time compilation techniques during the containerization process improves the runtime performance of microservices implemented with interpreted languages. Three microoptimization principles were applied: just-enough containerisation (including only necessary components), just-for-me configuration (specific configurations), and just-intime compilation (compiling during container build). The experimental methodology compared standard versus optimized implementations using synthetic micro-benchmarks and the Bookinfo application with services in Python (Flask), Node.js (Express), and Java (Spring Boot). Experiments were conducted on ARM64 platforms (MacBook M4 Pro and Raspberry Pi 4). Results showed variable effectiveness: Node.js achieved 27.9% throughput improvements using pkg, Python showed 36.6% degradation due to incompatibilities between Flask and Nuitka, while Java presented 8.2% improvements. The research identified that framework complexity has greater influence than language, revealing trade-offs between performance, startup time, and resources. It is concluded that compilation during containerization is effective for Node.js microservices with minimalist frameworks but shows negative results for Python frameworks with dynamic features, providing criteria for architectural decisions based on specific context.

Description

Tesis presentada para optar al título de Ingeniero/a en Civil Informático/a.

Keywords

Compiladores (Programas para computador), Docker (Computer file), Benchmarks

Citation

URI

Collections