Implementa configuraciones de servicios

En esta página, se describe cómo utilizar Service Infrastructure para realizar una implementación gradual de la configuración de servicio.

La actualización de la configuración de servicio para un servicio de producción es un proceso riesgoso y puede causar una interrupción del servicio. La API de Service Management te permite implementar gradualmente los cambios de configuración, lo que reduce el impacto que se genera por configuraciones de servicio deficientes.

Puedes implementar varias versiones de configuración de servicio y definir cómo se utilizarán estas versiones en el entorno de ejecución, todo a través de la llamada al método services.rollouts.create para iniciar una implementación. Como máximo, se pueden implementar 3 configuraciones de servicio a la vez.

Antes de comenzar

Para ejecutar los ejemplos en esta guía, asegúrate de seguir primero las instrucciones para completar la configuración inicial en Comienza a usar la API de Service Management.

Realiza la implementación

Si suponemos que tienes un servicio administrado endpointsapis.appspot.com compilado en la API de Service Management, puedes realizar los siguientes pasos para implementar un cambio en la configuración de servicio de manera escalonada y controlada.

Por ejemplo, endpointsapis.appspot.com utiliza actualmente la configuración de servicio old, y deseas cambiarla para usar la configuración de servicio new. En lugar de tener una configuración de servicio nueva que todo el tráfico de producción utilice de forma instantánea, puedes crear una implementación para probar la configuración de servicio nueva con el 10% del tráfico total:

# Create rollout to test the new configuration with 10% traffic.
$ gcurl -d '{
  "rolloutId": "canary-rollout",
  "serviceName": "endpointsapis.appspot.com",
  "trafficPercentStrategy": {
    "percentages": {
      "new": 10,
      "old": 90
    }
  }
}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
  "name": "operations/rollouts.endpointsapis.appspot.com:canary-rollout"
  "metadata": {
    "@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
    "resourceNames": [
      "services/endpointsapis.appspot.com/rollouts/canary-rollout"
    ],
    "startTime": ...
    "persisted": true
  },
  "response": {
    "@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
    "rolloutId": "canary-rollout",
    "createTime": ...
    "trafficPercentStrategy": {
      "percentages": {
        "old": 90,
        "new": 10,
      }
    },
    "serviceName": "endpointsapis.appspot.com"
  }
}

Una vez que te asegures de que la configuración de servicio nueva es correcta, puedes crear una implementación para que entregue el 100% del tráfico:

# Create rollout to let new configuration serve 100% traffic.
$ gcurl -d '{
  "rolloutId": "full-rollout",
  "serviceName": "endpointsapis.appspot.com",
  "trafficPercentStrategy": {
    "percentages": {
      "new": 100,
    }
  }
}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
  "name": "operations/rollouts.endpointsapis.appspot.com:full-rollout",
  "metadata": {
    "@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
    "resourceNames": [
      "services/endpointsapis.appspot.com/rollouts/full-rollout"
    ],
    "startTime": ...
    "persisted": true
  },
  "response": {
    "@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
    "rolloutId": "full-rollout",
    "createTime": ...
    "trafficPercentStrategy": {
      "percentages": {
        "new": 100,
      }
    },
    "serviceName": "endpointsapis.appspot.com"
  }
}

En caso de que se observen problemas durante la etapa de prueba, puedes revertir a la configuración anterior; para ello, haz lo siguiente:

# Rollback to the old configuration.
$ gcurl -d '{
  "rolloutId": "rollout-to-old",
  "serviceName": "endpointsapis.appspot.com",
  "trafficPercentStrategy": {
    "percentages": {
      "old": 100,
    }
  }
}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
 "name": "operations/rollouts.endpointsapis.appspot.com:rollout-to-old",
 "metadata": {
   "@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
   "resourceNames": [
     "services/endpointsapis.appspot.com/rollouts/rollout-to-old"
   ],
   "startTime": ...
   "persisted": true
 },
 "response": {
   "@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
   "rolloutId": "rollout-to-old",
   "createTime": ...
   "trafficPercentStrategy": {
     "percentages": {
       "old": 100,
     }
   },
   "serviceName": "endpointsapis.appspot.com"
 }

}

Visualiza el historial de implementaciones

La API de Service Management conserva un historial de implementaciones. Para ver el historial de configuraciones de endpointsapis.appspot.com, puedes realizar las siguientes operaciones:

# List rollout history for `endpointsapis.appspot.com`.
$ gcurl https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
  "rollouts": [
    {
      "rolloutId": "canary-rollout",
      "createTime": ...
      "status": "IN_PROGRESS",
      "trafficPercentStrategy": {
        "percentages": {
          "old": 90,
          "new": 10
         }
      },
      "serviceName": "endpointsapis.appspot.com"
    },
    {
      "rolloutId": "old-rollout",
      "createTime": ...
      "status": "SUCCESS",
      "trafficPercentStrategy": {
        "percentages": {
          "old": 100
         }
      },
      "serviceName": "endpointsapis.appspot.com"
    },
    ...
  ]
}
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Service Infrastructure