Self-hosting, en el contexto de la ingeniería de sistemas, es el acto de desplegar, operar y mantener una aplicación, plataforma o servicio utilizando recursos de hardware y software propios de una organización, ya sea en un centro de datos on-premise o en una infraestructura de nube privada. Esto implica la gestión completa del ciclo de vida del software, desde la instalación y configuración inicial hasta las actualizaciones, el monitoreo, la seguridad y la resolución de problemas, sin la intervención directa de un tercero que proporcione el servicio como SaaS (Software as a Service) o PaaS (Platform as a Service).

La implementación de Self-hosting es común en diversas herramientas y plataformas. Por ejemplo, GitLab ofrece una versión 'Community Edition' y 'Enterprise Edition' que las empresas pueden auto-alojar para gestionar su control de versiones y CI/CD, manteniendo todos los datos y la lógica de negocio dentro de su perímetro. De manera similar, Kubernetes puede ser auto-alojado (por ejemplo, con Kubeadm o Rancher Labs) en servidores bare-metal o VMs, dando control total sobre el clúster. Bases de datos como PostgreSQL o MongoDB son frecuentemente auto-alojadas, y herramientas de monitoreo como Prometheus y Grafana también se despliegan a menudo en infraestructuras propias para recolectar y visualizar métricas internas.

Para un Arquitecto de Sistemas, el Self-hosting es una decisión estratégica con importantes trade-offs. Ofrece un control máximo sobre la pila tecnológica, la seguridad de los datos y la personalización, lo cual es crucial para requisitos de cumplimiento normativo estrictos o necesidades de rendimiento muy específicas. Sin embargo, implica una mayor inversión inicial en hardware y licencias, así como un costo operativo continuo significativo en términos de personal especializado, mantenimiento, actualizaciones y gestión de la infraestructura subyacente. La decisión de auto-alojar frente a usar un servicio gestionado debe sopesar el costo total de propiedad (TCO), la complejidad operativa, la soberanía de los datos, los requisitos de escalabilidad y la capacidad interna del equipo para soportar la solución.