SNAPS, ¿QUE SON Y PARA QUE SIRVE?

Nunca por encima de ti, nunca por debajo de ti, siempre a tu lado

– Walter Winchell

¿Qué es un Snap?

Un snap:

  • Es un sistema de archivos squashFS que contiene el código de tu aplicación y un archivo snap.yaml con metadata específica.  Contiene un sistema de solo lectura y, despues de instalada, una zona para escribir.
  • Es auto contenido. Contiene integrado la mayoría de las librerías y runtimes que necesita y puede ser actualizado y revertido sin afectar el resto del sistema.
  • Esta apartado del SO y las otras aplicaciones a través de mecanismos de seguridad, pero puede intercambiar contenido y funciones con otros snaps de acuerdo a politicas granulares controladas por el usuario y predeterminados del SO.

¿Para qué sirve un Snap?

En pocas palabras, un snap es una forma diferente de empaquetar software sin necesidad de una instalación complicada, es algo muy similar a la forma en la que se instalan la mayoría de programas en OSX, todos los archivos necesarios para que se ejecute nuestra aplicación se encuentran en un “contenedor”, lo cual permite administrarlo de forma más eficiente a su contra parte, que necesita crear archivos en diferentes directorios (opt, var, lib, etcétera) para funcionar correctamente.

Parte de la filosofia de snap, es:

  • Código reubicable: El concepto principal para “snappear” un software, es que tu aplicación necesita ser reubicable. Es buena práctica no depender de ubicaciones hardcodeadas […] Si no, leer/cargar recursos y configuraciones de subdirectorios de tu aplicación […].
  • Publicar y referenciar dependencias propias: Otro concepto importante de Snap, es que el desarrollador esta en control de las dependencias de la aplicación. No se actualizará ninguna dependencia mientras se empaquete lo necesario en el snap, la aplicación se actualiza de forma conjunta con sus dependencias.
  • Un snap no puede escribir en cualquier ruta que lo permita. La información esta contenida y localizada en unas pocas rutas. Esto es para permitir que el mecanismo de rollback pueda revertir la información en conjunto con la versión misma del código, asegurando que los datos siempre sean compatibles con la versión de la aplicación.
  • Las rutas previamente mencionadas, se encuentra bajo un control de versión, lo que significa que cada actualización del snap, se copia en un directorio nuevo.

Snap vs Docker

Aunque puedan parecer lo mismo, docker se enfoca en un punto de vista mas de virtualización, un docker posee una ip propia y esta practicamente aislado del sistema padre, mientras que snap se enfoca en contenedores de aplicaciones y permisos granulares para aplicaciones, y ya siendo más específicos, en el control de dependencias y por consiguiente, compatibilidad con todos los sistemas que soporten snap.

Un ejemplo muy claro de esto, son las aplicaciones java, aunque no sea una muy buena práctica, es algo común encontrar aplicaciones java que no tomaron muy bien la actualización de java 6 a java 7 en adelante, e incluso que dejaron de ser actualizadas y ya no es posible seguir usándolas, si generaramos un snap de estas aplicaciones con su correspondiente dependencia con el jre que le corresponde, el uso de aplicación no dependería de nuestro jre más actualizado (y más seguro) sin alterar el estado de nuestra maquina, ni empalmar librerías innecesariamente.

Este ejemplo se podría considerar como una muy mala práctica, pero se usa solamente para ejemplificar el uso de snap, de ser necesario es posible seguir usando librerías viejas mientras estabilizamos nuestra aplicación en las versiones más nuevas.

Nota: Toda la información presentada es una traducción y/o reinterpretación de la información oficial que puede encontrarse en el enlace proporcionado en la defición de snap. llevame ahí 

Nota 2: La comparativa de Snap vs Docker se presenta de manera superficial solo para presentar snap en contexto con otras alternativas, si el lector desea saber más sobre las diferencias entre estas opciones, puede revisar la documentación oficial de snap y la de docker. También puede ver la siguiente platica de Mark Shuttleworth.

Si le parecio importante el artículo, si tienen alguna duda o comentario compartan su idea, saludos y hasta la próxima

1 reply on “ SNAPS, ¿QUE SON Y PARA QUE SIRVE? ”
  1. Me lo acabo de instalar en openSUSE, nada dificil la pagina web te lleva de la mano tanto para ubuntu,fedora y otros. Me instale el spotify pero no mas no jala. Debemos dedicarle un articulo para la instalación de paquetes.
    Saludos y buen post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *