Tous les produits
Search
Centre de documentation

Serverless App Engine:Déployer automatiquement une application de microservices sur SAE avec Alibaba Cloud Toolkit

Dernière mise à jour :Aug 11, 2026

Ce tutoriel vous guide pas à pas dans la création d'une application de microservices Spring Cloud utilisant la découverte de services basée sur Nacos, puis son déploiement direct sur Serverless App Engine (SAE) depuis IntelliJ IDEA via le plug-in Alibaba Cloud Toolkit, sans nécessiter de pipeline CI/CD distinct.

Fonctionnement

L'application se compose de deux services qui communiquent via un serveur Nacos local agissant comme registre de services :

  • Fournisseur (nacos-service-provider) : expose le point de terminaison GET /echo/{string} et s'enregistre auprès de Nacos au démarrage.

  • Consommateur (nacos-service-consumer) : découvre le fournisseur via Nacos et l'appelle en utilisant soit RestTemplate, soit FeignClient.

IntelliJ IDEA
    └── Alibaba Cloud Toolkit plug-in
            │
            ├── Deploy ──► SAE Application: nacos-service-provider (port 18081)
            │                   └── registers as "service-provider" in Nacos
            │
            └── Deploy ──► SAE Application: nacos-service-consumer (port 18082)
                                └── discovers "service-provider" via Nacos
                                └── exposes /echo-rest/{str} and /echo-feign/{str}

Pendant le développement, les deux services s'exécutent localement contre un serveur Nacos sur site. Après validation locale, Alibaba Cloud Toolkit compile et déploie ces services en tant qu'applications SAE directement depuis IntelliJ IDEA.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Le serveur de plug-ins JetBrains est hébergé hors de Chine. Si le téléchargement est lent, obtenez le package d'installation hors ligne depuis le site web de JetBrains et installez-le manuellement. Pour obtenir de l'aide, consultez Nous contacter .

Étape 1 : Créer des applications placeholders dans SAE

SAE prend en charge le déploiement d'applications à partir de packages JAR et d'images de conteneurs. Ce tutoriel utilise des packages JAR.

Créez une application fournisseur et une application consommateur dans SAE. Pour des instructions détaillées, consultez Déployer une application de microservices à l'aide d'un package JAR dans la console SAE.

Vous publierez votre code local vers ces applications à l'étape Étape 5.

Étape 2 : Créer le fournisseur

Créez un projet Spring Boot qui s'enregistre auprès de Nacos en tant que fournisseur de services.

  1. Créez un projet Maven nommé nacos-service-provider.

  2. Ajoutez les dépendances suivantes au fichier pom.xml :

    Spring Cloud Edgware n'est plus pris en charge. Utilisez Greenwich ou une version ultérieure pour les nouveaux projets.
    Version de Spring Cloud Version de Spring Cloud Alibaba
    Greenwich 2.1.1.RELEASE
    Finchley 2.0.1.RELEASE
    Edgware 1.5.1.RELEASE
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    Cet exemple utilise Spring Cloud Greenwich.SR1 avec Spring Cloud Alibaba 2.1.1.RELEASE. Si votre projet cible une version différente de Spring Cloud, utilisez la version correspondante de Spring Cloud Alibaba :

  3. Dans le répertoire src/main/java, créez un package nommé com.aliware.edas.

  4. Dans le package com.aliware.edas, créez la classe de démarrage ProviderApplication. L'annotation @EnableDiscoveryClient active l'enregistrement et la découverte de services :

    package com.aliware.edas;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class ProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(ProviderApplication.class, args);
        }
    }
  5. Dans le package com.aliware.edas, créez le contrôleur EchoController pour exposer le point de terminaison du fournisseur :

    package com.aliware.edas;
    
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return string;
        }
    }
  6. Dans le répertoire src/main/resources, créez le fichier application.properties et définissez l'adresse du serveur Nacos :

    Si votre registre de services est géré par vos soins, remplacez 127.0.0.1 par l'adresse de votre registre de services géré.
    spring.application.name=service-provider
    server.port=18081
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  7. Vérifiez l'enregistrement du fournisseur :

    1. Exécutez la méthode main de la classe ProviderApplication pour démarrer le fournisseur.

    2. Ouvrez la console Nacos à l'adresse http://127.0.0.1:8848/nacos. Le nom d'utilisateur et le mot de passe par défaut sont tous deux nacos.

    3. Dans le volet de navigation de gauche, sélectionnez Service Management > Services. Vérifiez que service-provider apparaît dans la liste des services.

Étape 3 : Créer le consommateur

Créez un projet Spring Boot qui découvre le fournisseur via Nacos et l'appelle en utilisant RestTemplate et FeignClient.

  1. Créez un projet Maven nommé nacos-service-consumer.

  2. Ajoutez les dépendances suivantes au fichier pom.xml. Le consommateur requiert les mêmes configurations parent et de gestion des dépendances que le fournisseur, ainsi que la dépendance spring-cloud-starter-openfeign :

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  3. Dans le répertoire src/main/java, créez un package nommé com.aliware.edas.

  4. Dans le package com.aliware.edas, créez l'interface FeignClient EchoService :

    package com.aliware.edas;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    // Binds this FeignClient to the "service-provider" service in Nacos
    @FeignClient(name = "service-provider")
    public interface EchoService {
        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        String echo(@PathVariable("str") String str);
    }
  5. Dans le package com.aliware.edas, créez la classe de démarrage ConsumerApplication :

    • L'annotation @EnableDiscoveryClient active l'enregistrement et la découverte de services.

    • L'annotation @EnableFeignClients active FeignClient.

    • L'annotation @LoadBalanced intègre RestTemplate à la découverte de services afin qu'il puisse résoudre service-provider par son nom.

    package com.aliware.edas;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class ConsumerApplication {
    
        @LoadBalanced
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApplication.class, args);
        }
    }
  6. Dans le package com.aliware.edas, créez le contrôleur TestController pour exposer deux points de terminaison — l'un appelant le fournisseur via RestTemplate et l'autre via FeignClient :

    package com.aliware.edas;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController
    public class TestController {
    
        @Autowired
        private RestTemplate restTemplate;
        @Autowired
        private EchoService echoService;
    
        // Calls service-provider via RestTemplate
        @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
        public String rest(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    
        // Calls service-provider via FeignClient
        @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
        public String feign(@PathVariable String str) {
            return echoService.echo(str);
        }
    }
  7. Dans le répertoire src/main/resources, créez le fichier application.properties :

    Si votre registre de services est géré par vos soins, remplacez 127.0.0.1:8848 par l'adresse de votre registre de services géré.
    spring.application.name=service-consumer
    server.port=18082
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  8. Vérifiez l'enregistrement du consommateur :

    1. Exécutez la méthode main de la classe ConsumerApplication pour démarrer le consommateur.

    2. Ouvrez la console Nacos à l'adresse http://127.0.0.1:8848/nacos.

    3. Dans le volet de navigation de gauche, sélectionnez Service Management > Services. Vérifiez que service-consumer apparaît dans la liste des services.

Étape 4 : Tester les services localement

Une fois les deux services en cours d'exécution, appelez le consommateur pour confirmer qu'il atteint correctement le fournisseur.

Sous Linux, Unix ou macOS :

curl http://127.0.0.1:18082/echo-rest/rest-rest
curl http://127.0.0.1:18082/echo-feign/feign-rest

Sous Windows, ouvrez un navigateur et accédez aux URL suivantes :

http://127.0.0.1:18082/echo-rest/rest-rest
http://127.0.0.1:18082/echo-feign/feign-rest

Chaque requête renvoie la chaîne de caractères transmise dans le chemin de l'URL, confirmant que le consommateur découvre et appelle le fournisseur via Nacos.

Successful call

Étape 5 : Déployer les applications sur SAE

Configurez Alibaba Cloud Toolkit dans IntelliJ IDEA pour compiler et déployer les deux applications vers les applications SAE que vous avez créées à l'étape Étape 1.

Configurer votre compte Alibaba Cloud

  1. Cliquez sur l'icône Alibaba Cloud Toolkit Alibaba Cloud Toolkit图标 dans la barre d'outils et sélectionnez Preference… dans la liste déroulante.

  2. Dans le volet de navigation de gauche de la page Settings, accédez à Alibaba Cloud Toolkit > Accounts.

  3. Saisissez votre Access Key ID et votre Access Key Secret, puis cliquez sur OK.

    Pour obtenir votre Access Key ID et votre Access Key Secret, cliquez sur Get existing AK/SK sur la page Accounts . Cela ouvre la page de connexion Alibaba Cloud. Après vous être connecté, accédez à la page Security Management pour récupérer vos identifiants.

Configurer et exécuter les tâches de déploiement

  1. Cliquez sur l'icône Alibaba Cloud Toolkit Alibaba Cloud Toolkit图标 et sélectionnez Deploy to SAE dans la liste déroulante.

  2. Sur la page Deploy to SAE, configurez les paramètres pour l'application fournisseur : Cliquez sur Apply pour enregistrer.

    • Dans la section Application, sélectionnez la région, le namespace et le nom d'application correspondant à l'application fournisseur créée à l'étape 1. Le champ Name fait référence au nom de la configuration de déploiement, et non au nom de l'application SAE ; il n'est généralement pas nécessaire de le modifier.

    Configure a provider in Alibaba Cloud Toolkit

  3. Répétez l'étape précédente pour l'application consommateur, en sélectionnant la région, le namespace et le nom d'application correspondants. Cliquez sur Apply pour enregistrer.

    Si vous utilisez un registre de services géré par vos soins, ajoutez les commandes de démarrage suivantes dans l'onglet Advanced avant d'enregistrer : -Dnacos.use.endpoint.parsing.rule=false et -Dnacos.use.cloud.namespace.parsing=false .

    Configure the settings for the consumer application

  4. Cliquez sur Run pour déployer le fournisseur, puis répétez l'opération pour déployer le consommateur.

    Runtime

Vérifier le déploiement

  1. Associez une instance Server Load Balancer (SLB) à l'application consommateur pour l'exposer publiquement. Consultez Associer une instance SLB à une application.

    Bind an SLB instance to the consumer

  2. Envoyez des requêtes HTTP au consommateur en utilisant l'adresse IP publique de l'instance SLB (par exemple, 47.111.XX.XX) :

    # Call via FeignClient
    curl http://47.111.XX.XX/echo-feign/feign-rest
    
    # Call via RestTemplate
    curl http://47.111.XX.XX/echo-rest/rest-rest

    Les deux requêtes renvoient la chaîne de caractères issue du chemin de l'URL, confirmant que le consommateur sur SAE découvre et appelle le fournisseur via Nacos.

    Request call

  3. Consultez les données d'appel sur les tableaux de bord de surveillance d'application associés.

Étapes suivantes