Tüm Ürünler
Search
Belge Merkezi

Serverless App Engine:Alibaba Cloud Toolkit kullanarak mikroservis uygulamasını SAE'ye otomatik dağıtma

Son Güncelleme:Oct 06, 2026

Bu eğitimde, Nacos tabanlı hizmet keşfi kullanan bir Spring Cloud mikroservis uygulamasının nasıl oluşturulacağı ve ayrı bir CI/CD işlem hattına gerek kalmadan doğrudan IntelliJ IDEA üzerinden Alibaba Cloud Toolkit eklentisi kullanılarak Serverless App Engine (SAE) üzerine nasıl dağıtılacağı anlatılmaktadır.

Çalışma mantığı

Uygulama, hizmet kayıt defteri olarak yerel bir Nacos Sunucusu üzerinden iletişim kuran iki hizmetten oluşur:

  • Provider (nacos-service-provider): GET /echo/{string} uç noktasını sunar ve başlangıçta kendini Nacos'a kaydeder.

  • Consumer (nacos-service-consumer): Provider hizmetini Nacos üzerinden keşfeder ve RestTemplate veya FeignClient kullanarak çağırır.

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}

Geliştirme aşamasında her iki hizmet de şirket içi bir Nacos Sunucusu üzerinde yerel olarak çalışır. Yerel doğrulamanın ardından Alibaba Cloud Toolkit, bu hizmetleri doğrudan IntelliJ IDEA üzerinden SAE uygulamaları olarak derler ve dağıtır.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

JetBrains eklenti sunucusu Çin dışında barındırılmaktadır. İndirme işlemi yavaş olursa çevrimdışı kurulum paketini JetBrains web sitesinden edinin ve manuel olarak yükleyin. Yardım için bkz. Bize Ulaşın .

1. Adım: SAE'de yer tutucu uygulamalar oluşturma

SAE, JAR paketlerinden ve konteyner görüntülerinden uygulama dağıtmayı destekler. Bu eğitimde JAR paketleri kullanılır.

SAE'de bir provider uygulaması ve bir consumer uygulaması oluşturun. Adım adım talimatlar için bkz. SAE konsolunda JAR paketi kullanarak mikroservis uygulama dağıtma.

Yerel kodunuzu bu uygulamalara 5. Adım bölümünde yayınlarsınız.

2. Adım: Provider'ı oluşturma

Nacos'a hizmet provider'ı olarak kaydolacak bir Spring Boot projesi oluşturun.

  1. nacos-service-provider adlı bir Maven projesi oluşturun.

  2. Aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin:

    Spring Cloud Edgware desteği sona ermiştir. Yeni projeler için Greenwich veya sonraki sürümleri kullanın.
    Spring Cloud sürümü Spring Cloud Alibaba sürümü
    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>

    Bu örnekte Spring Cloud Greenwich.SR1 ile Spring Cloud Alibaba 2.1.1.RELEASE kullanılmaktadır. Projeniz farklı bir Spring Cloud sürümünü hedefliyorsa ilgili Spring Cloud Alibaba sürümünü kullanın:

  3. src/main/java dizininde com.aliware.edas adlı bir paket oluşturun.

  4. com.aliware.edas paketi içinde ProviderApplication başlatma sınıfını oluşturun. @EnableDiscoveryClient ek açıklaması hizmet kaydı ve keşfini etkinleştirir:

    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. com.aliware.edas paketi içinde provider uç noktasını sunmak için EchoController sınıfını oluşturun:

    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. src/main/resources dizininde application.properties dosyasını oluşturun ve Nacos sunucu adresini ayarlayın:

    Hizmet kayıt defteriniz kendi tarafından yönetilen bir kayıt defteriyse 127.0.0.1 değerini kendi tarafından yönetilen hizmet kayıt defterinizin adresiyle değiştirin.
    spring.application.name=service-provider
    server.port=18081
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  7. Provider kaydını doğrulayın:

    1. Provider'ı başlatmak için ProviderApplication sınıfının main yöntemini çalıştırın.

    2. Nacos konsolunu http://127.0.0.1:8848/nacos adresinde açın. Varsayılan kullanıcı adı ve şifre nacos değeridir.

    3. Sol gezinme bölmesinde Service Management > Services seçeneğini belirleyin. Hizmet listesinde service-provider öğesinin göründüğünü doğrulayın.

3. Adım: Consumer'ı oluşturma

Provider'ı Nacos üzerinden keşfeden ve RestTemplate ile FeignClient kullanarak çağıran bir Spring Boot projesi oluşturun.

  1. nacos-service-consumer adlı bir Maven projesi oluşturun.

  2. Aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Consumer, provider ile aynı üst proje ve bağımlılık yönetimine ihtiyaç duyar; ayrıca spring-cloud-starter-openfeign bağımlılığı da gereklidir:

    <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. src/main/java dizininde com.aliware.edas adlı bir paket oluşturun.

  4. com.aliware.edas paketi içinde FeignClient arayüzü EchoService öğesini oluşturun:

    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. com.aliware.edas paketi içinde başlatma sınıfı ConsumerApplication öğesini oluşturun:

    • @EnableDiscoveryClient hizmet kaydı ve keşfini etkinleştirir.

    • @EnableFeignClients FeignClient özelliğini etkinleştirir.

    • @LoadBalanced RestTemplate'i hizmet keşfi ile entegre ederek service-provider hizmetini ada göre çözümlemesini sağlar.

    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. com.aliware.edas paketi içinde iki uç nokta sunan TestController sınıfını oluşturun; biri RestTemplate üzerinden, diğeri FeignClient üzerinden provider'ı çağırır:

    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. src/main/resources dizininde application.properties dosyasını oluşturun:

    Hizmet kayıt defteriniz kendi tarafından yönetilen bir kayıt defteriyse 127.0.0.1:8848 değerini kendi tarafından yönetilen hizmet kayıt defterinizin adresiyle değiştirin.
    spring.application.name=service-consumer
    server.port=18082
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  8. Consumer kaydını doğrulayın:

    1. Consumer'ı başlatmak için ConsumerApplication sınıfının main yöntemini çalıştırın.

    2. Nacos konsolunu http://127.0.0.1:8848/nacos adresinde açın.

    3. Sol gezinme bölmesinde Service Management > Services seçeneğini belirleyin. Hizmet listesinde service-consumer öğesinin göründüğünü doğrulayın.

4. Adım: Hizmetleri yerel olarak test etme

Her iki hizmet çalışırken consumer'ı çağırarak provider'a başarıyla ulaştığını doğrulayın.

Linux, Unix veya macOS üzerinde:

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

Windows üzerinde bir tarayıcı açın ve şu adreslere gidin:

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

Her istek, URL yolunda ilettiğiniz dizeyi döndürür; bu da consumer'ın Nacos üzerinden provider'ı keşfedip çağırdığını doğrular.

Successful call

5. Adım: Uygulamaları SAE'ye dağıtma

IntelliJ IDEA'da Alibaba Cloud Toolkit'i yapılandırarak her iki uygulamayı da 1. Adım bölümünde oluşturduğunuz SAE uygulamalarına derleyip dağıtın.

Alibaba Cloud hesabınızı yapılandırma

  1. Araç çubuğundaki Alibaba Cloud Toolkit simgesine Alibaba Cloud Toolkit图标 tıklayın ve açılan listeden Preference… seçeneğini belirleyin.

  2. Settings sayfasının sol gezinme bölmesinde Alibaba Cloud Toolkit > Accounts seçeneğini belirleyin.

  3. Access Key ID ve Access Key Secret değerlerinizi girin, ardından OK düğmesine tıklayın.

    Access Key ID ve Access Key Secret değerlerinizi almak için Accounts sayfasındaki Get existing AK/SK seçeneğine tıklayın. Bu işlem Alibaba Cloud oturum açma sayfasını açar. Oturum açtıktan sonra kimlik bilgilerinizi almak için Security Management sayfasına gidin.

Dağıtım görevlerini yapılandırma ve çalıştırma

  1. Alibaba Cloud Toolkit simgesine Alibaba Cloud Toolkit图标 tıklayın ve açılan listeden Deploy to SAE seçeneğini belirleyin.

  2. Deploy to SAE sayfasında provider uygulaması için ayarları yapılandırın: Kaydetmek için Apply düğmesine tıklayın.

    • Application bölümünde 1. Adımda oluşturduğunuz provider uygulamasıyla eşleşen bölgeyi, ad alanını ve uygulama adını seçin. Name alanı SAE uygulama adını değil, dağıtım yapılandırması adını ifade eder; genellikle bunu değiştirmeniz gerekmez.

    Configure a provider in Alibaba Cloud Toolkit

  3. İlgili bölgeyi, ad alanını ve uygulama adını seçerek consumer uygulaması için önceki adımı tekrarlayın. Kaydetmek için Apply düğmesine tıklayın.

    Kendi tarafından yönetilen bir hizmet kayıt defteri kullanıyorsanız kaydetmeden önce Advanced sekmesine aşağıdaki başlatma komutlarını ekleyin: -Dnacos.use.endpoint.parsing.rule=false ve -Dnacos.use.cloud.namespace.parsing=false .

    Configure the settings for the consumer application

  4. Provider'ı dağıtmak için Run düğmesine tıklayın, ardından consumer'ı dağıtmak için işlemi tekrarlayın.

    Runtime

Dağıtımı doğrulama

  1. Consumer uygulamasını genel erişime açmak için buna bir Server Load Balancer (SLB) örneği bağlayın. Bkz. Uygulamaya SLB örneği bağlama.

    Bind an SLB instance to the consumer

  2. SLB genel IP adresini (örneğin, 47.111.XX.XX) kullanarak consumer'a HTTP istekleri gönderin:

    # 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

    Her iki istek de URL yolundaki dizeyi döndürür; bu da SAE üzerindeki consumer'ın Nacos üzerinden provider'ı keşfedip çağırdığını doğrular.

    Request call

  3. İlgili Uygulama İzleme panolarındaki çağrı verilerini görüntüleyin.

Sonraki adımlar