Bagikan melalui


Menggunakan Spring Data dengan Azure Cosmos DB untuk Apache Cassandra API

Artikel ini akan memandikan Anda melalui proses membangun, mengonfigurasi, menyebarkan, memecahkan masalah, dan menskalakan aplikasi Web Java di Azure App Service di Linux.

Ini akan menunjukkan penggunaan komponen berikut:

Prasyarat

Prasyarat berikut diperlukan untuk mengikuti langkah-langkah dalam artikel ini:

  • Untuk menyebarkan aplikasi Web Java ke cloud, Anda memerlukan langganan Azure. Jika Anda belum memiliki langganan Azure, Anda dapat mengaktifkan manfaat pelanggan MSDN atau mendaftar akun Azure gratis .
  • Azure CLI 2.0
  • Java 8 JDK
  • Maven 3

Penting

Spring Boot versi 2.5 atau yang lebih tinggi diperlukan untuk menyelesaikan langkah-langkah dalam artikel ini.

Mengkloning Repositori Aplikasi Web Java Sampel

Untuk latihan ini, Anda akan menggunakan aplikasi Spring Todo, yang merupakan aplikasi Java yang dibuat menggunakan Spring Boot, Spring Data for Azure Cosmos DB dan Azure Cosmos DB.

  1. Mengkloning aplikasi Spring Todo dan salin konten folder .prep untuk menginisialisasi proyek.

    Untuk bash:

    git clone --recurse-submodules https://github.com/Azure-Samples/e2e-java-experience-in-app-service-linux-part-2.git
    yes | cp -rf .prep/* .
    

    Untuk Windows:

    git clone --recurse-submodules https://github.com/Azure-Samples/e2e-java-experience-in-app-service-linux-part-2.git
    cd e2e-java-experience-in-app-service-linux-part-2
    xcopy .prep /f /s /e /y
    
  2. Ubah direktori ke folder berikut di repositori kloning:

    cd initial\spring-todo-app
    

Membuat Azure Cosmos DB dari Azure CLI

Prosedur berikut membuat database Azure Cosmos DB menggunakan CLI.

  1. Masuk ke Azure CLI Anda, dan atur ID langganan Anda.

    az login
    
  2. Atur ID langganan jika diperlukan.

    az account set -s <your-subscription-id>
    
  3. Buat grup sumber daya Azure, dan catat nama grup sumber daya untuk digunakan nanti.

    az group create \
        --name <your-azure-group-name> \
        --location <your-resource-group-region>
    
  4. Buat Azure Cosmos DB dan tentukan jenisnya sebagai GlobalDocumentDB. Nama Azure Cosmos DB hanya boleh menggunakan huruf kecil. Pastikan untuk mencatat bidang documentEndpoint di dalam respons. Anda memerlukan nilai ini nanti.

    az cosmosdb create \
        --resource-group <your-resource-group-name> \
        --name <your-azure-COSMOS-DB-name-in-lower-case-letters> \
        --kind GlobalDocumentDB
    
  5. Dapatkan kunci Azure Cosmos DB Anda, catat nilai primaryMasterKey untuk digunakan nanti.

    az cosmosdb keys list \
        --resource-group <your-azure-group-name> \
        --name <your-azure-COSMOSDB-name>
    

Membuat dan Menjalankan Aplikasi Secara Lokal

Prosedur berikut menjalankan aplikasi pada komputer pengembangan.

  1. Dalam konsol pilihan Anda, konfigurasikan variabel lingkungan yang ditampilkan di bagian kode berikut dengan informasi koneksi Azure dan Azure Cosmos DB yang Anda kumpulkan sebelumnya dalam artikel ini. Anda perlu memberikan nama unik untuk WEBAPP_NAME dan nilai untuk variabel WILAYAH.

    Untuk Linux (Bash):

    export COSMOS_URI=<put-your-COSMOS-DB-documentEndpoint-URI-here>
    export COSMOS_KEY=<put-your-COSMOS-DB-primaryMasterKey-here>
    export COSMOS_DATABASE=<put-your-COSMOS-DATABASE-name-here>
    export RESOURCEGROUP_NAME=<put-your-resource-group-name-here>
    export WEBAPP_NAME=<put-your-Webapp-name-here>
    export REGION=<put-your-REGION-here>
    export SUBSCRIPTION_ID=<put-your-SUBSCRIPTION_ID-here>
    

    Untuk Windows (Prompt Perintah):

    set COSMOS_URI=<put-your-COSMOS-DB-documentEndpoint-URI-here>
    set COSMOS_KEY=<put-your-COSMOS-DB-primaryMasterKey-here>
    set COSMOS_DATABASE=<put-your-COSMOS-DATABASE-name-here>
    set RESOURCEGROUP_NAME=<put-your-resource-group-name-here>
    set WEBAPP_NAME=<put-your-Webapp-name-here>
    set REGION=<put-your-REGION-here>
    set SUBSCRIPTION_ID=<put-your-SUBSCRIPTION_ID-here>
    

    Nota

    Jika Anda ingin menyediakan variabel ini dengan skrip, ada templat untuk Bash di direktori .prep yang dapat Anda salin dan gunakan sebagai titik awal.

  2. Ubah direktori dengan menggunakan perintah berikut:

    cd initial/spring-todo-app
    
  3. Jalankan aplikasi Spring Todo secara lokal dengan perintah berikut:

    mvn package spring-boot:run
    
  4. Setelah aplikasi dimulai, Anda dapat memvalidasi penyebaran dengan mengakses aplikasi Spring Todo di sini: http://localhost:8080/.

    Aplikasi Spring yang berjalan secara lokal

Menyebarkan ke App Service Linux

Prosedur berikut menyebarkan aplikasi ke Linux di Azure.

  1. Buka file pom.xml yang sebelumnya Anda salin ke direktori initial/spring-todo-app di repositori. Pastikan plugin Maven untuk Azure App Service disertakan seperti yang terlihat dalam file pom.xml berikut. Jika versi tidak diatur ke 1.14.0, maka perbarui nilainya.

    <plugins> 
    
        <!--*************************************************-->
        <!-- Deploy to Java SE in App Service Linux           -->
        <!--*************************************************-->
    
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>azure-webapp-maven-plugin</artifactId>
            <version>1.14.0</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <subscriptionId>${SUBSCRIPTION_ID}</subscriptionId>
                <!-- Web App information -->
                <resourceGroup>${RESOURCEGROUP_NAME}</resourceGroup>
                <appName>${WEBAPP_NAME}</appName>
                <region>${REGION}</region>
                <pricingTier>P1v2</pricingTier>
                <!-- Java Runtime Stack for Web App on Linux-->
                <runtime>
                    <os>Linux</os>
                    <javaVersion>Java 8</javaVersion>
                    <webContainer>Java SE</webContainer>
                </runtime>
                <deployment>
                    <resources>
                        <resource>
                            <directory>${project.basedir}/target</directory>
                            <includes>
                                <include>*.jar</include>
                            </includes>
                        </resource>
                    </resources>
                </deployment>
                <appSettings>
                    <property>
                        <name>COSMOS_URI</name>
                        <value>${COSMOS_URI}</value>
                    </property>
                    <property>
                        <name>COSMOS_KEY</name>
                        <value>${COSMOS_KEY}</value>
                    </property>
                    <property>
                        <name>COSMOS_DATABASE</name>
                        <value>${COSMOS_DATABASE}</value>
                    </property>
                    <property>
                        <name>JAVA_OPTS</name>
                        <value>-Dserver.port=80</value>
                    </property>
                </appSettings>
    
            </configuration>
        </plugin>            
        ...
    </plugins>
    
  2. Menyebarkan ke Java SE di App Service Linux

    mvn azure-webapp:deploy
    
    // Deploy
    bash-3.2$ mvn azure-webapp:deploy
    [INFO] Scanning for projects...
    [INFO]
    [INFO] -------< com.azure.spring.samples:spring-todo-app >--------
    [INFO] Building spring-todo-app 2.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:1.14.0:deploy (default-cli) @ spring-todo-app ---
    Auth type: AZURE_CLI
    Default subscription: Consoto Subscription(subscription-id-xxx)
    Username: user@contoso.com
    [INFO] Subscription: Consoto Subscription(subscription-id-xxx)
    [INFO] Creating app service plan...
    [INFO] Successfully created app service plan asp-spring-todo-app.
    [INFO] Creating web app spring-todo-app...
    [INFO] Successfully created Web App spring-todo-app.
    [INFO] Trying to deploy artifact to spring-todo-app...
    [INFO] Successfully deployed the artifact to https://spring-todo-app.azurewebsites.net
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  02:05 min
    [INFO] Finished at: 2021-05-28T09:43:19+08:00
    [INFO] ------------------------------------------------------------------------
    
  3. Telusuri ke aplikasi web Anda yang berjalan di Java SE di App Service Linux:

    https://<WEBAPP_NAME>.azurewebsites.net
    

aplikasi Spring yang berjalan di App Service di Linux

Memecahkan masalah Aplikasi Spring Todo di Azure dengan Melihat Log

Prosedur berikut membuka file log di Azure.

  1. Konfigurasikan log untuk aplikasi Web Java yang disebarkan di Azure App Service di Linux:

    az webapp log config \
        --name ${WEBAPP_NAME} \
        --resource-group ${RESOURCEGROUP_NAME} \
        --web-server-logging filesystem
    
  2. Buka aliran log jarak jauh aplikasi Web Java dari komputer lokal:

    az webapp log tail \
        --name ${WEBAPP_NAME} \
        --resource-group ${RESOURCEGROUP_NAME}
    
    bash-3.2$ az webapp log tail --name ${WEBAPP_NAME}  --resource-group ${RESOURCEGROUP_NAME}
    2021-05-28T01:46:08.000655632Z   _____                               
    2021-05-28T01:46:08.000701432Z   /  _  \ __________ _________   ____  
    2021-05-28T01:46:08.000708133Z  /  /_\  \___   /  |  \_  __ \_/ __ \ 
    2021-05-28T01:46:08.000711733Z /    |    \/    /|  |  /|  | \/\  ___/ 
    2021-05-28T01:46:08.000714933Z \____|__  /_____ \____/ |__|    \___  >
    2021-05-28T01:46:08.000718233Z         \/      \/                  \/ 
    2021-05-28T01:46:08.000721333Z A P P   S E R V I C E   O N   L I N U X
    2021-05-28T01:46:08.000724233Z Documentation: http://aka.ms/webapp-linux
    ...
    ...
    2021-05-28T01:46:18.925044188Z   .   ____          _            __ _ _
    2021-05-28T01:46:18.925481392Z  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    2021-05-28T01:46:18.926004297Z ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    2021-05-28T01:46:18.926587603Z  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
    2021-05-28T01:46:18.926599403Z   '  |____| .__|_| |_|_| |_\__, | / / / /
    2021-05-28T01:46:18.926841806Z  =========|_|==============|___/=/_/_/_/
    2021-05-28T01:46:18.931157849Z  :: Spring Boot ::                (v2.4.5)
    ...
    ...
    2021-05-28T01:46:29.842553633Z 2021-05-28 01:46:29.842  INFO 124 --- [           main] c.azure.spring.   samples.TodoApplication   : Started TodoApplication in 12.635 seconds (JVM running for 17.664)
    2021-05-28T01:46:30.477951594Z 2021-05-28 01:46:30.477  INFO 124 --- [p-nio-80-exec-1] o.a.c.c.C.   [Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
    2021-05-28T01:46:30.483316162Z 2021-05-28 01:46:30.483  INFO 124 --- [p-nio-80-exec-1] o.s.web.   servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
    2021-05-28T01:46:30.485411088Z 2021-05-28 01:46:30.484  INFO 124 --- [p-nio-80-exec-1] o.s.web.   servlet.DispatcherServlet        : Completed initialization in 0 ms
    2021-05-28T01:47:19.683003828Z 2021-05-28 01:47:19.682  INFO 124 --- [p-nio-80-exec-9] c.a.s.s.   controller.TodoListController    : GET request access '/api/todolist' path.
    2021-05-28T01:47:26.069984388Z 2021-05-28 01:47:26.069  INFO 124 --- [-nio-80-exec-10] c.a.s.s.   controller.TodoListController    : POST request access '/api/todolist' path with item: Milk
    2021-05-28T01:47:26.649080678Z 2021-05-28 01:47:26.648  INFO 124 --- [p-nio-80-exec-1] c.a.s.s.   controller.TodoListController    : GET request access '/api/todolist' path.
    

Menskalakan Aplikasi Spring Todo

Gunakan prosedur berikut untuk menskalakan aplikasi.

  1. Peluasan skala aplikasi Web Java menggunakan Azure CLI:

    az appservice plan update \
        --number-of-workers 2 \
        --name ${WEBAPP_PLAN_NAME} \
        --resource-group ${RESOURCEGROUP_NAME}
    

Langkah berikutnya

Lihat juga

Untuk informasi selengkapnya tentang menggunakan aplikasi Spring Boot di Azure, lihat artikel berikut ini:

Untuk informasi selengkapnya tentang menggunakan Azure dengan Java, lihat Azure for Java Developers dan Bekerja dengan Azure DevOps dan Java.

Spring Framework adalah solusi sumber terbuka yang membantu pengembang Java membuat aplikasi tingkat perusahaan. Salah satu proyek yang lebih populer yang dibangun di atas platform tersebut adalah Spring Boot, yang menyediakan pendekatan yang disederhanakan untuk membuat aplikasi Java yang berdiri sendiri. Untuk membantu pengembang mulai menggunakan Spring Boot, beberapa contoh paket Spring Boot tersedia di https://github.com/spring-guides/. Selain memilih dari daftar proyek Spring Boot dasar, Spring Initializr membantu pengembang mulai membuat aplikasi Spring Boot kustom.