La app de parches en directo necesita compilaciones repetibles, y los contenedores son la contestación

por calpee

Entendemos que los parches en directo tienen provecho reales, en tanto que dismuyen drásticamente el tiempo de inmovilidad asociado con los parches usuales. No obstante, el parche en directo es parcialmente bien difícil de llevar a cabo sin ocasionar otros inconvenientes y, gracias a esto, el parche en directo no se incorpora con tanta continuidad como debería. Tras todo, lo último que desean los gestores de sistemas es una solución en directo que bloquee un sistema.

Las compilaciones repetibles son entre las herramientas que los programadores tienen la posibilidad de emplear para llevar a cabo rectificaciónes en directo de forma consistente y segura. En el artículo, voy a explicar por qué razón las compilaciones repetibles importan para el parcheo en directo, qué son precisamente compilaciones repetibles y de qué manera los contenedores vienen al salve.

Parches en directo: una herramienta de administración de amenazas fundamental

La app de parches es una sección fundamental del cuidado de los sistemas pues la app de parches soluciona el código deficiente y deficiente. Más esencial aún, los equipos de seguridad confían en los parches para corregir los orificios de seguridad, y eso es verdaderamente urgente. Aguardar una ventana de cuidado correcta para solventarlo es riesgoso, en tanto que ofrece a los piratas informáticos la posibilidad de explotar un exploit.

Esto lleva a un misterio bien difícil: sostenga una alta disponibilidad pero acepte un peligro de seguridad, o coloque parches con cierta frecuencia pero concluya con partes frustradas implicadas. El parche en directo cierra esta brecha. La app de parches en directo supone el trueque de código ofensivo mientras que se ejecuta un desarrollo sin reiniciar la app o el servicio que es dependiente de ese desarrollo.

Llevar a cabo rectificaciónes en directo no es sencillo

El parche en directo no es tan simple – el código de inserción debe “amoldarse” de una forma afín, en caso contrario tienen la posibilidad de ocurrir toda clase de cosas indeseables. Si estropea algo, la app, o todo el servidor, se inhabilita.

El código tras un desarrollo en ejecución por norma general procede de un fichero ejecutable binario, un bloque de código entendible por máquina recopilado desde el código fuente. Por servirnos de un ejemplo, un kernel tiene dentro cientos de ficheros fuente, todos los que se compilan en unos pocos binarios.

Con el parche en directo, el código de parche en directo debe escalarse a un nivel exacto. Sí, el binario con el código de parche es diferente del binario con el código imperfecto. No obstante, el nuevo código debe encajar precisamente y depender de exactamente la misma versión de las bibliotecas importadas. El código de corrección en directo asimismo debe compilarse con exactamente las mismas opciones y banderas del compilador. El bit endian asimismo es esencial: el fichero binario asimismo debe ordenarse.

De entrada, todo lo mencionado es posible, pero en la práctica es un desafío. Por servirnos de un ejemplo, las actualizaciones cotidianas del sistema con frecuencia afectan a las bibliotecas. Estas bibliotecas tienen la posibilidad de ser sutilmente distintas y, por su parte, generar binarios tenuemente distintas en el momento en que compila el código.

Si se crea un parche en un sistema donde hay una pequeña diferencia en solo una biblioteca, ese parche puede denegar de forma fácil el desarrollo al que se aplica. O todo el sistema, si es un parche del kernel.

Por qué razón las compilaciones repetibles importan para la app de parches en directo

En otras expresiones, el ambiente en el que se lleva a cabo un parche es verdaderamente esencial. Al desarrollar un parche, es esencial recrear el ambiente para el código que se marcha a parchear. Puede ser bastante bien difícil sin proseguir las normas.

Esto puede ser mucho más simple para los equipos de código abierto que respaldan el código, en tanto que esos equipos tienen que tener un registro del estado del ambiente original, y lo mismo sucede con los distribuidores de programa. Pero en ocasiones los programadores tras el programa tienen la posibilidad de no publicar una solución velozmente.

En el momento en que las compañías u otros terceros procuran parchear desde adentro, procurar replicar el ambiente de colección original puede ser impresionantemente bien difícil, llevar bastante tiempo, ser impredecible y necesitar bastante ensayo y fallo.

Esta es la razón por la cual los programadores de programa buscaron una manera de recrear mucho más de forma fácil el ambiente de colección original, y por qué razón la llamada colección repetible resultó ser el sendero a proseguir.

Error de falla de computadoraEntonces, ¿qué es una construcción reproducible?

En lenguaje simple, una construcción es reproducible en el momento en que 2 programadores de programa independientes tienen la posibilidad de compilar código fuente entendible por humanos en código entendible por máquina, tal es así que los 2 intentos independientes generen un fichero binario idéntico a nivel de bits.

Para creaciones reproducibles, los autores proponen tres criterios clave para una construcción reproducible. Primero, el desarrollo de construcción ha de ser determinista: no se registran cambiantes como la fecha o la hora y la salida debe producirse en exactamente el mismo orden, una indicación de endianismo de bits.

Entonces, se tienen que proveer o detallar en aspecto las herramientas primordiales para reproducir el ambiente del edificio. En último término, los programadores tienen que poder validar la colección que realizaron.

Podría decirse que entre los elementos mucho más esenciales es la aptitud de replicar el ambiente del edificio, pero asimismo se encuentra dentro de los mucho más bien difíciles de poder dados los varios componentes alterables que trae consigo el ambiente del edificio.

Las compilaciones repetibles no son un término absolutamente nuevo, el Emprendimiento GNU estuvo utilizando compilaciones repetibles desde la década de 1990, pero la herramienta de las compilaciones repetibles podría ser mayor que jamás.

Hágalo bien y su versión repetible le afirma que puede producir una solución que se ajuste a un desarrollo en directo sin romper nada. Asimismo puede confiar en el desarrollo de colección repetible para cerciorarse de que el código binario que está usando no haya sido manipulado. De hecho, esto afirma que se logre contrastar una ruta directa desde la fuente al binario de salida.

Contenedor: el Huevo de Colón parcheado en directo …

Expliqué por qué razón las compilaciones repetibles son un enorme término, pero asimismo por qué razón las compilaciones repetibles tienen la posibilidad de ser bien difíciles de poder. Una ruta que posibilita la replicación del ambiente de colección de forma congruente es usar máquinas virtuales. Los programadores fundamentalmente empaquetan y distribuyen todo el ambiente de colección en una máquina virtual.

No obstante, regentar máquinas virtuales es molesto: el fichero de VM es grande y todo el S.O. debe iniciarse para contestar a una petición de cambio o para poder ver “dentro” de la VM para investigar el ambiente de construcción. En el momento en que existen varios equipos en la mezcla, las máquinas virtuales tienen la posibilidad de ser un inconveniente real.

Los contenedores son una manera considerablemente más simple y ágil de emular el ambiente de construcción original. En comparación con las máquinas virtuales, los contenedores proponen virtualización a nivel del S.O., lo que provoca que las imágenes de los contenedores sean considerablemente más compactas.

Tome Docker, por servirnos de un ejemplo, un producto habitual que deja la contenedorización. En el momento en que los programadores desean emular el ambiente de colección original, el creador sencillamente descarga un fichero de configuración para un contenedor llamado Dockerfile. Este fichero de configuración tiene dentro una sucesión de normas que imitan de cerca el ambiente de construcción.

En vez de conducir ficheros de VM enormes, cualquier cambio en el ambiente de colección sencillamente se redacta en el Dockerfile, que se almacena adjuntado con algún otro código preciso para replicar una colección. Los contenedores dejan a los programadores eludir muchas de las adversidades que sugieren las compilaciones repetibles y, al tiempo, dan un desarrollo de colección que se puede auditar.

El parcheo en directo como práctica día tras día

La aptitud de reproducir packs binarios idénticos (compilaciones reproducibles) es fundamental a fin de que funcionen los parches en directo. No obstante, fué bien difícil conseguir ediciones reproducibles, lo que paralelamente limita la disponibilidad de parches en directo.

Los contenedores hacen más fácil la creación de parches correctos para parches en directo. Abre la puerta a fin de que los clientes empresariales desarrollen rectificaciónes a sabiendas de que esas rectificaciónes se implementarán en directo, sin interrupciones.

Esto quiere decir que los parches en directo se tienen la posibilidad de llevar a cabo de forma mucho más amplia y extensa, lo que salva a muchas organizaciones de los efectos disruptivos del tiempo de inacción del parche y optimización su seguridad general, puesto que los parches en este momento se tienen la posibilidad de utilizar tan rápida y eficazmente como sea preciso.

Fuente original

You may also like