Posibilidades de ampliación

La escalabilidad es la capacidad de su carga de trabajo para satisfacer las demandas empresariales casi en tiempo real sin interrumpir la calidad del servicio. Tradicionalmente, se ha asignado capacidad adicional por adelantado para dar cabida a picos predecibles en el tráfico, mientras que se supervisan picos inesperados en el tráfico y se publican alertas para aumentar la capacidad, en un enfoque reactivo.

La ampliación y la reducción de escala requieren una intervención manual y están sujetas a cálculos variables para la cantidad de cambio de capacidad y duración que se debe mantener. Se vuelve más tedioso gestionar los requisitos cuando los picos son frecuentes e impredecibles.

Este tipo de escenarios se han gestionado normalmente con una capacidad de carga de trabajo ampliada permanente, lo que ayuda a adaptarse a la carga, pero supone mayores costos para ejecutar cargas de trabajo a largo plazo. A diferencia de los entornos locales en los que se adquiere capacidad de hardware independientemente del uso, la gestión de este tipo de capacidad en la nube no requiere una inversión permanente en infraestructura, y no es necesario actualizar el hardware para estar al día.

La carga de trabajo puede aumentar la capacidad de demanda en la CPU, la memoria, el almacenamiento y la entrada/salida (E/S), donde la CPU y la memoria son parámetros principales que fluctúan drásticamente. La capacidad se puede ampliar y reducir de dos formas:

  • Escala horizontal: se está agregando capacidad paralela para acomodar carga adicional.
  • Escala vertical: aumente y disminuya la CPU y la memoria, sin cambiar el recuento de infraestructura.

La ampliación horizontal es fácil de lograr colocando los equilibradores de carga delante de la infraestructura de backend. Esto distribuye la carga sin afectar las transacciones existentes y en curso. La ampliación vertical requiere que la infraestructura se amplíe o reduzca verticalmente. La capacidad deseada se aprovisiona en paralelo y la carga de trabajo se transfiere a una nueva capacidad. La carga de trabajo que se transfiere a una nueva capacidad puede causar un impacto mínimo o nulo en las transacciones existentes si el sistema de aplicación está diseñado para gestionar este tipo de escenarios.

Al escalar una aplicación, es importante tener en cuenta no solo la carga de trabajo de la aplicación en sí, sino también el mecanismo de comunicación que la conecta con otras aplicaciones. Un mecanismo de comunicación es un componente esencial de cualquier aplicación distribuida, permitiendo que diferentes partes del sistema intercambien información y trabajen juntas para lograr objetivos comunes. A medida que aumenta la carga de trabajo de una aplicación, también lo hace la demanda de su mecanismo de comunicación. Si el mecanismo de comunicación no está diseñado para escalar, puede convertirse en un cuello de botella, lo que limita el rendimiento general de la aplicación. Esto puede provocar una experiencia de usuario degradada, una mayor latencia e incluso fallos del sistema.

El diseño de una aplicación de arquitectura para ampliarla de forma flexible requiere una consideración minuciosa de todos los aspectos de los límites de recursos informáticos, memoria, almacenamiento, red, rendimiento y limitación. La siguiente información describe escenarios comunes para diseñar un sistema escalable de alto rendimiento. Determina tu enfoque en función de las necesidades de tu organización, los valores empresariales y las prioridades para ejecutar y desplegar tu carga de trabajo en OCI.

Escala a Petición

La escalabilidad bajo demanda es una función de la computación en la nube que le permite ajustar automáticamente los recursos asignados a su aplicación o servicio en función de la demanda actual. Puede aumentar o disminuir el número de servidores, almacenamiento y otros recursos que utiliza en tiempo real, en función de la carga de trabajo. Por ejemplo, OCI Compute ajusta el número de instancias informáticas en un pool de instancias en función de las métricas y el programa para cumplir la capacidad deseada según la configuración.

Reducción y reducción horizontales

La reducción horizontal hace referencia a la reducción del número de recursos asignados a una aplicación o servicio, mientras que la ampliación horizontal hace referencia al aumento del número de recursos. Puede utilizar ambos tipos de escalado para manejar picos de carga. Por ejemplo, las instancias ampliables de OCI están diseñadas para escenarios en los cuales una instancia normalmente está inactiva o tiene un bajo uso de CPU con picos ocasionales. Una vez finalizada la ráfaga, la instancia se reduce a la capacidad base.

Cuotas y límites de servicio

Diseñe la carga de trabajo para que esté equilibrada entre los distintos módulos de una aplicación y se amplíe respectivamente. También tenga en cuenta los límites de servicio en el arrendamiento y las cuotas de compartimento. Por ejemplo, puede crear 50 equilibradores de carga y 5000 MBps para un modelo de suscripción de créditos universales de Oracle (a partir de hoy, lo que puede cambiar en el futuro). Algunos límites de servicio son dinámicos y se pueden aumentar con el tiempo en función del uso. Consulte su modelo de precios de OCI para conocer diferentes límites y cuotas.

Alta disponibilidad

Elimine los puntos de fallo únicos y diseñe la carga de trabajo para garantizar el máximo potencial de tiempo de actividad y accesibilidad. OCI proporciona capacidades de alta disponibilidad como dominios de errores y dominios de disponibilidad para garantizar la redundancia en su carga de trabajo.

Por ejemplo, la distribución de la infraestructura de aplicaciones a más de un dominio de errores proporciona anti-afinidad para que la carga de trabajo no se encuentre en el mismo hardware físico dentro del centro de datos. Un dominio de disponibilidad agrega una capa adicional de fiabilidad, ya que los distintos centros de datos de la misma región están aislados entre sí, son tolerantes a fallos y es poco probable que fallen a la vez. Los centros de datos de una región están conectados entre sí con baja latencia y alto ancho de banda, lo que reduce los problemas de latencia.

Recuperación ante desastres

En caso de fallo catastrófico por desastres naturales o provocados por el hombre, es esencial tener un plan de contingencia en la carga de trabajo para replicarse en otra región. Un proceso de recuperación es la única opción en este tipo de escenario, y el nivel de recuperación debe diseñarse en función de la criticidad de la aplicación, el objetivo de tiempo de recuperación asociado (RTO) y el objetivo de punto de recuperación (RPO). OCI proporciona varios métodos para enfoque de recuperación ante desastres (DR) basados en la durabilidad de los datos, el RTO y el RPO.

Por ejemplo, puede reconstruir el sistema en otra región a partir de una copia de seguridad de la base de datos y aprovisionar la infraestructura con infraestructura como servicio (IaaS) y DevOps para una implantación de DR de bajo costo, pero con una mayor pérdida de datos y falta de disponibilidad. Un sistema activo/activo con replicación y uso compartido de carga en tiempo real tiene un costo mayor, pero casi sin pérdida de datos ni tiempo de inactividad.

Capacity Planning

Determine los recursos necesarios para satisfacer las demandas actuales y futuras de su carga de trabajo en función de los requisitos de rendimiento y las proyecciones de crecimiento para asignar la cantidad correcta de recursos y la escala automática. Puede usar métricas históricas supervisadas para proyecciones.

Por ejemplo, debe aprovisionar la unidad y el tamaño para el almacenamiento de base de datos por adelantado en función de la capacidad lineal en lugar de a demanda. Aprovechar el uso de estadísticas históricas puede ayudarle a definir la capacidad para evitar el escalado ad hoc.

Control del Rendimiento

Mida, realice un seguimiento y analice el rendimiento de las estadísticas de aplicaciones y recursos en la nube para su aplicación a fin de garantizar que cumplen los requisitos de rendimiento y ofrecen un rendimiento óptimo a los usuarios. La supervisión del rendimiento es importante para que la aplicación pueda identificar problemas de rendimiento y tomar medidas correctivas antes de afectar a los usuarios. OCI Application Performance Monitoring proporciona un juego completo de funciones para supervisar aplicaciones y diagnosticar incidencias de rendimiento.

Por ejemplo, Application Performance Monitoring proporciona una visibilidad profunda del rendimiento y permite diagnosticar problemas rápidamente, al tiempo que se centra en proporcionar los procesos de negocio principales. OCI se encarga de supervisar varios componentes y la lógica de aplicación en los clientes, los servicios de terceros y los niveles informáticos de backend, de forma local o en la nube.

Principios de rendimiento

Las aplicaciones deben diseñarse para escalar en diferentes módulos y componentes. Para lograrlo, es esencial que tu aplicación esté diseñada para aprovechar las mejores prácticas de OCI para escalar verticalmente con un tiempo de inactividad cercano a cero.

Por ejemplo, si la aplicación ya está dividida en microservicios finos, se puede desplegar y escalar fácilmente para escenarios de alto rendimiento en Oracle Kubernetes Engine (OKE) u OCI Container Instances. También debe considerar enfoques de implantación, como equilibradores de carga, Scatter-Gather (agrupación y desasociación), caché de resultados, espacio compartido (enriquecimiento de información), conducción y filtro, MapReduce (unión por lotes para cuello de botella de E/S), paralelo síncrono en bloque, Execution Orchestrator, etc. Hay patrones de diseño bien conocidos como Caching, Command Query Responsibility Segregation (CQRS), Anti-Corruption, Circuit Breaker, Event Sourcing, Publisher Subscriber, Sharding, Strangler, Saga, Throttling, etc., para que su aplicación funcione de forma nativa.

Costo frente a capacidad

La capacidad en la nube se puede aumentar o reducir agregando o eliminando infraestructura. Es importante utilizar la capacidad que ya se ha aprovisionado de forma eficiente para reducir el costo total de ejecución. Hay algunos escenarios en los que las aplicaciones críticas para el negocio tienen excepciones para aprovisionar la capacidad por adelantado para evitar infracciones de SLA, lo que está justificado. Tome decisiones basadas en las necesidades y prioridades del negocio antes de decidir sobre la capacidad, ya que las necesidades de rendimiento son proporcionales al aumento de los costos.

Eficacia

Un aspecto del diseño de aplicaciones en la nube para la escalabilidad es manejar el aumento de la carga o el tráfico de una manera rentable. Las aplicaciones deben diseñarse e implementarse para maximizar la eficiencia del uso y el costo de los recursos. Debe supervisar el uso de los recursos y automatizar tanto como sea posible para la escala automática, al tiempo que tiene en cuenta la optimización de costos y la mejora del rendimiento. OCI proporciona capacidad de ampliación automática en la mayoría de nuestros servicios, con configuración. Algunos servicios en la nube se pueden automatizar con sistemas de terceros.

Compromisos

Las compensaciones son una consideración importante para las aplicaciones y la escalabilidad en la nube. Implican tomar decisiones sobre qué aspectos de una aplicación priorizar para lograr la escalabilidad. A medida que las aplicaciones crecen y se vuelven más complejas, se vuelve cada vez más difícil optimizar todos los aspectos de la aplicación simultáneamente. Por lo tanto, debe realizar compensaciones para lograr una escalabilidad óptima.

Algunas ventajas y desventajas comunes que debe considerar son:

  • Rendimiento frente al costo
  • Flexibilidad frente a complejidad
  • Resiliencia frente a costo
  • Escalabilidad frente a seguridad
  • Tiempo de comercialización frente a posibilidades de ampliación

Uso de Serverless y Containers

El uso de contenedores y sin servidor puede mejorar significativamente la escalabilidad en OCI. Esto permite que las aplicaciones se dividan en componentes más pequeños y eficientes que se pueden escalar o reducir fácilmente según sea necesario. En OCI, puede elegir entre OCI Container Engine for Kubernetes (OKE) para el despliegue de contenedores a fin de escalar los microservicios de forma independiente. Considera también OCI Functions y OCI Container Instances para aprovechar la arquitectura flexible de la plataforma sin servidor para servicios altamente escalables para desplegar tu carga de trabajo.

Consideración de la base de datos

Los datos son la parte más crítica de cualquier aplicación. Todo el sistema se basa en la integridad y la información. Es importante tener en cuenta el tipo de base de datos adecuado para adaptarse a las necesidades de la aplicación y del negocio.

Hubo un tiempo en que la información se guardaba en los sistemas de gestión de bases de datos relacionales (RDBMS). Ahora en la nube, puede elegir entre varias opciones de base de datos y proveedores. Hoy en día, las bases de datos satisfacen las necesidades empresariales únicas y van desde el micro tamaño hasta la capacidad increíblemente grande para manejar datos.

Por ejemplo, Oracle Autonomous Database es la mejor opción para los datos transaccionales, mientras que MySQL es más adecuada para análisis y aprendizaje automático. A su vez, la base de datos NoSQL de Oracle es adecuada para datos simples, pero proporciona respuestas predecibles de latencia de milisegundos de un solo dígito para consultas simples. Puede considerar la infraestructura de Exadata para necesidades de aislamiento, alto rendimiento y más seguras.

Consideración del almacenamiento

Los datos vienen en muchos formatos, tamaños y frecuencia de acceso, pero siempre requieren espacio para el almacenamiento. Hay opciones del almacén de objetos, el almacén de bloques y el almacén de archivos para almacenar datos, pero cada uno tiene una finalidad específica. OCI Object Storage se ha creado para que cualquier tipo de contenido se almacene como almacenamiento estándar, poco frecuente y de archivo. OCI File Storage se ha creado para proporcionar un sistema de archivos tradicional que se puede montar como almacenamiento de red o NFS. OCI Block Volume está diseñado para asociarse a una instancia y se puede utilizar como volumen de inicio y volumen en bloque.

Base de rendimiento

Este enfoque se utiliza para determinar el nivel base de rendimiento para que una aplicación se ejecute en la nube para soportar la carga anticipada. Establece un punto de rendimiento de referencia. Este punto se utiliza para futuros puntos de referencia en los cambios necesarios al escalar para cumplir con el nivel de rendimiento deseado.

Prueba de carga y estrés

Las pruebas de carga simulan cargas de usuario casi reales para medir el rendimiento de la respuesta de la aplicación a un mayor tráfico. Comprueba si un sistema puede manejar las cargas de usuario esperadas sin deteriorar el rendimiento o bloqueos. También valida la escalabilidad de un sistema frente a la carga variable en la aplicación. Esto permite que el comportamiento de respuesta identifique cuellos de botella y ayuda a optimizar la configuración del sistema y la planificación de la capacidad.

Las pruebas de estrés van más allá de la carga esperada del usuario y validan la capacidad de una aplicación para manejar picos repentinos en el tráfico o carga inusual. También valida si un sistema puede manejar cargas inusuales e inesperadas sin desglosar el sistema o degradar drásticamente el rendimiento. Esto empuja los límites del sistema para identificar debilidades en la arquitectura o la capacidad del sistema, lo que ayuda a optimizar la escalabilidad y la resiliencia del sistema.

Identificación de bloqueos de botellas

En las aplicaciones en la nube, es fundamental para garantizar la escalabilidad y el rendimiento de una aplicación a fin de identificar cuellos de botella y gestionar la degradación del rendimiento en cascada. Identifique los puntos del sistema en los que el flujo de datos o el procesamiento está restringido o ralentizado, lo que reduce el rendimiento y puede provocar que el sistema falle frente a la capacidad deseada. Se pueden producir cuellos de botella en varias áreas, como la red, el almacenamiento, el procesamiento y el acceso a la base de datos.

Enfoque basado en datos

Utilice herramientas de supervisión y análisis de datos para recopilar y analizar datos para el rendimiento del sistema, los patrones de uso y el comportamiento del usuario con el fin de implantar un enfoque lógico, así como estadísticas de datos para optimizar el rendimiento, la capacidad y la escalabilidad del sistema. Esto conduce a una mejor experiencia de usuario y a un mayor valor empresarial. Algunos pasos clave para implementar un enfoque basado en datos son:

  • Recopile y analice datos.
  • Identifique patrones y tendencias.
  • Optimice la capacidad del sistema en función de las estadísticas.
  • Supervise y ajuste continuamente el rendimiento del sistema.

Supervisión del Estado

El control del estado de las aplicaciones en la nube es fundamental para garantizar la escalabilidad y el rendimiento deseados. Una aplicación en buen estado funciona de manera eficiente y satisface las demandas de los usuarios. Una aplicación no saludable experimenta problemas, como un tiempo de respuesta lento, una alta tasa de errores y bloqueos. El control y la actuación en función del estado de las aplicaciones pueden dar lugar a la detección temprana de problemas, optimizar el rendimiento, mejorar la experiencia del usuario y reducir los costos. OCI Monitoring supervisa de forma activa y pasiva los recursos en la nube mediante la función de métricas y alarmas para recopilar y actuar sobre las configuraciones.

Solución de problemas de rendimiento

Los problemas de rendimiento requieren diferentes enfoques para solucionarlos en entornos en la nube. Los niveles de acceso en la nube pueden ser diferentes de los del sistema local o de la infraestructura local. Los pasos que pueden ayudarle a solucionar problemas de rendimiento en la nube son:

  • Defina el problema.
  • Recopilar los datos.
  • Analizar datos.
  • Identifique las causas de los problemas.
  • Probar y aislar.
  • Solucione el problema.
  • Supervise y valide.

Considere revisar los pasos comunes de solución de problemas proporcionados con cada servicio de OCI.

Identificación de límites de servicio

Es importante tener en cuenta los límites individuales de servicio en la nube para que su sistema sea altamente escalable y alcance la capacidad máxima. Al conocer los límites de rendimiento, puede diseñar el sistema para que funcione dentro de los límites y evitar cuellos de botella de rendimiento o interrupciones del servicio. Por ejemplo, una instancia informática de OCI con hardware dedicado o máquina virtual siempre tiene límites conocidos y problemas que considerar. Puede utilizar OCI Load Balancer para aumentar el rendimiento mediante el despliegue de capacidad adicional detrás del equilibrador de carga.

SLA de Servicio Independiente

Diseñar un sistema escalable y de alto rendimiento requiere una consideración exhaustiva de cada SLA de servicio en la nube para reducir el tiempo de inactividad, incluso en caso de desastre. Cada servicio en la nube tiene un SLA y objetivos de nivel de servicio (SLO) bien definidos. Es posible que deba considerar la redundancia en el sistema para cumplir o superar la disponibilidad de servicios o servicios individuales con el menor tiempo de SLA. OCI ha definido un objetivo de nivel de servicio para PaaS y SaaS Servicios en la nube pública que debe tener en cuenta en su diseño y arquitectura.

Notas técnicas sobre la versión

OCI actualiza constantemente los servicios con nuevas funciones, capacidades y parches. Mantenerte al tanto de los últimos cambios puede ayudarte a mejorar tus aplicaciones e implementar nuevas funciones. Las actualizaciones también contienen correcciones de errores y actualizaciones de seguridad, interrupciones del servicio y tiempo de inactividad, cambios en los precios y planes de servicio, cambios en el cumplimiento y cambios regulatorios. Las Notas de la versión de OCI proporcionan una vista consolidada para que los servicios en la nube se mantengan actualizados sobre los anuncios y los cambios.

Análisis de costos frente a capacidad

Para la escalabilidad, es importante tener en cuenta los requisitos de tamaño y forma, y agregar un límite adicional. También es importante considerar el servicio en la nube adecuado a sus necesidades en lugar de simplemente elegir servicios costosos sin motivos que justifiquen el costo. Evite utilizar servicios innecesarios y agregar capas al sistema para reducir los costos y la latencia. Un análisis exhaustivo del costo, las funciones y la disponibilidad de los servicios en la nube es crucial para diseñar un sistema altamente rentable.