localstack: emulación de servicios de AWS para desarrollo y pruebas locales

Puede llevar mucho tiempo, ser difícil e incluso peligroso crear y probar aplicaciones basadas en la nube en un entorno de producción. Aquí es cuando se hace evidente la importancia del crecimiento regional. Debido a que se lleva a cabo en el propio sistema del desarrollador, el desarrollo local ayuda a reducir los costos, facilita la depuración y acorta los tiempos de desarrollo.

LocalStack

La mejor herramienta de desarrollo local, si no una de las mejores, es LocalStack, que se basa en AWS (Amazon Web Services). LocalStack crea una pila de nube AWS local completamente funcional, que puede realizar algunos desarrollos y pruebas fuera de línea de nuestras aplicaciones en la nube y sin servidor.

La pila local es fácil de usar y proporciona un entorno de prueba en su sistema local que imita las API y los comportamientos de los servicios en la nube de AWS. Ahora puede crear y probar sus aplicaciones de AWS sin gastar dinero ni requerir acceso a Internet.

La importancia de Docker

Docker es una parte esencial de esta infraestructura. Docker es una tecnología de código abierto que emplea la distribución de software en contenedores a través de la virtualización a nivel del sistema operativo.

Esto no solo garantizará que la aplicación funcione correctamente en cualquier entorno porque cada contenedor es autónomo e incluye todo el software, las bibliotecas y las utilidades del sistema necesarios, sino también que todo funcione localmente. Docker ofrece la contenedorización que utiliza LocalStack para simular la nube de AWS en su estación de trabajo local.


Inicializando Docker

Debemos asegurarnos de que Docker esté funcionando antes de poder iniciar LocalStack. El inicio de Docker varía de un sistema operativo a otro.

MacOS: Docker se puede iniciar en segundo plano en MacOS escribiendo open –background -a Docker. Docker se puede iniciar en segundo plano.
Linux: Docker se implementa normalmente en Linux como un servicio. Se puede usar el comando sudo service docker start para iniciarlo.
Windows: En Windows, Docker se puede inicializar desde el menú Inicio o con un comando como Start-Process -NoNewWindow “C:\Program Files\Docker\Docker\Docker Desktop.exe” en PowerShell.

Es fundamental verificar que Docker siga funcionando después de iniciarlo. Se puede usar el comando docker system info para este propósito. Este comando debería devolver información sobre el sistema Docker si Docker funciona correctamente. Si Docker no se está ejecutando, el comando no devolverá ningún resultado.

Cómo poner en funcionamiento LocalStack

LocalStack se puede instalar y ejecutar una vez que Docker esté en funcionamiento. Pero el procedimiento de instalación es diferente para cada SO.

  • Con el comando brew install localstack, se puede usar el administrador de paquetes Homebrew para configurar LocalStack en MacOS.
  • Con el comando sudo apt-get install localstack, se puede configurar LocalStack en máquinas Linux con la ayuda del administrador de paquetes APT.
  • El administrador de paquetes LocalStack está disponible para Windows y se puede instalar con el comando choco install localstack.

Una vez que se haya instalado LocalStack, puede ejecutarlo con el comando localstack start.

Usar un script de shell para automatizar todo por completo

Para simplificar las cosas, podemos escribir un script de shell para determinar el sistema operativo, iniciar Docker, implementar LocalStack y ponerlo en marcha. El siguiente script debe ejecutarse con

 chmod +x localstack.sh &&./localstack.sh:

#!/bin/bash

# Function to start Docker and ensure it's running on macOS
start_docker_mac() {
    echo "Starting Docker on macOS..."
    open --background -a Docker
    while ! docker system info > /dev/null 2>&1; do sleep 1; done
    echo "Docker is running."
}

# Function to start Docker and ensure it's running on Linux
start_docker_linux() {
    echo "Starting Docker on Linux..."
    sudo service docker start
    while ! docker system info > /dev/null 2>&1; do sleep 1; done
    echo "Docker is running."
}

# Function to start Docker and ensure it's running on Windows
start_docker_windows() {
    echo "Starting Docker on Windows..."
    Start-Process -NoNewWindow "C:\Program Files\Docker\Docker\Docker Desktop.exe"
    while (!(Test-Connection localhost -count 1)) { Start-Sleep -Seconds 1 }
    echo "Docker is running."
}

# Function to install LocalStack on macOS
install_mac() {
    echo "Installing LocalStack on macOS..."
    brew install localstack
}

# Function to install LocalStack on Linux
install_linux() {
    echo "Installing LocalStack on Linux..."
    sudo apt-get install localstack
}

# Function to install LocalStack on Windows
install_windows() {
    echo "Installing LocalStack on Windows..."
    choco install localstack
}

# Detect the operating system
OS="$(uname)"
case $OS in
  'Linux')
    start_docker_linux
    install_linux
    ;;
  'Darwin') 
    start_docker_mac
    install_mac
    ;;
  'WindowsNT')
    OS='Windows'
    start_docker_windows
    install_windows
    ;;
  *) ;;
esac

# Start LocalStack
localstack start

El script anterior define funciones que, según el sistema operativo, iniciarán la ejecución de Docker o instalarán LocalStack. Luego, determina el sistema operativo y llama a las funciones que son relevantes para ese sistema. Finalmente, activa LocalStack.

A tener en cuenta que para ejecutar este script es necesario que tener instalado Docker y el administrador de paquetes necesario (Homebrew para MacOS, APT para Linux y Chocolatey para Windows) en su sistema operativo. En caso de que aún no estén instalados, se deben instalar antes de ejecutar este script.

Conclusión

La combinación de LocalStack con Docker crea una gran herramienta para desarrollar localmente en AWS. Emular el entorno de Amazon Web Services (AWS) localmente permite a los desarrolladores mejorar su productividad, reducir gastos y evitar los peligros asociados con la creación de software directamente en un entorno de nube en vivo.

Puede simplificar aún más la puesta en marcha de su entorno de nube local de AWS automatizando el proceso de inicio de Docker, instalación de LocalStack y ejecución de LocalStack con la ayuda de un sencillo script de shell. Esto le permitirá ahorrar tiempo.

Leave a Reply

Your email address will not be published. Required fields are marked *

You cannot copy content of this page

Open chat
Scan the code
Hello 👋
Can we help you?