Aracılığıyla paylaş


Apache Cassandra API için Azure Cosmos DB ile Spring Data kullanma

Bu makale, Linux üzerinde Azure App Service'te Java Web uygulamalarını oluşturma, yapılandırma, dağıtma, sorun giderme ve ölçeklendirme sürecinde size yol gösterir.

Aşağıdaki bileşenlerin kullanımını gösterir:

Önkoşullar

Bu makaledeki adımları izlemek için aşağıdaki önkoşullar gereklidir:

  • Bir Java Web uygulamasını buluta dağıtmak için bir Azure aboneliğine ihtiyacınız vardır. Henüz bir Azure aboneliğiniz yoksa, MSDN abone avantajlarınızı etkinleştirebilir veyaücretsiz bir Azure hesabına kaydolabilirsiniz.
  • Azure CLI 2.0
  • Java 8 JDK
  • Maven 3

Önemli

Bu makaledeki adımları tamamlamak için Spring Boot sürüm 2.5 veya üzeri gereklidir.

Örnek Java Web Uygulaması Deposunu Kopyalama

Bu alıştırmada, Spring Bootkullanılarak oluşturulmuş bir Java uygulaması olan Spring Todo uygulamasını Azure Cosmos DB için Spring Data ve Azure Cosmos DBkullanacaksınız.

  1. Spring Todo uygulamasını kopyalayın ve projeyi başlatmak için .prep klasörünün içeriğini kopyalayın:

    Bash için:

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

    Windows için:

    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. Dizini kopyalanan depoda aşağıdaki klasörle değiştirin:

    cd initial\spring-todo-app
    

Azure CLI'dan Azure Cosmos DB oluşturma

Aşağıdaki yordam CLI kullanarak Azure Cosmos DB veritabanı oluşturur.

  1. Azure CLI'nızda oturum açın ve abonelik kimliğinizi ayarlayın.

    az login
    
  2. Gerekirse abonelik kimliğini ayarlayın.

    az account set -s <your-subscription-id>
    
  3. Bir Azure kaynak grubu oluşturun ve daha sonra kullanmak üzere kaynak grubu adını bir kenara kaydedin.

    az group create \
        --name <your-azure-group-name> \
        --location <your-resource-group-region>
    
  4. Azure Cosmos DB'yi oluşturun ve türünü GlobalDocumentDB olarak belirtin. Azure Cosmos DB'nin adı yalnızca küçük harf kullanmalıdır. Yanıttaki documentEndpoint alanını not edin. Bu değere daha sonra ihtiyacınız olacak.

    az cosmosdb create \
        --resource-group <your-resource-group-name> \
        --name <your-azure-COSMOS-DB-name-in-lower-case-letters> \
        --kind GlobalDocumentDB
    
  5. Azure Cosmos DB anahtarlarınızı alın, daha sonra kullanmak üzere primaryMasterKey değerini kaydedin.

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

Uygulamayı Yerel Olarak Derleme ve Çalıştırma

Aşağıdaki yordam uygulamayı geliştirme bilgisayarında çalıştırır.

  1. Tercih ettiğiniz konsolda, aşağıdaki kod bölümlerinde gösterilen ortam değişkenlerini, bu makalede daha önce topladığınız Azure ve Azure Cosmos DB bağlantı bilgileriyle yapılandırın. WEBAPP_NAME ve REGION değişkenleri için benzersiz bir ad ve değer sağlamanız gerekir.

    Linux için (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>
    

    Windows için (Komut İstemi):

    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>
    

    Not

    Bu değişkenleri bir betikle sağlamak isterseniz, .prep dizininde bash için kopyalayıp başlangıç noktası olarak kullanabileceğiniz bir şablon vardır.

  2. Aşağıdaki komutu kullanarak dizini değiştirin:

    cd initial/spring-todo-app
    
  3. Spring Todo uygulamasını aşağıdaki komutla yerel olarak çalıştırın:

    mvn package spring-boot:run
    
  4. Uygulama başlatıldıktan sonra, Spring Todo uygulamasına buradan erişerek dağıtımı doğrulayabilirsiniz: http://localhost:8080/.

    Yerel olarak çalışan Spring uygulaması

App Service Linux'a dağıtma

Aşağıdaki yordam, uygulamayı Azure üzerinde Linux'a dağıtır.

  1. Daha önce deponun initial/spring-todo-app dizinine kopyaladığınız pom.xml dosyasını açın. Azure App Service için Maven Eklentisinin aşağıdaki pom.xml dosyasında görüldüğü gibi eklendiğinden emin olun. Sürüm 1.14.0olarak ayarlı değilse değeri güncelleştirin.

    <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. App Service Linux'ta Java SE'ye dağıtma

    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. App Service Linux'ta Java SE üzerinde çalışan web uygulamanıza göz atın:

    https://<WEBAPP_NAME>.azurewebsites.net
    

Linux üzerinde App Service'te çalışan Spring uygulaması

Günlükleri Görüntüleyerek Azure'da Spring Todo Uygulaması sorunlarını giderme

Aşağıdaki yöntem Azure'da kayıt dosyalarını açar.

  1. Linux'ta Azure App Service'te dağıtılan Java Web uygulaması için günlükleri yapılandırın:

    az webapp log config \
        --name ${WEBAPP_NAME} \
        --resource-group ${RESOURCEGROUP_NAME} \
        --web-server-logging filesystem
    
  2. Yerel bir makineden Java Web uygulamasının uzak günlük akışına erişim sağlayın:

    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.
    

Spring Todo Uygulamasının ölçeğini genişletme

Uygulamayı ölçeklendirmek için aşağıdaki yordamı kullanın.

  1. Azure CLI kullanarak Java Web uygulamasının ölçeğini genişletme:

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

Sonraki adımlar

  • App Service Linux geliştirme kılavuzunda Java
  • Java Geliştiricileri için Azure Spring ve Azure hakkında daha fazla bilgi edinmek için Spring on Azure belge merkezine geçin.

Ayrıca bkz.

Azure'da Spring Boot uygulamalarını kullanma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Azure'ı Java ile nasıl kullanacağınız hakkında daha fazla bilgi için "Java Geliştiricileri için Azure" ve "Azure DevOps ve Java ile Çalışma" sayfalarına bakın.

Spring Framework, Java geliştiricilerinin kurumsal düzeyde uygulamalar oluşturmalarına yardımcı olan açık kaynaklı bir çözümdür. Bu platform üzerine inşa edilen daha popüler projelerden biri, tek başına Java uygulamaları geliştirmek için basitleştirilmiş bir yaklaşım sunan Spring Boot'dir. Geliştiricilerin Spring Boot'ı kullanmaya başlamasına yardımcı olmak için https://github.com/spring-guides/adresinde çeşitli örnek Spring Boot paketleri mevcuttur. temel Spring Boot projeleri listesinden seçim yapmaya ek olarak, Spring Initializr geliştiricilerin özel Spring Boot uygulamaları oluşturmaya başlamasına yardımcı olur.