Cara menggunakan Spring dan Cosmos DB dengan App Service di Linux
Tutorial ini memandu Anda melalui proses membangun, mengonfigurasi, menyebarkan, memecahkan masalah, dan menskalakan aplikasi Web Java di Azure App Service.
Tutorial ini akan menunjukkan penggunaan komponen-komponen berikut:
Prasyarat
Prasyarat berikut diperlukan untuk menyelesaikan langkah-langkah dalam artikel ini:
- Untuk menyebarkan aplikasi Java Web ke cloud, Anda memerlukan langganan Azure. Jika belum berlangganan 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 2.6 diperlukan untuk menyelesaikan langkah-langkah dalam artikel ini.
Mengklon Repositori Aplikasi Web Java Sampel
Untuk latihan ini Anda akan menggunakan aplikasi Spring Todo, yang merupakan aplikasi Java yang dibangun menggunakan Spring Boot, Spring Data untuk Cosmos DB, dan Azure Cosmos DB.
Kloning aplikasi Spring Todo dan salin isi 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 /yUbah direktori ke folder berikut di repositori yang dikloning:
cd initial\spring-todo-app
Membuat Azure Cosmos DB dari Azure CLI
Prosedur berikut membuat database Azure Cosmos menggunakan CLI.
Masuk ke Azure CLI Anda, dan atur ID langganan Anda.
az loginAtur ID langganan jika diperlukan.
az account set -s <your-subscription-id>Buat grup sumber daya Azure, dan tuliskan nama grup sumber daya untuk digunakan nanti.
az group create -n <your-azure-group-name> \ -l <your-resource-group-region>Buat Cosmos DB dan tentukan jenisnya sebagai GlobalDocumentDB. Nama Cosmos DB hanya boleh menggunakan huruf kecil. Pastikan untuk mencatat bidang
documentEndpointpada respons. Anda akan membutuhkan ini nanti.az cosmosdb create --kind GlobalDocumentDB \ -g <your-azure-group-name> \ -n <your-azure-COSMOS-DB-name-in-lower-case-letters>Dapatkan kunci Azure Cosmos DB Anda, catat nilai
primaryMasterKeyuntuk digunakan nanti.az cosmosdb keys list -g <your-azure-group-name> -n <your-azure-COSMOSDB-name>
Membangun dan Menjalankan Aplikasi secara Lokal
Prosedur berikut menjalankan aplikasi pada komputer pengembangan.
- Di dalam konsol pilihan Anda, konfigurasikan variabel lingkungan yang ditampilkan di bagian kode berikut dengan informasi koneksi Azure dan Cosmos DB yang Anda kumpulkan sebelumnya di artikel ini. Anda harus memberikan nama unik untuk WEBAPP_NAME dan nilai untuk variabel REGION.
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>
Catatan
Jika Anda ingin menyediakan variabel-variabel ini dengan skrip, ada template untuk Bash di direktori .prep yang dapat Anda salin dan gunakan sebagai titik awal.
Ubah direktori ke yang berikut:
cd initial/spring-todo-appJalankan aplikasi Spring Todo secara lokal dengan perintah berikut:
mvn package spring-boot:runSetelah aplikasi dimulai, Anda dapat memvalidasi penyebaran dengan mengakses aplikasi Spring Todo di sini:
http://localhost:8080/.

Menyebarkan ke App Service Linux
Prosedur berikut menyebarkan aplikasi ke Linux di Azure.
- Buka file pom.xml yang sebelumnya Anda salin ke direktori intial/spring-tofo-app dari repositori. Pastikan Plugin Maven untuk Azure App Service disertakan seperti yang terlihat pada file pom.xml di bawah ini. 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>
Sebarkan 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] ------------------------------------------------------------------------
Telusuri aplikasi web Anda yang berjalan di Java SE di App Service Linux:
https://<WEBAPP_NAME>.azurewebsites.net

Memecahkan masalah Aplikasi Spring Todo di Azure dengan Melihat Log
Prosedur berikut membuka file log di Azure.
Konfigurasikan log untuk aplikasi Java Web yang disebarkan di Azure App Service di Linux:
az webapp log config --name ${WEBAPP_NAME} \ --resource-group ${RESOURCEGROUP_NAME} \ --web-server-logging filesystemBuka aliran log jarak jauh aplikasi Java Web dari mesin 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.
- Setelah selesai, Anda dapat memeriksa hasil Anda terhadap kode di e2e-java-experience-in-app-service-linux-part-2/complete.
Memperkecil Aplikasi Spring Todo
Gunakan prosedur berikut untuk mengubah ukuran skala aplikasi.
Perkecil aplikasi Java Web menggunakan Azure CLI:
az appservice plan update --number-of-workers 2 \ --name ${WEBAPP_PLAN_NAME} \ --resource-group ${RESOURCEGROUP_NAME}
Langkah berikutnya
- Java dalam panduan dev App Service Linux
- Azure untuk Pengembang Java Untuk mempelajari selengkapnya tentang Spring dan Azure, lanjutkan ke pusat dokumentasi Spring di Azure.
Sumber Daya Tambahan
Untuk informasi selengkapnya tentang menggunakan aplikasi Spring Boot di Azure, lihat artikel berikut:
Menyebarkan Aplikasi Spring Boot ke Linux di Azure App Service
Menjalankan Aplikasi Spring Boot pada Kluster Kubernetes di Azure Container Service
Untuk mengetahui informasi selengkapnya tentang cara 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 sederhana untuk membuat aplikasi Java yang mandiri. Untuk membantu pengembang memulai dengan 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 memulai dengan membuat aplikasi Spring Boot kustom.