En aquest tema, aprendrem com realitzar proves efectives i desplegar la teva solució a Google Cloud Platform (GCP). Aquest procés és crucial per assegurar que la teva aplicació funcioni correctament i estigui preparada per a l'ús en producció.
- Importància de les proves
Per què són importants les proves?
- Detecció d'errors: Identificar i corregir errors abans del desplegament en producció.
- Assegurament de la qualitat: Garantir que la solució compleixi amb els requisits funcionals i no funcionals.
- Millora de la seguretat: Detectar vulnerabilitats de seguretat.
- Optimització del rendiment: Assegurar que l'aplicació funcioni de manera eficient sota diferents condicions de càrrega.
- Tipus de proves
Proves unitàries
- Objectiu: Verificar que cada unitat de codi funcioni correctament.
- Eines: JUnit (per a Java), pytest (per a Python), etc.
- Exemple:
import unittest def suma(a, b): return a + b class TestSuma(unittest.TestCase): def test_suma(self): self.assertEqual(suma(1, 2), 3) if __name__ == '__main__': unittest.main()
Proves d'integració
- Objectiu: Verificar que diferents mòduls o serveis funcionin correctament junts.
- Eines: Postman, SoapUI, etc.
- Exemple:
import requests def test_api(): response = requests.get('https://api.example.com/data') assert response.status_code == 200 assert 'data' in response.json()
Proves de sistema
- Objectiu: Verificar que el sistema complet funcioni correctament.
- Eines: Selenium (per a proves de navegadors), JMeter (per a proves de càrrega), etc.
Proves de rendiment
- Objectiu: Avaluar el rendiment de l'aplicació sota diferents condicions de càrrega.
- Eines: Apache JMeter, Locust, etc.
Proves de seguretat
- Objectiu: Identificar vulnerabilitats de seguretat.
- Eines: OWASP ZAP, Burp Suite, etc.
- Eines de proves a GCP
Google Cloud Build
- Funcionalitat: Automatitzar la construcció, prova i desplegament de la teva aplicació.
- Exemple de configuració:
steps: - name: 'gcr.io/cloud-builders/mvn' args: ['clean', 'install'] - name: 'gcr.io/cloud-builders/gcloud' args: ['app', 'deploy']
Google Cloud Monitoring
- Funcionalitat: Monitoritzar el rendiment i la salut de la teva aplicació.
- Exemple de configuració:
resources: - type: gce_instance labels: instance_id: '1234567890123456789' zone: 'us-central1-a' metrics: - type: compute.googleapis.com/instance/cpu/utilization labels: instance_id: '1234567890123456789'
- Desplegament
Estratègies de desplegament
- Desplegament continu: Automatitzar el desplegament de cada canvi que passa les proves.
- Desplegament en blau/verd: Mantenir dues versions de l'aplicació (blau i verd) i alternar entre elles.
- Desplegament canari: Desplegar la nova versió a un petit subconjunt d'usuaris abans de desplegar-la a tots els usuaris.
Eines de desplegament a GCP
- Google Kubernetes Engine (GKE): Per desplegar aplicacions contenidoritzades.
- Google App Engine: Per desplegar aplicacions sense servidor.
- Google Cloud Run: Per desplegar aplicacions contenidoritzades sense servidor.
Exemple de desplegament amb Google App Engine
-
app.yaml:
runtime: python39 entrypoint: gunicorn -b :$PORT main:app handlers: - url: /.* script: auto
-
Comandament de desplegament:
gcloud app deploy
- Exercici pràctic
Objectiu
Desplegar una aplicació web senzilla a Google App Engine i realitzar proves unitàries i d'integració.
Passos
-
Crear una aplicació web senzilla en Python:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hola, món!' if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)
-
Escriure proves unitàries:
import unittest from main import app class TestApp(unittest.TestCase): def setUp(self): self.app = app.test_client() def test_hello(self): response = self.app.get('/') self.assertEqual(response.status_code, 200) self.assertEqual(response.data, b'Hola, món!') if __name__ == '__main__': unittest.main()
-
Configurar
app.yaml
:runtime: python39 entrypoint: gunicorn -b :$PORT main:app handlers: - url: /.* script: auto
-
Desplegar l'aplicació:
gcloud app deploy
-
Executar les proves:
python -m unittest test_main.py
- Resum
En aquesta secció, hem après la importància de les proves i les diferents tipologies que existeixen. Hem explorat les eines de proves i desplegament disponibles a GCP, i hem realitzat un exercici pràctic per desplegar una aplicació web senzilla a Google App Engine. Aquest coneixement és fonamental per assegurar que les teves aplicacions funcionin correctament i estiguin preparades per a l'ús en producció.
Curs de Google Cloud Platform (GCP)
Mòdul 1: Introducció a Google Cloud Platform
- Què és Google Cloud Platform?
- Configurar el teu compte de GCP
- Visió general de la consola de GCP
- Comprendre projectes i facturació
Mòdul 2: Serveis bàsics de GCP
Mòdul 3: Xarxes i seguretat
Mòdul 4: Dades i analítica
Mòdul 5: Aprenentatge automàtic i IA
Mòdul 6: DevOps i monitoratge
- Cloud Build
- Repositoris de codi font al núvol
- Funcions al núvol
- Monitoratge de Stackdriver
- Gestor de desplegament al núvol
Mòdul 7: Temes avançats de GCP
- Híbrid i multi-núvol amb Anthos
- Computació sense servidor amb Cloud Run
- Xarxes avançades
- Millors pràctiques de seguretat
- Gestió i optimització de costos