Pourquoi Déployer .NET sur GCP ?
Le déploiement de .NET sur Google Cloud Platform (GCP) présente de nombreux avantages réels pour les développeurs. En effet, GCP propose une plateforme robuste et évoluante qui permet d'héberger des applications .NET de manière sécurisée, performante et à faible coût. Un cas concret serait le déploiement d'une application web complexe nécessitant un traitement de données en temps réel et des services hautement disponibles.
Prerequis
Avant de commencer ce tutoriel, vous devriez avoir les compétences suivantes :
- Connaissances en programmation C# et .NET.
- Une compréhension de base du système GCP (Google Cloud Platform).
- Un compte Google Cloud actif avec des crédits suffisants pour l'exécution des services.
Outils à installer :
- Visual Studio 2019 ou version ultérieure (pour le développement).
- .NET SDK v3.1 ou plus récent.
- Google Cloud SDK v248.0.0 ou plus récent.
- Docker CE v19.03.5 ou plus récent.
Concepts fondamentaux
1. Projet GCP
Un projet est le conteneur principal pour toutes les ressources et services que vous utilisez sur Google Cloud Platform. Chaque utilisateur de GCP peut avoir plusieurs projets, chacun avec ses propres coûts et configurations.
## Créer un nouveau projet dans la ligne de commande
gcloud projects create mon-projet-id --name="Mon Projet"
2. Instance Compute Engine
L'Instance Compute Engine est une machine virtuelle sur laquelle vous pouvez exécuter n'importe quel système d'exploitation et toute application que vous souhaitez.
## Créer une nouvelle instance VM
gcloud compute instances create mon-vm --machine-type=n1-standard-1 --image-family=debian-cloud --image-project=debian-cloud
3. Service Cloud Run
Cloud Run est un service serverless qui permet d'exécuter et de mettre à l'échelle des applications web et API.
## Déployer une application .NET sur Cloud Run
gcloud run deploy mon-app --image=gcr.io/mon-projet-id/mon-app:latest --platform managed
Mise en pratique : Projet fil rouge
Nous allons créer un simple gestionnaire de tâches pour illustrer le déploiement d'une application .NET sur GCP.
Étape 1 : Création du projet
Créez un nouveau répertoire et initialisez-le avec .NET CLI :
mkdir TaskManager
cd TaskManager
dotnet new console -n TaskManager
Étape 2 : Ajout des dépendances
Ajoutez le package Microsoft.EntityFrameworkCore.SqlServer pour la gestion de base de données SQL Server.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Étape 3 : Création du modèle de données
Créez un fichier Models/Task.cs :
using System;
namespace TaskManager.Models
{
public class Task
{
public int Id { get; set; }
public string Description { get; set; }
public bool IsCompleted { get; set; }
}
}
Étape 4 : Création du DbContext
Créez un fichier Data/TaskContext.cs :
using Microsoft.EntityFrameworkCore;
using TaskManager.Models;
namespace TaskManager.Data
{
public class TaskContext : DbContext
{
public DbSet<Task> Tasks { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");
}
}
}
Étape 5 : Ajout des commandes CRUD
Modifiez Program.cs pour ajouter les commandes CRUD :
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using TaskManager.Data;
using TaskManager.Models;
namespace TaskManager
{
class Program
{
static void Main(string[] args)
{
using (var context = new TaskContext())
{
// Ajouter une tâche
var task = new Task { Description = "Faire les courses", IsCompleted = false };
context.Tasks.Add(task);
context.SaveChanges();
// Lire toutes les tâches
var tasks = context.Tasks.ToList();
foreach (var t in tasks)
{
Console.WriteLine($"{t.Id}: {t.Description} - {(t.IsCompleted ? "Terminée" : "En cours")}");
}
// Mettre à jour une tâche
var taskToUpdate = tasks.FirstOrDefault(t => t.Id == 1);
if (taskToUpdate != null)
{
taskToUpdate.IsCompleted = true;
context.SaveChanges();
}
// Supprimer une tâche
var taskToDelete = tasks.FirstOrDefault(t => t.Id == 2);
if (taskToDelete != null)
{
context.Tasks.Remove(taskToDelete);
context.SaveChanges();
}
}
}
}
}
Étape 6 : Exécution de l'application
Exécutez le projet pour vérifier les opérations CRUD :
dotnet run
Erreurs fréquentes et debugging
1. Erreur : La chaîne de connexion est incorrecte
Code incorrect :
optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;");
Code correct :
optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Database=taskdb;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");
2. Erreur : La méthode 'UseSqlServer' n'est pas reconnue
Code incorrect :
optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;");
Code correct :
optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Database=taskdb;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");
3. Erreur : La base de données n'existe pas
Code incorrect :
optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;");
Code correct :
optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Database=taskdb;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");
Pour aller plus loin
1. Utilisation de Kubernetes sur GCP
Kubernetes permet de gérer et d'écheloner des applications sur une infrastructure de conteneurs.
2. Déploiement en production avec SQL Server Managed Instance
Utilisez SQL Server Managed Instance pour un déploiement sécurisé et managé.
3. Utilisation de Cloud Functions
Cloud Functions vous permet de créer des fonctions serverless en C#.
Défi pratique
Développez une application API RESTful pour un blog en utilisant ASP.NET Core et déploiée sur Google Cloud Run. N'oubliez pas d'utiliser une base de données SQL Server sur Azure Database for SQL Server.
Ce tutoriel vous a guidé à travers le processus de déploiement d'une application .NET complète sur GCP. En suivant ces étapes, vous devriez être capable de déployer vos propres applications .NET sur la plateforme GCP de manière efficace et sécurisée.