Bootiful Azure:迈出使用 Microsoft Azure 的第一步 (1/6)

工程 | Josh Long | 2019年1月3日 | ...

这是六部分系列文章的第一部分,新文章将于每周一和周四发布,旨在为 Spring 开发者介绍 Microsoft Azure。若没有 Microsoft 的 Asir Vedamuthu Selvasingh、Yitao Dong、Bruno Borges、Brian Benz 和 Theresa Nguyen 的贡献,我无法完成本文。您可以在 Github 找到本系列的示例代码。阅读文章时如有任何反馈或问题,请在 Twitter (@starbuxman) 联系我。您也可以在我题为《Bootiful Azure》的 Spring Tips (@SpringTipsLive) 文章中了解更多关于 Microsoft Azure 的信息。

以下是所有分辑文章

各位 Spring 爱好者大家好!在本系列文章中,我将介绍 Spring 对 Microsoft Azure 的支持,重点关注 Azure 平台为 Spring 应用程序提供的有趣技术。我想一如既往地强调,您应该在 Microsoft Azure 提供了差异化体验的场景下使用它。Microsoft AzureGoogle CloudAmazon Web Services阿里云 都提供了基础设施服务,如自定义消息队列、存储、数据库等,这些服务相比更通用的标准商用和开源替代方案,提供了引人注目、有时甚至更优的选择。所有平台都有其独到之处,使其在某种程度上领先于同行。这些独到之处必然具有引力;任何人都可以运行 MySQL 或 Redis,但很少有人能运行 Google Cloud Spanner 或 Microsoft CosmosDB。为任务选择正确的工具!如果您需要 CosmosDB 提供的解决方案,就使用它。

如果您尝试进行的工作足够通用,不依赖于特定的平台,那么您应该尽可能以不依赖特定平台的方式来使用它。尽可能保持通用。想运行 Java 或 Node.js 进程吗?使用像 Kubernetes 这样的容器编排工具。或者,如果您喜欢自己,并且喜欢快速上线生产环境,可以使用 Heroku 或 Cloud Foundry 这样的平台即服务(PaaS),它们的关注点是应用程序,而不是底层容器。这些技术让您可以站在应用程序二进制文件的角度思考问题,并快速交付到生产环境。它们都是开源的,拥有庞大的用户基础和生态系统,因此它们既是最简单的解决方案,也是最强大的解决方案。在这种情况下,使用通用工具从技术上讲也是最佳选择。在 Microsoft Azure 上使用 Cloud Foundry(只需在 Microsoft Azure 上安装并部署 Pivotal Cloud Foundry 服务)或 Kubernetes 这样的工具非常简单易上手。

数据库是一个特别棘手的问题。如果您投资于像 Google 的 Spanner 这样的专有数据库,那么您应该预料到,如果您某天想将数据移出该平台,这将非常困难。Riak 前 CTO Dave McCrory 提出了数据引力的概念——这种观念认为,数据池会激发应用程序生态系统,这些应用程序向数据池输入数据,也从数据池中提取数据。这些应用程序越有用,使用它们的人就越多,人们就越有可能在这些集成之上进行构建。Salesforce 是一个很好的例子。它的数据具有粘性。Salesforce 作为 CRM,功能丰富而广泛,但它绝不是唯一功能齐全的 CRM。它所拥有的,比任何竞争对手都多的是一个合作伙伴集成生态系统,人们因此对其产生了依赖。这些合作伙伴集成使 Salesforce 成为了“加州旅馆”式的命题:您可以入住,但永远无法离开。因此,显然,请为任务选择最好的工具,但要意识到,除了可观的管理成本外,这些工具还存在可选性成本。

设置

让我们看看 Microsoft Azure 本身。您需要登录门户以获取本系列中将介绍的各种服务的相关配置密钥。该门户是您应该书签的地址。通常,当您查看所使用服务的门户相关部分时,您会看到一个名为“密钥”或“配置密钥”或类似的章节。不幸的是,这在所有服务中并非 100% 一致。

在本系列文章中,我们将重点介绍如何利用 Azure 平台的优势——Microsoft 通过其 Azure 平台提供的差异化优势。您可以使用 `az` 命令行工具实现本文中我们将介绍的大部分内容。由于它使用 Python 编写,因此在多种操作系统上安装都非常容易。有关如何安装 Microsoft Azure CLI(即 `az`)的更多信息,请查阅此文档

差不多就是这样了。假设您已经拥有 Azure 账户并准备好使用 `az` CLI,那么您就可以开始编写代码了。Azure 没有平台级的认证概念。您需要按服务进行认证。这使得使用每个独立服务都很直接,但从整体上看,这意味着您在一开始就需要更频繁地考虑认证问题,而不是在使用例如 Google Cloud 时那样。这并不是说哪种方式工作量更大。使用 Google Cloud 时,您在使用特定服务之前通常需要频繁且明确地“选择加入”。所以,我想这两种方式半斤八两吧。

正如您所料,您可以使用Spring Initializr启动新的 Spring Boot 项目。除了您想要使用的其他选项外,请选择 `Azure Support`。或者,如果您想将 Microsoft Azure 依赖项引入现有应用程序,您可以手动将 Maven 物料清单 (BOM) Artifact 添加到您的 Spring Boot 项目的 Maven 或 Gradle 构建中。以下是使用 Maven 的方法。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.azure</groupId>
                <artifactId>azure-spring-boot-bom</artifactId>
                <version>${azure.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

在我的例子中,Maven 属性 `azure.version` 设置为 `2.0.5`。

从这里开始,我将使用 Ivy 语法介绍 Maven 仓库依赖坐标:`groupId` : `artifactId` : `version`。有时,`version` 不是必需的,我将省略它,因为 BOM 会为我们管理这些版本。

认证

如果您想使用本地机器上安装的 `az` CLI 来跟随这些示例,您需要运行 `az login`。否则,您可以从 Azure 门户中启动 Microsoft Azure Cloud Shell。它将为您提供两个选择:Bash 或 Powershell。

资源组

登录后,您需要配置一个资源组。资源组是资源的命名集合。这非常方便,因为您可以创建所有与本文介绍的 Spring 和 Microsoft Azure 相关的资源,并将每个资源与此资源组关联起来,然后当您完成后,销毁该资源组,它将级联删除所有与之关联的内容。

这使得计费、生命周期管理以及更多方面都非常方便!每个资源组都与一个区域关联。Microsoft Azure 拥有大量的区域供您运行服务。截至撰写本文时,全球共有 54 个区域,比任何其他云提供商都多。

以下是在美国 `West US 2` 位置创建名为 `bootiful` 的资源组的方法。我们将在后续示例中使用它。

az group create --name bootiful --location "West US 2"

您可以运行以下命令来遍历所有可能的区域:`az account list-locations`。您会注意到,在执行命令时,我们在创建资源时需要将其与特定位置关联,通常使用 `-l` 或 `--location` 参数。这可能很繁琐,因此指定一个默认位置并在后续调用中省略它会很有帮助,就像这样:`az configure --defaults location=westus`。

运行 `az configure` 确认一切正常。

Cloud Foundry 服务代理

有一个Cloud Foundry 服务代理可以用来快速启动各种 Microsoft Azure 服务,然后将它们绑定到您的应用程序。这个服务代理使得在 Cloud Foundry 上运行应用程序,尤其是在 Microsoft Azure 之上,成为针对 Microsoft Azure 服务的应用程序上线生产环境的最简便途径。

好了!现在您已经了解了所有设置 Spring 应用程序以利用 Microsoft Azure 服务所需知道的内容。

获取 Spring 资讯邮件

通过 Spring 资讯邮件保持联系

订阅

抢占先机

VMware 提供培训和认证,助您飞速进步。

了解更多

获取支持

Tanzu Spring 通过一个简单的订阅即可提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部