Go para crear APIs conectadas con WordPress: cuándo encaja en un proyecto empresarial
WordPress resuelve muy bien la gestión de contenidos, la publicación web y muchas necesidades habituales de una empresa. Pero cuando tu instalación tiene que sincronizarse con un ERP, procesar miles de registros, coordinar varias APIs o atender operaciones en segundo plano, añadir otro plugin no siempre es la mejor respuesta.
En esos casos, Go para desarrollo de APIs puede encajar como una pieza independiente que amplía WordPress sin cargar toda la lógica sobre PHP. La clave no es sustituir WordPress ni utilizar Go por moda: es separar cada responsabilidad y elegir la herramienta adecuada para cada trabajo. En este artículo verás cuándo tiene sentido, qué ventajas aporta y cuándo un plugin convencional sigue siendo suficiente.
WordPress y Go cumplen funciones diferentes
WordPress puede actuar como gestor de contenidos, catálogo, área editorial o escaparate de una empresa. Su REST API permite consultar y modificar recursos como entradas, páginas, usuarios o tipos de contenido personalizados. A partir de ahí, un servicio externo puede comunicarse con WordPress mediante peticiones HTTP.
Go, en cambio, es un lenguaje compilado especialmente adecuado para construir servicios backend: programas que funcionan en el servidor y se ocupan de procesar datos, aplicar reglas de negocio o conectar sistemas.
Una arquitectura habitual podría dividirse así:
- WordPress: administra contenidos, usuarios y la información que necesita la web.
- Servicio en Go: transforma datos, coordina procesos y expone una API propia.
- ERP o CRM: mantiene la información empresarial, como clientes, stock, pedidos o facturas.
- Servicios externos: pagos, logística, email, buscadores, analítica o plataformas de terceros.
Esta separación evita que una operación compleja dependa de una petición de página que debe responder en pocos segundos. También permite desplegar, actualizar y escalar el servicio en Go sin tocar necesariamente el núcleo de WordPress.
¿Por qué no resolverlo todo con un plugin?
Un plugin puede ser la solución más rápida y económica cuando la integración es sencilla. Por ejemplo, mostrar un formulario, añadir un campo a un producto o enviar un aviso a una herramienta externa. El problema aparece cuando el plugin empieza a concentrar demasiadas tareas: consultas al ERP, reintentos, importaciones, cálculos, colas y llamadas simultáneas a varios servicios.
Entre las dificultades más frecuentes están:
- Los tiempos máximos de ejecución de PHP y del servidor web.
- Procesos pesados que bloquean una petición del usuario.
- Errores difíciles de repetir cuando intervienen varios sistemas.
- Dependencias entre plugins que complican las actualizaciones.
- Mayor consumo de recursos en el mismo alojamiento donde funciona WordPress.
Esto no significa que PHP o los plugins sean inadecuados. Significa que una extensión de WordPress no siempre debe convertirse en el motor completo de una integración empresarial. Cuando la lógica crece, separar el servicio puede hacer que el sistema sea más fácil de probar y mantener.
Go para desarrollo de APIs: rendimiento y concurrencia
Go suele ofrecer un rendimiento muy bueno en servicios HTTP, aunque no conviene afirmar que siempre sea más rápido que cualquier alternativa. El resultado depende del código, la base de datos, la red, el formato de los datos y la arquitectura completa. Un benchmark aislado no representa necesariamente el comportamiento de tu proyecto.
La ventaja práctica de Go aparece cuando necesitas atender muchas operaciones de forma eficiente y predecible. El lenguaje incorpora un modelo de concurrencia basado, entre otros elementos, en goroutines. Una goroutine es una tarea ligera que el programa puede ejecutar de forma concurrente, por ejemplo, para consultar varios servicios externos sin esperar a que termine uno antes de comenzar el siguiente.
Imagina una sincronización que debe consultar el ERP, validar precios en otro sistema y actualizar WordPress. Si esas operaciones son independientes, un servicio en Go puede organizarlas de forma concurrente, controlando los límites y los errores. No se trata de lanzar tareas sin control, sino de utilizar un número razonable de trabajadores y gestionar correctamente cancelaciones, tiempos de espera y reintentos.
Este modelo resulta útil en tareas de entrada y salida, conocidas como I/O-bound: peticiones HTTP, consultas a bases de datos, lectura de ficheros o comunicación con colas. Para operaciones que consumen mucha CPU, como cálculos o transformaciones intensivas, también hay que diseñar el procesamiento y medir el resultado; Go no elimina por sí solo todos los cuellos de botella.
La concurrencia necesita límites
Un error común es interpretar la concurrencia como “hacerlo todo a la vez”. Si un ERP solo acepta diez peticiones simultáneas y tu programa lanza mil, el resultado puede ser un bloqueo o una avalancha de errores.
Una API bien diseñada debe incluir:
- Límites de concurrencia y tamaño de las colas.
- Timeouts para no esperar indefinidamente a un proveedor.
- Reintentos con pausas progresivas cuando el error sea temporal.
- Registro de errores con información suficiente para investigar.
- Idempotencia, es decir, capacidad de repetir una operación sin duplicar pedidos o registros.
Despliegue: un servicio independiente y sencillo de transportar
Una aplicación Go se compila para generar un ejecutable. Esto facilita empaquetarla en una imagen de contenedor o desplegarla como un servicio independiente, sin instalar todo el entorno de desarrollo en el servidor. En muchos casos, el resultado puede ser una imagen pequeña, con una configuración más controlada que la de una instalación PHP con numerosos módulos.
El flujo puede ser parecido a este:
- El código se revisa y se prueba en un sistema de integración continua.
- Se compila el servicio para el entorno de destino.
- Se crea una imagen de contenedor con la aplicación y su configuración básica.
- Se despliega en un servidor, una máquina virtual o una plataforma gestionada.
- Se supervisan registros, errores, consumo de recursos y tiempos de respuesta.
La ventaja no es solo técnica. WordPress puede mantenerse en su alojamiento habitual y el servicio en Go puede vivir en otra infraestructura más adecuada para procesos continuos. Así reduces el riesgo de que una importación grande afecte a la web pública.
Eso sí, un binario no elimina la necesidad de conocimientos de operaciones. Hay que configurar variables de entorno, copias de seguridad, certificados, permisos, monitorización y actualizaciones. Si tu empresa no dispone de esa operativa, conviene valorar un servicio gestionado o contar con apoyo técnico.
Casos prácticos en los que Go puede encajar
Sincronización entre WordPress y un ERP
Una empresa puede publicar parte de su catálogo en WordPress o WooCommerce, mientras que el ERP es la fuente principal de precios y stock. El servicio en Go puede consultar los cambios, convertir los formatos y actualizar solo los productos afectados.
Una sincronización robusta debería contemplar:
- Identificadores comunes para relacionar productos y clientes.
- Registro de la fecha y el resultado de cada sincronización.
- Reintentos para errores temporales de red.
- Una cola para procesar muchos cambios sin bloquear la web.
- Alertas cuando un dato no pueda transformarse o validarse.
También puede funcionar en la dirección contraria: recibir un pedido de WordPress, enviarlo al ERP y devolver el identificador empresarial correspondiente.
Procesamiento de datos y tareas por lotes
Si necesitas importar ficheros CSV o JSON, normalizar miles de registros, generar informes o calcular agregados, es preferible ejecutar ese trabajo fuera de una petición de WordPress. El servicio puede leer los datos por bloques, validar cada registro y guardar los resultados parciales.
Así, si falla una parte del proceso, no tienes que comenzar desde cero. Además, puedes programar la tarea durante una franja de menor actividad y conservar un historial para comprobar qué ha ocurrido.
Orquestación de servicios externos
En ocasiones WordPress no es el sistema que debe conocer todos los detalles de una integración. Un servicio en Go puede actuar como intermediario entre la web y proveedores de pagos, logística, email, firma digital o búsqueda.
Esta capa permite unificar respuestas, ocultar credenciales, validar datos antes de enviarlos y cambiar de proveedor sin modificar toda la instalación. También puede aplicar reglas como “si el pedido supera determinado importe, solicita una verificación adicional” o “si el transportista no responde, utiliza una alternativa”.
WordPress como CMS desacoplado
En una arquitectura headless, WordPress conserva la gestión editorial, pero la interfaz pública se construye con otra tecnología. En este escenario, Go puede proporcionar una API intermedia que combina contenido de WordPress con datos del ERP, del buscador o de una aplicación móvil.
WordPress documenta su REST API y la posibilidad de ampliar rutas y endpoints. Puedes consultar la documentación oficial de la REST API de WordPress para revisar sus recursos y mecanismos de extensión.
Ejemplo de comunicación con WordPress
Un servicio externo puede consultar publicaciones mediante una petición como esta:
GET https://ejemplo.com/wp-json/wp/v2/posts?per_page=10
Para operaciones que requieren permisos, WordPress ofrece distintos mecanismos de autenticación. Las Application Passwords permiten crear credenciales específicas para una aplicación, en lugar de compartir la contraseña habitual del usuario. Debes utilizar siempre HTTPS, limitar los permisos y revocar las credenciales que ya no necesites.
Un cliente HTTP básico en Go podría tener esta estructura:
client := &http.Client{
Timeout: 10 * time.Second,
}
req, err := http.NewRequest(
http.MethodGet,
"https://ejemplo.com/wp-json/wp/v2/posts",
nil,
)
if err != nil {
return err
}
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
return fmt.Errorf("WordPress respondió con %s", resp.Status)
}
El ejemplo solo muestra la comunicación básica. En un proyecto real añadirías decodificación JSON, validación, autenticación cuando proceda, control de paginación y tratamiento diferenciado de errores.
Cuándo elegir Go y cuándo no
Go merece una valoración seria si marcas varios de estos puntos:
- Necesitas procesar muchas peticiones o cambios de datos.
- Hay tareas que no deberían ejecutarse dentro de una petición web.
- Debes coordinar varios servicios externos con reintentos y límites.
- Quieres desplegar la integración de forma independiente a WordPress.
- Necesitas una API para una web, una aplicación móvil y otros clientes.
- Tu equipo puede asumir pruebas, monitorización y mantenimiento del servicio.
En cambio, probablemente no necesitas Go si solo quieres añadir un campo, conectar un formulario sencillo o consumir una API ocasionalmente. En esos casos, un plugin bien mantenido o una pequeña extensión PHP puede reducir el tiempo y el coste de desarrollo.
Costes, mantenimiento y decisión empresarial
Una arquitectura desacoplada ofrece ventajas, pero también añade piezas. Tendrás que mantener el servicio, controlar sus credenciales, revisar sus logs y actualizar sus dependencias. También necesitarás definir quién responde si falla la sincronización o si WordPress y el ERP dejan de estar disponibles.
Antes de aprobar el desarrollo, prepara estas respuestas:
- ¿Qué sistema es la fuente oficial de cada dato?
- ¿La sincronización debe ser inmediata o puede ejecutarse cada cierto tiempo?
- ¿Cuántos registros y peticiones se esperan en un día normal y en un pico?
- ¿Qué ocurre si una operación se repite o queda a medias?
- ¿Quién recibe una alerta cuando aparece un error?
- ¿Dónde se almacenan los secretos y los registros?
Para una pequeña empresa o una agencia de Barcelona, esta evaluación evita invertir en una arquitectura excesiva. También ayuda a detectar el caso contrario: una integración que parece pequeña, pero que puede convertirse en un punto crítico para ventas, logística o atención al cliente.
Una arquitectura razonable para empezar
Un primer diseño puede mantener WordPress como sistema editorial y añadir un servicio en Go con tres responsabilidades claras: recibir peticiones, procesar la lógica de integración y comunicar los resultados. Las tareas lentas pueden pasar a una cola para ejecutarse de forma asíncrona.
El esquema sería:
WordPress / frontend
|
| HTTPS
v
API o servicio en Go
|
+-- ERP o CRM
+-- Cola de trabajos
+-- Servicios externos
+-- Base de datos de integración
Empieza con una frontera pequeña y medible. Por ejemplo, sincronizar stock y registrar cada resultado. Cuando ese flujo sea estable, puedes añadir pedidos, clientes o nuevos proveedores. Diseñar por etapas reduce el riesgo y permite comprobar si la solución aporta valor antes de convertirla en una plataforma demasiado compleja.
Si no tienes claro si tu proyecto necesita un plugin, una extensión de WordPress o una API independiente, puedes solicitar una revisión técnica a FerBcn. Fernando puede analizar tu instalación, el sistema que quieres conectar, el volumen previsto y las necesidades de mantenimiento para proponerte una solución proporcionada, sin añadir complejidad donde no hace falta.