Tras años gestionando ecosistemas en WordPress, me encontré con un cuello de botella: la concurrencia. Aquí explico cómo el paso a Golang cambió mi forma de desplegar microservicios.
Desde 2016, WordPress fue mi herramienta principal. Es fantástico para el 80% de la web, pero cuando tus aplicaciones empiezan a manejar miles de peticiones simultáneas de datos estructurados, el peso del núcleo de WP empieza a notarse.
El problema de la concurrencia
PHP, en su modelo tradicional, crea un proceso por petición. Go, por otro lado, utiliza Goroutines. Esta fue la razón principal de mi cambio en 2020. Poder manejar miles de conexiones con un consumo de memoria mínimo transformó mis costos en OVH.
"No se trata solo de velocidad, se trata de control sobre los recursos y la seguridad del tipado fuerte."
Implementación en Go + MongoDB
Una de las primeras cosas que implementé fue un driver robusto para MongoDB Atlas. El tipado de Go me permitió definir modelos de datos que evitan errores en producción antes de que ocurran.
// Ejemplo de un modelo simple en mi API
type Project struct {
ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
Title string `bson:"title" json:"title"`
Status string `bson:"status" json:"status"`
UpdatedAt time.Time `bson:"updated_at" json:"updated_at"`
}
func GetProject(id string) (*Project, error) {
// Lógica de conexión a Mongo Atlas...
return project, nil
}Despliegue con Docker y Traefik
Al usar contenedores, el despliegue de estas APIs en mi VPS de OVH se volvió trivial. Traefik se encarga de detectar el nuevo contenedor y asignar el certificado SSL automáticamente. Esto es lo que yo llamo infraestructura invisible.
Si estás considerando dar el salto de un entorno monolítico a uno basado en microservicios con Go, mi recomendación es clara: empieza por las piezas pequeñas que requieren más rendimiento.