Pourquoi Deployer Go sur Heroku ?
Deployer Go sur Heroku est une pratique très utile pour les développeurs qui veulent rendre leur application accessible en ligne rapidement et facilement. Heroku, bien qu'être connu principalement pour son support de Ruby, offre également un excellent environnement pour exécuter des applications Go. Le principal avantage est que Heroku prend en charge les déploiements automatisés et gère l'infrastructure sous-jacente, ce qui permet aux développeurs de se concentrer sur le développement de leur application plutôt que sur la gestion du serveur.
Un cas d'utilisation concret serait un développeur qui crée une API pour une application mobile. En déployant cette API sur Heroku, il peut facilement rendre l'API accessible à tous les utilisateurs de l'application, peu importe où ils se trouvent dans le monde.
Prerequis
- Connaissances en Go : Vous devez être familier avec la syntaxe et les concepts de base de Go.
- Compréhension des bases du terminal : Vous devrez utiliser des commandes终端 pour interagir avec Heroku.
- Compte Heroku : Un compte Heroku gratuit suffit pour ce tutoriel.
Outils à installer :
- Go : La dernière version de Go est recommandée. Vous pouvez la télécharger depuis le site officiel https://golang.org/dl/
# Installer Go sur macOS via Homebrew brew install go # Installer Go sur Linux via apt-get (ex: Ubuntu) sudo apt-get update && sudo apt-get install golang-1.20-go - Heroku CLI : Installez-le en suivant les instructions sur le site officiel https://devcenter.heroku.com/articles/heroku-cli
Concepts fondamentaux
1. Création d'une Application Heroku
Pour créer une application Heroku, utilisez la commande suivante dans votre terminal :
## Lancer l'initialisation de la nouvelle application
heroku create nom_de_votre_app
2. Déploiement sur Heroku
Heroku prend en charge le déploiement via Git. Vous devez d'abord initier un dépôt Git dans votre projet :
## Initialiser un dépôt Git et ajouter les fichiers
git init
git add .
git commit -m "Initial commit"
Ensuite, vous pouvez déployer votre application sur Heroku en utilisant la commande suivante :
## Déployer l'application sur Heroku
git push heroku master
3. Configuration des Variables d'Environnement
Heroku permet de définir des variables d'environnement pour votre application directement depuis le terminal ou via un fichier .env. Vous pouvez ajouter une variable d'environnement comme ceci :
## Définir une variable d'environnement
heroku config:set API_KEY=your_api_key
Mise en pratique : projet fil rouge
Pour ce tutoriel, nous allons créer un simple microservice qui expose une API pour récupérer des informations sur les utilisateurs. Ce service sera écrit en Go.
1. Création du Projet
Commencez par la création d'un nouveau répertoire et initialisez-le avec Git :
## Créer un nouveau répertoire et entrer dans celui-ci
mkdir user-service && cd user-service
## Initialiser un dépôt Git
git init
2. Création du Fichier main.go
Créez un fichier main.go avec le contenu suivant :
// Importer les packages nécessaires
package main
import (
"encoding/json"
"fmt"
"net/http"
)
// Définir une structure pour les utilisateurs
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
// Fonction pour récupérer la liste des utilisateurs
func getUsers(w http.ResponseWriter, r *http.Request) {
users := []User{
{ID: 1, Name: "John Doe", Email: "john.doe@example.com"},
{ID: 2, Name: "Jane Smith", Email: "jane.smith@example.com"},
}
json.NewEncoder(w).Encode(users)
}
func main() {
// Définir les routes
http.HandleFunc("/users", getUsers)
// Démarrer le serveur sur le port 8080
fmt.Println("Starting server at port 8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
panic(err)
}
}
3. Création des Fichiers Procfile et go.mod
Créez un fichier Procfile avec le contenu suivant :
web: go run main.go
Ce fichier indique à Heroku que l'application doit être lancée en utilisant la commande go run main.go.
Ensuite, créez un fichier go.mod pour gérer les dépendances de votre projet :
## Créer un fichier go.mod
go mod init user-service
## Ajouter le module standard d'HTTP
go get net/http
4. Commit et Déploiement sur Heroku
Ajoutez tous les fichiers à Git, faites le commit, puis déployez l'application :
## Ajouter les fichiers au dépôt
git add .
## Faire un commit
git commit -m "Initial commit of user service"
## Déployer sur Heroku
git push heroku master
Erreurs frequentes et debugging
1. Erreur : command not found: go
Si vous recevez cette erreur, assurez-vous que Go est correctement installé en vérifiant sa version :
## Vérifier la version de Go
go version
Si Go n'est pas installé, suivez les instructions dans la section "Prerequis".
2. Erreur : could not find go binary in $PATH
Assurez-vous que le chemin d'installation de Go est ajouté à votre variable $PATH. Vous pouvez ajouter les lignes suivantes au fichier .bashrc ou .zshrc :
export PATH=$PATH:/usr/local/go/bin
Ensuite, rechargez le terminal :
source ~/.bashrc # Pour Bash
## Ou
source ~/.zshrc # Pour Zsh
3. Erreur : Application could not start: command not found
Si vous recevez cette erreur, vérifiez que la commande spécifiée dans le fichier Procfile est correcte et que Go est installé sur l'instance Heroku.
Pour aller plus loin
Gestion des erreurs HTTP personnalisées : Apprendre à gérer les erreurs HTTP personnalisées pour une meilleure expérience utilisateur.
Utilisation de packages tiers Go : Explorer la liste complète des packages disponibles sur le site officiel de Go et en choisir certains pour ajouter des fonctionnalités à votre application.
Tests unitaires et intégration : Ajouter des tests unitaires et d'intégration pour vous assurer que votre application fonctionne correctement avant le déploiement.
Défi pratique : Créez une API de blog simple en utilisant Go. L'API devrait permettre aux utilisateurs de créer, lire, mettre à jour et supprimer des articles. Utilisez le framework Gorilla Mux pour gérer les routes.
Recommandation : Assurez-vous d'avoir une compréhension solide du code que vous écrivez en suivant ce tutoriel. N'hésitez pas à consulter la documentation officielle de Go et de Heroku si vous rencontrez des problèmes.