Trabajo en ReactiveOps, donde nos especializamos en DevOps-as-a-Service y Kubernetes Consulting. Una de nuestras ingenieros, Sarah Zelechoski, abordó esto recientemente en una publicación del blog:
“Antes de profundizar demasiado, deberíamos aclarar un par de cosas sobre los tipos de escala disponibles, horizontal y vertical. La escala horizontal significa que agrega instancias de hardware a su grupo de recursos para aumentar el número de instancias de aplicaciones que puede ejecutar en cualquier momento. La escala vertical significa que agrega más potencia (CPU y RAM) a las instancias de hardware existentes que administra por la misma razón. En el primer caso, tienes más instancias; En el segundo, tienes instancias más grandes.
Muchas empresas no diferencian a las dos en sus operaciones diarias, ni las optimizan para el caso.
Muchas empresas escalan incorrectamente o al menos ineficientemente
- Estoy iniciando mi carrera en TI, pero muchas personas dicen que tengo un Talento en arte. ¿Qué tengo que hacer?
- ¿Por qué el trabajo de sysadmin parece atraer fanáticos?
- ¿Qué es la tecnología de información espacial?
- ¿Cómo es la escena de puesta en marcha en Berlín? ¿Recomendaría mudarse a Berlín a alguien que esté trabajando en TI?
- ¿Qué pasará con la externalización de TI a la India a medida que el aumento de los salarios y la inflación haga que la mano de obra sea más costosa que nunca?
Por ejemplo, una aplicación puede ser de un solo hilo y enlazada a la CPU (lo que significa que no puede aprovechar más de un núcleo de la CPU) y requiere una cantidad decente de memoria. Para escalar esta aplicación, necesitarás ejecutar más instancias de ella. Puede ejecutar más instancias de la aplicación en cada instancia de hardware (escala vertical), o puede continuar ejecutando una única instancia de aplicación por máquina, pero generar más instancias de hardware para admitirlas (escala horizontal). Si eliges escalar horizontalmente (el método más común que veo), te encuentras con problemas de tamaño de instancia. Dado que los proveedores de nube tienen un conjunto de tamaños de instancia, debe elegir un tamaño lo suficientemente grande como para proporcionar la cantidad de RAM que necesita su aplicación, lo que significa que a menudo tendrá recursos de CPU inactivos. Como resultado, terminas comprando piezas costosas de hardware y usando solo la mitad (o menos de la mitad) de ellas. Este tipo de escalado también es lento porque lleva tiempo girar cada instancia, lo que dificulta su capacidad para responder a las grandes oleadas de tráfico.
Entrar en contenedorización
Afortunadamente, hay otra manera. En lugar de tener una infraestructura con grandes instancias que se usan a medias, la contenedorización le permite administrar una infraestructura más enfocada, compuesta por un número controlado de nodos de host agrupados. En el mundo de Kubernetes, tiene un conjunto de recursos de nodo comunes: CPU y RAM. Ya que en este caso su aplicación está contenida en un contenedor y no está sujeta a las limitaciones de hardware de la misma manera que antes, puede incluir múltiples réplicas de la misma en el clúster. En lugar de girar una nueva máquina para cada instancia de aplicación, puede apilar un montón de réplicas de aplicaciones en la misma máquina. Kubernetes incluso le permite designar medidas muy pequeñas de CPU y RAM (como una milésima parte de una CPU o KiB de RAM), para que pueda especificar exactamente qué necesita su aplicación. Este nivel de precisión en la asignación de recursos es extremadamente empoderante “.
Espero que esto haya sido útil. Si desea obtener más información, puede leer la publicación completa: La importancia de escalar la infraestructura de la manera correcta