Como sobre-diseñar un Blog
Por George Gonzalez
- Lectura en 5 minutos - 952 palabrasComo muchos de mis colegas que trabajan en el campo de administración de macOS, yo había estado pensando en comenzar un blog. Es cierto que hay muchos blogs dedicados a Apple, así que, ¿para qué otro mas?
La cosa es que me encanta la tecnología, y en parte quería poder compartir algunas cosas del día en día. Pero la otra parte es que quería investigar como hacerlo, aprender mas sobre lo que se requiere y la tecnología involucrada. Siempre busco salir de mi zona de confort y probar algo nuevo. Por eso, en este artículo, quería compartir los componentes y mi proceso para este blog y, posiblemente, motivar a algunos de ustedes a hacer lo mismo.
Es cierto que se puede pagar por un servicio que incluye CMS y hosting, no hay nada de malo en eso. Pero quería sobre-diseñar mi proceso :) y aprender algo en el camino.
Receta
- Hugo para crear el sitio
- AWS para hosting
- AWS Amplify
- Route 53 para DNS (ya que estaba dentro del ecosistema de AWS)
- Google Analytics para telemetría
- Disqus para comentarios
- GitHub para el código
- VMware ESXi para VM de compilación
- Docker Hub
- Docker ejecutada en VM para desarrollo
- Kubernetes Cluster para desarrollo
- NGINX para desarrollo
- Jenkins para CI\CD
- Progress Kemp Load balancer solo para exagerar
Creando
No voy a entrar en un tutorial detallado para cada una de las piezas anteriores, ya que los wikis de documentación, las páginas de manual y los archivos Léame para cada tecnología utilizada son suficientes para aprender y configurarlos. Sin mencionar que si hiciera esto, este sería un artículo realmente largo. Además, hay algo (mucho) de experimentación, prueba y error en el camino.
El proceso generalmente comienza en una VM de Ubuntu en mi servidor de laboratorio ESXi que sirve como una máquina de compilación. Esta VM tiene un repositorio git con el contenido del sitio macoasadmin.org. Con el binario de Hugo, puedo crear nuevos artículos y también ejecutar el servidor de Hugo para ver el contenido en vivo.
Se accede a la VM a través de SSH, lo que me permite trabajar en el sitio desde mi iPad o cualquier otro dispositivo. ¿Mi editor preferido? vi en Linux y para archivos Markdown, uso MacDown en macOS u Obsidian en iPadOS. Pero, sinceramente, escribo la mayor parte del contenido en vi mientras estoy conectado por SSH a la VM de compilación.
Durante el proceso de edición posterior, envío este código a GitHub, donde puedo acceder a él desde cualquiera de mis dispositivos para continuar con el proceso de edición desde el móvil. Esto también me permite volver rápidamente a un estado anterior si cambio de opinión.
Una vez que se crea, corrige, verifica y vuelve a verificar el artículo, un solo script crea y publica el sitio en un servidor docker que se ejecuta en otra máquina virtual en ESXi. Ese contenedor docker ejecuta NGINX y accede a una carpeta local para el contenido web.
Si esa compilación tiene éxito, entonces continúa y, como dice el título de la publicación, ¡esto está sobre-diseñado! Luego, un servidor Jenkins abre la rama de desarrollo de GitHub, también descarga la última versión de Hugo, crea un entorno de compilación, construye el sitio estático y luego crea una imagen docker que contiene el sitio estático y NGINX. Este proceso de compilación es similar a lo que hace AWS Amplify, menos el contenedor docker, por supuesto. Luego, la imagen creada se envía automáticamente a Docker Hub.
¡Pero por qué detenerse ahí! El servidor Docker extrae la última imagen y crea un contenedor para verificar que funciona.
Eso debería ser mas que suficiente, ¿verdad? Bueno, en realidad no, luego viene el clúster de Kubernetes. Esto se ejecuta en unas mini PC Dell físicas, un controlador y 3 nodos. ¿Y mencioné que hay un balanceador de carga en la mezcla? Una implementación configura el sitio con réplicas, redes, etc. para accederlo desde dentro de la red.
Como dijo el hombre más interesante del mundo: “No siempre pruebo mi código, pero cuando lo hago, lo hago en Producción”.
Desplegando
Una vez que el sitio está listo y probado, viene la parte fácil. Una sola combinación con la rama principal “merge” y un “commit” en GitHub activa el trabajo de AWS Amplify para crear y publicar el sitio al Internet.
Lecciones
A traves de este proceso se consumió mucho café y definitivamente aprendí bastante.
¡Elegir un nombre de dominio es difícil! - Algo corto, fácil de recordar, fácil de escribir, y justo cuando crees que lo encontraste, ya está tomado, a veces por alguien que no lo esta usando, solo lo tiene para acaparar.
¡Qué pasa con las imágenes! - Especialmente hablando de Apple, es difícil no usar material protegido por derechos de autor, solo porque una imagen esté disponible no significa que sea gratuita. Sitios como Pixabay ofrecen buen contenido.
¿De qué hablamos? - Mucho de lo que hacemos en el trabajo es propietario, es importante asegurarse de no compartir demasiado. Hay que encontrar un buen equilibrio.
¿Cuánto tiempo tomará esto? - Tanto como le quieras dedicar. Construir el sitio y el ecosistema para ejecutarlo es una cosa. La creación de contenido es otra, y en mi caso, decidí traducir manualmente el contenido, por lo que se duplica ese tiempo.
Creo que odio YAML - A veces.
Palabras Finales
Si trabajas en Tecnología de Informática, le recomiendo que al menos pruebe un proyecto similar. Si está leyendo este sitio, es posible que se encuentre en el campo de administración de mac. No te limites solo a Mac, amplía tu horizonte tecnológico tanto como sea posible. Vale la pena, mejorará enormemente sus habilidades. Véalo como una inversión en usted mismo y diviértase en el camino.
–GG