En aquest tema, aprendrem com construir i desplegar aplicacions Go. Aquest procés inclou la compilació del codi font en binaris executables, la configuració de l'entorn de producció i el desplegament de l'aplicació en un servidor. També veurem algunes eines i pràctiques recomanades per assegurar-nos que el nostre desplegament sigui eficient i segur.
- Compilació d'Aplicacions Go
1.1. Compilació Bàsica
Go és un llenguatge compilat, el que significa que el codi font es converteix en un executable binari. Per compilar una aplicació Go, utilitzem la comanda go build
.
-o myapp
: especifica el nom de l'executable resultant.main.go
: és el fitxer principal del nostre projecte.
1.2. Compilació per a Diferents Plataformes
Go permet compilar aplicacions per a diferents sistemes operatius i arquitectures. Això és especialment útil quan necessitem desplegar la nostra aplicació en un entorn diferent del nostre sistema de desenvolupament.
GOOS=linux
: especifica el sistema operatiu de destinació.GOARCH=amd64
: especifica l'arquitectura de la CPU de destinació.
1.3. Compilació Estàtica
Per assegurar-nos que el nostre executable no tingui dependències externes, podem compilar-lo de manera estàtica.
CGO_ENABLED=0
: desactiva l'ús de Cgo.-a
: força la recompilació de tots els paquets.-installsuffix cgo
: evita conflictes amb les versions dinàmiques.
- Desplegament d'Aplicacions Go
2.1. Preparació del Servidor
Abans de desplegar la nostra aplicació, hem de preparar el servidor de destinació. Això inclou la instal·lació de les dependències necessàries i la configuració de l'entorn.
2.1.1. Instal·lació de Dependències
Si la nostra aplicació depèn de serveis externs com bases de dades, hem d'assegurar-nos que aquests serveis estiguin instal·lats i configurats correctament.
2.1.2. Configuració de l'Entorn
Podem utilitzar fitxers de configuració o variables d'entorn per gestionar la configuració de la nostra aplicació. Això ens permet canviar la configuració sense modificar el codi font.
2.2. Transferència de l'Executable
Un cop hem compilat l'executable, el transferim al servidor de destinació. Podem utilitzar eines com scp
o rsync
per fer-ho.
2.3. Execució de l'Aplicació
Un cop l'executable està al servidor, podem executar-lo. És recomanable utilitzar un gestor de processos com systemd
o supervisord
per assegurar-nos que l'aplicació es reiniciï automàticament en cas de fallada.
2.3.1. Configuració amb systemd
Creem un fitxer de servei per a la nostra aplicació.
[Unit] Description=My Go Application [Service] ExecStart=/path/to/deploy/myapp Restart=always User=myuser Group=mygroup Environment=ENV_VAR=value [Install] WantedBy=multi-user.target
Després, activem i iniciem el servei.
- Eines de Desplegament
3.1. Docker
Docker és una eina popular per empaquetar aplicacions i les seves dependències en contenidors. Això facilita el desplegament en diferents entorns.
3.1.1. Creació d'un Dockerfile
FROM golang:1.19 AS builder WORKDIR /app COPY . . RUN go build -o myapp FROM alpine:latest WORKDIR /root/ COPY --from=builder /app/myapp . CMD ["./myapp"]
3.1.2. Construcció i Execució del Contenidor
3.2. Kubernetes
Kubernetes és una plataforma per automatitzar el desplegament, l'escalat i la gestió d'aplicacions en contenidors.
3.2.1. Creació d'un Fitxer de Desplegament
apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: myapp:latest ports: - containerPort: 8080
3.2.2. Desplegament amb kubectl
- Millors Pràctiques
4.1. Gestió de Secrets
Utilitzeu eines com Vault
o AWS Secrets Manager
per gestionar secrets de manera segura.
4.2. Monitorització
Implementeu eines de monitorització com Prometheus
i Grafana
per supervisar el rendiment de la vostra aplicació.
4.3. Registre
Utilitzeu eines de registre com ELK Stack
(Elasticsearch, Logstash, Kibana) per centralitzar i analitzar els logs de la vostra aplicació.
Conclusió
En aquesta secció, hem après com compilar i desplegar aplicacions Go. Hem vist com preparar el servidor, transferir l'executable i executar l'aplicació. També hem explorat eines com Docker i Kubernetes per facilitar el desplegament. Finalment, hem revisat algunes millors pràctiques per assegurar-nos que el nostre desplegament sigui segur i eficient. Amb aquests coneixements, estem preparats per portar les nostres aplicacions Go a producció.
Curs de Programació en Go
Mòdul 1: Introducció a Go
- Introducció a Go
- Configuració de l'Entorn Go
- El Teu Primer Programa en Go
- Sintaxi i Estructura Bàsiques
Mòdul 2: Conceptes Bàsics
Mòdul 3: Estructures de Dades Avançades
Mòdul 4: Gestió d'Errors
Mòdul 5: Concurrència
Mòdul 6: Temes Avançats
Mòdul 7: Desenvolupament Web amb Go
Mòdul 8: Treballant amb Bases de Dades
Mòdul 9: Desplegament i Manteniment
- Construcció i Desplegament d'Aplicacions Go
- Registre
- Monitorització i Optimització del Rendiment
- Millors Pràctiques de Seguretat