65.9K
CodeProject 正在变化。 阅读更多。
Home

Azure 上的 Java 应用和数据现代化第三部分:迁移到 Azure App Service

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2022 年 3 月 1 日

CPOL

7分钟阅读

viewsIcon

3991

如何将我们的 Java 应用“提升迁移”到 Azure,使用 Azure App Service。

现在您已经 迁移了数据,是时候使用 Azure App Service 将您的 Java 应用程序迁移到 Azure 了。Microsoft 的 Azure App Service 是一种平台即服务 (PaaS),可在高度可用、安全且经过监控的基础设施上托管应用程序,并与整个 Azure 平台完全集成。该服务可以托管用多种框架和语言开发的 Web 应用程序,包括 Windows 和 Linux 主机上的 ASP.NET、Java 和 Ruby。

尽管 Azure 网站详细介绍了全部优点,但以下是摘要:

  • 与 Azure Active Directory 等其他 Azure 服务集成,以控制访问和验证用户身份。
  • 该服务具有高可用性,因此您知道您的应用程序已启动并正在运行。
  • 通过与 Git、GitHub 和其他流行服务的 CI/CD 集成,改进团队开发。
  • 使用部署槽实现零停机和低停机部署。
  • 使用监控功能来确定和响应需求。
  • 在同一环境中运行应用程序和容器,以便您可以随着时间的推移将单体应用程序重构为容器化服务。
  • 运行基于 Windows 和 Linux 构建的应用程序,因此您可以选择使用的技术。

您无需对应用程序进行任何更改即可将其重新托管到 Azure App Services。Spring Boot 提供了一个完整的运行时环境,仅需要 Java,因为 Azure App Services 提供了与 Spring Boot 需求一致的基础设施。

另外,由于您在 上一篇文章中将数据迁移到 Azure 服务时,允许 Azure 服务连接到您的数据库,因此您的应用程序无需任何更改即可连接到数据库。您可能考虑将来 进行升级,添加身份验证,在网络安全层之上添加应用程序安全层。

一旦在开发环境中准备好一些工具,将应用程序部署到 Azure App Services 就很简单了。本文使用 IntelliJ 的 Azure 插件来演示此过程。如果您想使用其他工具,例如 Spring Boot 的教程以及 Microsoft 关于 GitHubAzure DevOps 的教程,有很多示例可供参考。

部署过程分为两个部分。第一部分是创建 Azure App Service 并部署应用程序。但是,由于您使用的是 IntelliJ IDE 进行开发,因此在部署之前必须安装并配置 Azure Toolkit for IntelliJ。此安装是一次性前置步骤。如果您更喜欢 Eclipse 环境,Microsoft 提供了 安装 Eclipse 插件 的说明。

安装 Azure Toolkit for IntelliJ

IntelliJ 使用 Azure Toolkit for IntelliJ 与 Azure 集成。您可以从网站安装它。

确保在单击安装按钮时 IntelliJ 正在运行。安装插件后,您会在浏览器的右下角看到成功消息。

该工具包需要访问您的 Azure 帐户,因此请登录。为此,请选择 **工具/Azure/Azure 登录**。

登录选项取决于您计算机上安装的工具。选择 **OAuth 2.0**,并通过默认浏览器登录到 Azure。

登录后,您可以选择您的订阅。

创建 App Service

部署应用程序时,需要创建服务计划并请求支持性基础设施。通过在 Azure 门户中创建 App Service 来执行此操作。配置完成后,您就可以将应用程序部署到该服务。该过程从登录 Azure 门户中的帐户开始。

如果您看到 **App Services** 图标,请单击它以打开 **App Services** 页面。在那里,您可以单击 **Create** 按钮来显示 **Create Web App** 窗格,如下图所示。

如果您没有看到 **App Services** 图标,请单击 **Create a resource** 并搜索“**Web App**”。

市场上有许多类似的服务。确保选择上图中所示的 **Web App** 图标,然后单击 **Create/Web App** 列表。此操作将带您进入 **Create Web App** 窗格。

两条路径都会将您带到同一个窗格。如上图所示,您需要选择您的订阅并选择一个 **Resource Group** 或创建一个新的。

接下来,在 **Instance Details** 部分,设置下图所示的字段。设置您的应用服务的 **Name**,将 **Publish** 设置为 **Code**,为 **Runtime Stack** 选择 **Java 11**,为 **Operating System** 选择 **Linux**,并选择您首选的 **Region**。

接下来,向下滚动并设置 **App Service Plan**。在本演示中,单击 **Change Size** 以显示 **Spec Picker** 页面,然后单击 **Dev / Test** 和 **B1** 来选择要使用的计算机。单击 **Apply** 以应用此计划。

最后,单击 **Review + Create** 来查看您的选择。

然后单击 **Create** 来创建 Web App Service。

此过程需要几分钟时间,因此您最初会在右上角收到“**Initializing deployment...**”通知。

部署完成后,您会收到“**Your deployment is complete**”消息。

部署应用程序

现在 IntelliJ 已访问您的帐户,请右键单击项目,然后在打开项目的情况下从上下文菜单中选择 **Azure**。然后单击 **Deploy to Azure Web Apps**。

IntelliJ 显示以下屏幕截图中可见的页面。如果您有多个可用的 Web App Service,您可能需要选择正确的 **Web App Service**。

单击 **Run** 来构建和部署应用程序。过程完成后,您将收到类似下图的“Deploy succeed”消息。

您可以单击 URL 来验证应用程序是否正在运行。

您还可以在 Azure 门户中查看应用程序的信息。

监控活动

现在应用程序正在运行,您需要调整性能。向下滚动 **Overview** 页面以查看包含有价值指标的仪表板。

您可以在托管 Azure Metrics Explorer 的 **Metrics** 窗格上监控其他指标。您可以从 Azure Metrics Explorer 入门中了解更多信息,但这里有一个快照,展示了查找该功能的位置并突出显示了可用内容。

诸如 **CPU Time** 和 **Response Time** 等附加指标提供了识别性能瓶颈所需的必要信息。

查看网络设置

您可以通过单击 **Network** 窗格的 **Inbound Traffic** 部分中的 **Access restrictions** 链接来查看和更改网络防火墙规则。

您可以创建规则,例如通过 IP 地址将访问限制在选定的一组客户端计算机。

后续步骤

您是否需要自定义域,或者想将现有域迁移到新主机?您可以单击 **Custom domains** 并输入相关信息,如下面的屏幕截图所示。

您的应用程序是否经常更改?首先对应用程序进行容器化,然后将其分解为多个单独的容器化服务。这种方法通过使用清晰的服务边界来减少隐藏的交互,从而减少部署问题。

需求是否在增长?选择满足您需求的 **Scale up** 或 **Scale out** 选项。

您是否需要快速应对快速变化的需求?考虑将某些容器化服务重构为由 Azure Functions 托管的独立函数。您可以按需创建这些轻量级函数。它们仅在需要时存在,因此会自动缩减。

您是否需要更敏捷的部署周期?您可以轻松更新容器和 Azure Functions,并完全在您的持续集成和持续部署 (CI/CD) 管道中自动化此过程。

您是否需要提供细粒度的基于角色的访问控制?Azure 可以为您的 Azure Function 分配一个标识,以便与密钥保管库一起使用,确保用户仅访问他们所需的资源。

您可以在 文档站点中探索 Azure App Service 的所有优点,该站点为多种语言和许多服务提供了教程和示例。免费学习路径模块将展示如何使用该平台的功能。

继续本系列的下一部分,了解如何重构单体应用程序。步骤包括:容器化它、迁移到可伸缩数据,以及拆分核心服务,从而使应用程序更轻量、更易于部署和维护,并且更具敏捷性。

如果您想与 Microsoft Azure 上的 Java 团队讨论特定的 Java 应用迁移场景,请填写此 问卷,然后我们将有代表与您联系。

© . All rights reserved.