提到微服务,可能就是指 Azure Spring Apps
Azure Spring Apps是什么?
以前被称为Azure Spring Cloud的这项服务,已更名为Azure Spring Apps(截至2023年8月)。一听到Spring Cloud,就只会认为是原版Spring的Spring Cloud,所以这次改名不错(原版中还有一个叫Spring Cloud Azure的项目,更加混淆)。
Azure Spring Apps 是什么?据 Microsoft 官方介绍,
在Azure Spring Apps中,您无需更改代码即可轻松将Spring Boot应用程序部署到Azure上。
写着「と」。
看到这个说明,想必没有人会觉得“哦!原来如此!”。不需要更改代码就可以托管是很正常的事情,而且也可以理解为只托管使用了Spring Boot的Java应用程序。
然而,除了Azure Spring Apps之外,Azure平台上还有其他PaaS服务可以托管Spring Boot应用程序,如Azure App Service和Azure Container Apps等。因此,在这段说明中完全不能理解Azure Spring Apps的存在原因。事实上,Azure Spring Apps还可以托管使用Java以外的编程语言开发的应用程序。即使需要用简洁的一句话进行解释,这段说明也太糟糕了。因此,请忘记这段说明吧!
Azure Spring Apps 是什么?从我个人的观点来看,Azure Spring Apps 是什么?
只需使用专为微服务设计的PaaS,无需了解Kubernetes相关知识。
如果要托管微服务,将应用程序容器化并在Kubernetes中进行主机托管是主流方式。Azure Spring Apps基于Kubernetes,但您可以完全无需了解Kubernetes而使用它。因此,不需要Kubernetes知识,也不需要创建、更新和管理用于处理Kubernetes的yaml文件。
Azure Spring Apps提供了在构建微服务时非常有用的功能。
-
- VMware Spring Cloud Gateway
OSS の Spring Cloud Gateway をベースに商用にフィルターを追加してあるものです。Spring とついているので Java 専用に感じますが、そんなことはありません。
Service Connector
Redis Cache や MySQL、PostgreSQLなど他の Azure の PaaS との紐付けを行うことで、アプリではその接続情報を環境変数として取得することができるようになります。また専用のライブラリを使うことで接続情報を意識せずにアプリから簡単にアクセスすることも可能です。
Application Configuration Service
Kubenetes の ConfigMap の値を GitHub などの外部Gitリポジトリと連動できる機能です。Key-Valueの形式で環境変数として値を取得できます。動的に値が変更されるため、FeatureFlagに使うこともできますね。
除了还有一些其他独特功能外,但主要使用的应该是这三个。
将应用程序转换为镜像的步骤为零
基于Kubernetes的应用程序必须进行容器化才能运行。这通常意味着需要创建Dockerfile,准备容器注册表并推送镜像,然后才能进行部署。这个过程非常繁琐。一旦搭建了CI/CD环境,之后只需要将源代码推送到仓库即可,但是搭建这个环境需要投入大量的工时。此外,过程越复杂意味着增加了复杂性,这也意味着故障的可能性增加了。
在Azure Spring Apps中,只需将代码上传到Azure Spring Apps,即可完成构建、镜像化和容器部署等一站式服务。换言之,无需编写Dockerfile,也无需准备容器注册表。CI/CD环境的大部分配置都是不必要的。自行搭建CI/CD的范围仅需要编写一个脚本,在类似GitHub的Git仓库中推送代码后,使用Azure CLI将代码上传到Azure Spring Apps。当然,如果需要,也可以自行构建、镜像化并将结果推送到容器注册表,再进行部署。(在这种情况下,需自行准备容器注册表)
在PaaS上,可以专注于微服务的开发。
从基础设施的角度来看,PaaS 的好处在于能够在不增加基础设施方面的额外工作的情况下进行配置,这是非常出色的。但是,即使采用了在云端提供的托管式 Kubernetes,对开发人员来说,在使用容器构建微服务时仍然会增加很大负担。可以说,可以大大减轻这种负担的是 Azure Spring Apps。
Azure Spring Apps は Spring Boot 専用の PaaS ではないことを強調したいです。.NET アプリや Python、PHP、Go 言語のアプリケーションもホスティングできます。コンテナ化すれば、言語に関係なく動作するのは当然のことです。Azure Spring Apps では、このような多言語対応のアプリケーションを「Polyglot」と表現しています。Enterprise Tier で、Polyglot に対応しています。
我打算写一些关于开发语言的技巧。
要为Azure Spring Apps提供的技巧需要根据开发语言来编写。由于我是一名有着丰富.NET工程师经验的人,我可以为在Azure Spring Apps中使用.NET应用程序的技巧写一些文字。我也略懂Java,所以应该没问题。对于其他语言,我虽然不太熟悉,但是希望能够逐步尝试一些进展。
Azure Spring Apps Enterprise の Tips (C#版)
Azure Spring Apps Enterprise の Tips (Java版)
Azure Spring Apps Enterprise の Tips (Python版)