Descubriendo las aplicaciones compiladas en Go

Hace poco tiempo que estoy profundamente interesado en Go, no tanto como lenguaje, que me parece atractivo, sino todas las aplicaciones que se han creado con este lenguaje.

La principal ventaja de las aplicaciones creadas con Go es que se compilan en un solo ejecutable, por lo general puedes compilar ejecutables para Windows, Linux y MacOSX con el mismo código, simplemente diciendo al compilador, para que sistema quieres sacarlo.

Luego Go es un lenguaje que genera código compilado próximo a C o C++, por lo que su velocidad de ejecución es muy rápida, y además pensado para facilitar las tareas concurrentes utilizando varios procesadores. El resultado es siempre unas aplicaciones de gran rendimiento y escalabilidad.

El sitio para buscar aplicaciones hechas en Go es GoLandLibs, busca por la etiqueta applications.

Estas son las aplicaciones en Go que más me gustan y uso:

  • Sup. Una herramienta tipo Deployer para lanzar comandos remotos a multitud de servidores en paralelo, como hace Ansible, Capistrano, Deployer, y otros, pero más sencillo y rápido.
  • Capze. Genera una estructura de despliegue tipo Capistrano rápidamente, se integra muy bien con Sup.
  • Restic. Permite generar backups y backups incrementales rápidamente, más rápido que duplicity.
  • Duplicacy. Aún mejor que Restic, permite subir el backup a múltples servicios online de disco: S3, Onedrive, Google Drive, Dropbox, FTP, etc...
  • LNAV. Un visor de logs hypervinaminado, multitud de utilidades como leer directamente de históricos guardados en TGZ sin tener que cambiar de fichero.
  • Hugo. Un generador de webs estáticas. Para qué necesitas Wordpress si puedes tener algo como esto...
  • Fast Reverse Proxy. Permite montar un proxy que exponga los puertos de ordenadores dentro de un NAT a una IP pública. Muy rápido y gran utilidad para desarrollar servicios web en modo pruebas.
  • Minio. Directamente todo un servidor S3 personal en un solo ejecutable. Impresionante.
  • Caddy. Un servidor web con soporte para HTTP2, certificados, gran rendimiento y fácil configuración en un solo fichero. Lo uso principalmente para no tener que montar un Apache o Nginx en un entorno de desarrollo, el fichero de configuración puede ir en el mismo repo GIT y arrancar el proyecto en segundos arrancando las dependencias al mismo tiempo (servidor MySQL, Redis, o lo que sea).
  • NATS. Uno de los grandes descubrimientos, gestiona un sistema de paso de mensajes Pub-Sub y gestión de colas de forma instantánea sin grandes requerimientos como pasa con RabbitMQ. Permite montar cluster del servicio de forma sencilla y aguanta cientos de miles de mensajes por segundo.
  • Aurora. Si buscas un servidor de Beanstalk rápido y sencillo esto es lo que necesitas.
  • Fabio. Un balanceador para microservicios web. Muy rápido.
  • MeshBird. Genera una red virtual distribuida entre tus servidores, contenedores Docker, ordenadores personales y lo que quieras. Muy bueno.
  • GoRush. Un servidor de notificaciones push propio, para no depender de Pushbush y otros...
  • ImageServer. Todo lo que necesitas para recortar, retocar imágenes, resamplear y lo que te imagines como microservicio web con API.
  • Flynn. Escala de forma horizontal servidores de bases de datos o aplicaciones a través de contenedores docker de forma transparente y automática.
  • GoGS. Impresionante, tu propio Github, mil veces más fácil de instalar que Gitlab.

Como veréis hay proyectos muy interesantes usandose en sistemas de producción enormes. y con una fiabilidad asombrosa.

Habrá que estar atentos a los proyectos que vayan surgiendo con este lenguaje.

Author

José Francisco Rives Lirola

Administrador de sistemas en ratos libres, programador, manitas en casa, monitor de patinaje y muchas cosas más.