每天都有越来越多的企业迁移到云上,云原生应用的开发需求急速增加。云原生应用能够提供传统应用所没有的优势,包括自动资源配置,自动伸缩,高可用性。这些应用可以为企业和开发者提供绝对竞争优势。
在这篇文章中,你将了解到在Azure上开发云原生应用的一些资源以及技巧。
在Azure上开发云原生应用的工具
Azure包含了一系列内建的工具与服务,完整的列表请查看微软的Azure开发指南。
开发
Azure有两个开发和生成云原生应用的工具:Visual Studio以及Azure App Service。
VS是一个集成开发环境,可以针对云或内部集群,开发,调试,部署并监管程序。
可以选择免费社区版本或两个付费版本——专业版和企业版。VS是平台无关的,可以直接与Azure服务集成,允许你直接部署到Azure。
Azure App Service是一个订阅式的平台即服务(PaaS)允许为Web及手机生成应用。它提供了对云架构的完全控制,可以在容器或直接以代码形式部署应用。
App Service包含了一些预生成的应用,可以作为创建应用的基础。支持流行的框架和语言,包括.NET,Java,Python,PHP,Node.js以及Ruby。
存储
有多种存储选项可以选择,可以从任意标准的存储服务中存取数据,包括磁盘,文件,消息队列,表以及二进制对象。也可以将你的应用连接到数据库服务。
Azure为结构化的,半结构化的以及关系型的数据提供了按需付费的数据库服务。数据库服务包含内建的安全与性能调优功能,还包括自动的数据备份。
数据库的选择包括:
- CosmosDB——针对非结构化或半结构化的数据,低延迟,高可用性与可伸缩性。
- MariaDB——针对关系型数据。高可用性,弹性伸缩,适用于手机及Web应用。
- PostgreSQL——针对关系型数据。可伸缩,支持地理位置和丰富的索引。
- MySQL——针对关系型数据库。高可用性,弹性伸缩,适用于手机及Web应用。
还可以使用SAP HANA。SPA HANA是面向列的,关系型数据管理系统。
可以使用SAP做一些分析,包括预测分析,空间数据处理,文本搜索,图数据处理,以及流分析。也可以将SAP作为应用服务器创建并运行应用程序。
部署
在Azure上部署原生应用既可以是容器形式也可以是无服务器的形式。可以使用Azure Kubernetes Service (AKS)或 Azure Container Instances (ACI)运行并管理容器化应用。使用Azure Functions运行无服务器应用。
AKS是免费的,利用Kubernetes部署并管理容器。这个服务运行在虚拟机上,由你负责配置,管理,当然还有续费。它含有一个集成的持续集成/持续交付(CI/CD)管道。VS Code中也可以集成AKS。
ACI是一个托管容器的服务。不需要开通虚拟机就能运行你的容器。服务的收费模式基于你的容器运行了多久,以及你使用了什么计算资源。ACI通常用于弹性地管理来自AKS的浏览,运行事件驱动的应用,或数据处理工作。
Azure Functions用于无服务器的形式,你的程序基于HTTP请求,Azure服务事件或预定义好的计划运行。在Functions中,你的程序通过API与Azure和第三方服务通信。Functions支持.NET,JavaScript和Java。
在Azure中开发的技巧
使用自动伸缩
自动伸缩能够动态分配资源,仅使用你需要的资源。这能让运行应用的开销最小化。要获得最好的性能和成本效益,请将你的应用设计成可以水平伸缩的。应用通常不需要更强大的处理器,只是需要一种分配负载的方式。
开发应用时,不要将你的代码与具体的实例绑定。否则会限制可用性与扩展性。如果在某个时刻你需要一个更大的流量值,你可以建一个计划任务来自动实现,这个任务在你需要流量增长时启动更多实例。
关注安全
由于使用了独立的服务,云原生应用会比传统应用更加安全。但这并不意味着默认就是安全的。渗透测试很重要。要确保记录你的应用程序的活动并监控流量。这些数据可以帮助你识别威胁。
如果你需要排查问题,记住在完成以后将远程调试关闭。远程调试可能会被利用来修改你的应用程序代码。使用HTTPS,HTTPS可以确保传输安全。
利用Azure资源
微软有许多资源可以帮助开发云原生应用,包括Azure最佳实践。
微软为Azure和微软的其他产品提供实践实验室,视频课程和虚拟课程,开发者内容包括创建发布应用,创建自动化工作流,Python机器学习。可以通过这个平台获得微软认证。
Azure DevOps Labs也是一个选择,含有许多微课程。DevOps Labs致力于帮你学习如何使用Azure以及如何选择第三方服务。包含如何在PHP中建立CI/CD管道,以及在VS Code中推送请求等。