Skip to main content

Instalación inicial

Visión general

La aplicación está hecha en el backend con C# y ASP.NET Core, y el frontend con React. Se usan contenedores tanto en local, con Docker Compose; como en producción, con Kubernetes que desplegamos en Azure Kubernetes Service. Se utiliza SQL Server como base de datos principal y ElasticSearch como base de datos de búsqueda. Caddy es un reverse proxy que se encarga de poner en funcionamiento los varios dominios a los que hacemos peticiones mediante gRPC y gRPC<->JSON (transcoder).

Arquitectura

Tienes también un gráfico general de las aplicaciones de backend y de cómo se comunican en la Arquitectura del backend.

Desarrollo en local

Para desarrollar en local utilizamos contenedores, así que necesitarás el siguiente software instalado previamente en tu máquina:

Dado que el desarrollo se tiene que hacer sobre Linux por el tema de contenedores nos vemos forzados a usar Visual Studio Code para programar C#, donde tiene un soporte adecuado como mínimo. En el caso del frontend también usamos la misma herramienta que en este caso es plenamente eficaz y de referencia.

Tienes otro documento aparte con los comandos típicos que utilizamos durante el desarrollo.

Ejemplo de instalación en Altipla

Si trabajas con Altipla las instrucciones y el propio script de configure-dev-machine te habrá instalado Docker y Docker Compose ya en tu máquina por lo que esos pasos puedes ignorarlos. El resto sí tenemos que realizarlos antes de descargar el proyecto.

Si por ejemplo usas Ubuntu los siguientes pasos te ayudarán a configurar tu sistema:

  1. Instalar Dotnet SDK:

    wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -r -s)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    sudo apt update
    sudo apt install -y dotnet-sdk-3.1 aspnetcore-runtime-3.1
  2. Instalar Dotnet Entity Framework CLI:

    dotnet tool install --global dotnet-ef --version=5.0.0-rc.1.20451.13

Visual Studio Code

Utilizamos una instalación de Visual Studio Code estándar. Puedes interactuar con otros desarrolladores para que te recomienden settings o extensiones que te pueden facilitar la vida. Aparte de esto existen ciertas extensiones básicas que tenemos que tener para poder trabajar:

  • C#: También denominado Omnisharp. Es la extensión para trabajar con C# en cualquier sistema operativo, en nuestro caso Linux. Cuando instalemos la extensión y se abra el proyecto automáticamente se descargará e instalará un montón de paquetes que necesita para funcionar.
  • SQL Server (mssql): Para conectarnos a la base de datos local. Más adelante explicamos un poco más.
Importante

Cuando abras el proyecto por primera vez en vscode te preguntará si quieres añadir los artifactos para depurar y ejecutar. Esto es un mecanismo que solo sirve cuando hay una aplicación y no se usan contenedores, y ninguna de esas cosas ocurre en nuestro proyecto. Responde que no te vuelva a preguntar para que no lo proponga más veces. Es importante no generar los ficheros ni mucho menos subirlos por error en ningún commit porque no sirven en nuestro caso.

Acceso a la base de datos local

Extensión de Visual Studio Code

Para conectarnos a la base de datos local utilizamos el propio editor de Visual Studio Code a través de una extensión llamada SQL Server (mssql) desarrollada por Microsoft. Tienes que buscarla e instalarla y te añadirá una nueva pestaña en el lateral del editor.

La base de datos está en el host localhost, utiliza el usuario sa y la contraseña es DevPassword7!. Todo lo demás puedes dejarlo con el valor por defecto. Una vez dentro puedes interactuar con los datos de una forma muy parecida a SQL Studio.

Para resetear los datos y devolverlos a un estado inicial de pruebas tenemos un comando make data. Puedes aprender más en la guía de comandos típicos

DataGrip

Alternativamente algunos miembros del equipo utilizan DataGrip para usos más avanzados de la base de datos. No se provee licencia interna pero si ya lo tienes para otros usos es una herramienta perfecta para este proyecto.