如何选择应用部署的计算资源
在应用部署中,计算资源包括用于存储、处理和管理应用程序数据和代码的硬件和软件资源。这些资源共同支持应用程序的运行、高效处理数据以及快速响应用户的请求。云上计算资源可以是虚拟机、容器或者Serverless服务,每种类型的计算资源都有其适宜的使用场景。选择合适的计算资源,有助于您在满足业务需要的同时,提升迭代效率、降低管理成本。所以在您进行决策选型时,需要对组织的具体情况、面对的业务需求等方面有足够的理解,同时也需要了解阿里云提供的云服务。本文旨在为您提供阿里云计算资源选型方面的决策参考。
了解
不同的应用场景对计算资源的需求也有所不同。例如,技术人员在面对原来部署在物理机或虚拟机中不容易重构为容器化,或是需要对服务器有完整控制权的应用,通常会在上云时直接将其部署到VM服务中。认同Serverless架构理念的开发人员面对事件驱动类型的应用,通常希望专注于业务逻辑而无需关心底层资源运维管理,会倾向于选择Serverless服务。对于已经应用DevOps、微服务架构的团队,可能已经积累了很多关于Kubernetes的经验,则通常会选择容器服务。
在VM服务、Serverless服务及Kubernetes服务中进行选择时,通常需要考虑资源可用性和运维成本,并在自主性和标准化之间找到恰当的平衡点。虽然这些服务均能有效部署应用,但是某一服务在特定场景下可能更具有优势。
Kubernetes服务致力于利用Kubernetes云原生技术构建和部署应用,适合希望使用Kubernetes生态的组织。阿里云上提供了容器服务 Kubernetes 版。
Serverless服务旨在最大程度上减少计算资源的管理和运维工作,由阿里云提供支持。阿里云上提供的Serverless服务有函数计算、容器服务 Serverless 版、弹性容器实例、Serverless应用引擎等。
考虑
当您需要在云上部署应用程序时,建议您根据应用程序的实际场景及运维策略逐一评估选择最合适的计算服务。以下是在进行选型时需要考虑的一些关键指标。
组织架构和技术能力
企业主要采取以下模式来组建开发团队:
DevOps模式:各团队独立完成开发、部署和运维,团队成员享有高度的自主权,能够根据自身的开发节奏灵活创新。
集中管理模式:集中维护统一标准,专注打造自动化流程,促进技术知识及最佳实践的分享,提高工作效率。
随着企业管理应用数量的增加及对成本、性能和安全性的要求不断提升,组织也有可能最初采用DevOps模式,而后逐步过渡到集中管理模式。无论采用哪种模式,Serverless架构都能有效减轻基础设施管理的负担。
VM服务需要开发人员承担更多的管理和运维工作,而在Kubernetes领域,企业往往会组建专门从事平台工程的云管理团队,这些技术娴熟的云管理团队不仅具备开发人员的技能,还能负责构建和维护由自动化部署和可观测工具组成的平台。对于这类组织,容器服务 Kubernetes 版通常会被视为可选方案。
总的来说,开发团队的组织架构和技术能力对于选择合适的计算平台有着至关重要的影响。
运维模式
为了充分利用云计算所提供的强大功能,许多组织会对自动化技术进行标准化处理。基础设施、平台和DevOps团队使用的战略和工具通常是推动决策的关键因素。组织在自动化创建、配置和维护基础设施、资源和应用工作负载的工具方面有多种选择。
VM服务会使用基础设施即代码(IaC)工具自动化虚拟机的创建和配置,如Terraform、ROS(资源编排),以及集成Jenkins、GitLab CI/CD等工具进行代码提交到部署的自动化流程。
采用Kubernetes的组织可能会使用基于Kubernetes的自动化工具,使用诸如ArgoCD和Flux之类的GitOps工具,以及基于Kubernetes API的云资源编排工具,如Terraform、ROS等。
随着技术的发展,自动化工具通常会内置集成在具体的产品中,例如,Serverless Devs为函数计算开发人员提供构建和部署函数的能力,提高运维效率,实现项目的全生命周期管理。
当前工具的选择已经扩展到安全、测试、网络、性能及可观测等多个维度,从众多工具中进行选择可能会成为一项挑战,建议您优先考虑能够支持多数应用场景的标准化工具集,简化选择过程并提升工作效率。
应用场景
在选择计算产品时,针对应用程序的应用场景进行评估非常重要,以保证所选方案能够满足应用程序所需的性能、安全和成本要求。
一个高效的标准化策略需要涵盖多种应用场景,如微服务架构、单体应用、事件驱动架构、运维团队所需的工具集,以及数据处理场景机器学习、批处理和流处理等数据处理场景。
这些不同的应用场景呈现多元化的架构特征,因此所采用的策略也应具备灵活性,才能适应团队人员不同的技术需求和业务目标。
应用程序开发人员:需要管理多套环境,如开发、原型设计、测试、预发和生产环境。
数据工程师:需要对大数据模型进行流处理、数据清洗、模型训练、模型推理,以及负责构建应用程序和数据管道等一系列大数据处理任务。
AI/ML科研人员:在训练AI大模型时,需要配备相应的计算资源,如阿里云ECS提供的GPU计算型实例或其他基于GPU的高性能计算架构。
其中,不同的服务适用的应用场景如下:
VM服务适用于传统应用迁移、完全控制环境应用、多租户应用、大型复杂应用(如大数据处理、高性能计算)等。
Kubernetes服务适用于微服务架构、持续集成和持续部署、可伸缩需求、多云和混合云部署及容器密集型应用等。
Serverless服务适用于事件驱动应用、短生命周期任务、快速原型开发、微服务及API后端、按需使用的应用等。
集成
在应用程序的开发中,常常需要用到数据库、消息队列、流媒体、任务编排等多项技术服务,因此在进行应用部署时需要充分考量与这些服务的集成能力。
VM服务,如阿里云ECS提供了包括计算、存储、网络、数据库、安全、应用部署以及监控和管理等多个方面的一站式云计算解决方案,您可以依托ECS的强大功能快速构建、部署并扩展各种在线应用与服务。
Kubernetes服务,如容器服务 Kubernetes 版完全兼容Kubernetes标准,并且与阿里云的计算、存储、网络、可监测、安全及其他云原生服务深度集成,为您提供高可用、可扩展的容器化服务。
Serverless服务,采用托管服务可以显著减轻操作负担,并简化对底层基础设施的管理。如阿里云函数计算不仅提供了与日志、存储、监控等服务的丰富集成能力,而且支持接入多种事件源,自动触发函数执行,构建了完善的Serverless生态环境。
原型制作
在很多场景下,组织需要通过快速实验来检验新想法的可行性,因此一个能够支持快速编写、部署和验证想法的工作环境显得尤为重要。
在选择应用程序部署方案时,这种便于快速实验的环境经常被忽略,然而它往往是创新的源泉。一个能让团队迅速构建、测试和迭代的服务可以极大地促进新商机的探索和用户反馈的获取。
阿里云函数计算让您能够快速编写、部署和更新代码,无需关心基础设施管理工作。这些能力可以帮助您快速进行原型制作,加快从概念到成品的转变。阿里云Serverless服务能够以很低的成本及运维开销为您提供有效的原型开发工具。
容器服务 Serverless 版让您能通过简洁的接口快速部署应用,而无需管理底层的服务器或Kubernetes集群。您可以专注于编写代码和构建容器镜像,然后将其直接部署到容器服务 Serverless 版。
同样,弹性容器实例(ECI)支持您快速运行容器化应用程序,免去了对服务器管理和维护的烦恼。对于那些追求无服务器架构的便捷性,希望专注于快速原型开发而无需承担底层基础设施管理负担的团队而言,ECI是一个理想的选择。
安全合规
在选择服务部署应用程序时,满足安全性和合规性要求是基础,可以确保敏感数据受到保护,降低违规风险,维护客户信任和业务声誉。此外,合理的安全措施有助于应对网络威胁和数据泄露,从而保障业务的连续运营并控制潜在的经济损失。
不同的服务在安全合规性方面有自己的特点与挑战,具体如下:
VM服务提供操作系统安全、网络安全、身份和访问管理、数据安全、安全监控等能力。
Kubernetes服务提供集群安全、容器安全、网络策略、服务账户、合规性扫描及策略执行等能力。
Serverless服务提供函数执行权限、事件源安全、依赖和代码安全、数据加密、监控日志及合规性等能力。
对于这几类服务,安全责任模型是阿里云与用户共担的。阿里云负责保护基础设施的安全性,而用户则负责云服务上运行的应用配置和数据的安全性。为了保障应用程序的安全合规性,对于不同的服务安全最佳实践可参考以下配置。
VM服务:最小化基础镜像,定期打补丁和更新操作系统和软件,实施精细的用户权限管理,使用安全组,专有网络VPC等适当隔离资源,限制不必要的入站和出站流量,收集和监控安全相关日志,设置警报机制等。
Kubernetes服务:集群安全配置,限制容器运行时的权限,使用可信来源的镜像,利用网络策略隔离Pod之间的通信,通过密钥管理敏感数据等。
Serverless服务:给与函数执行所需的最小权限集合,给函数的触发器配置适当的认证和授权机制,定期更新和维护函数的依赖关系,对敏感数据进行加密处理,通过日志和监控快速响应潜在的安全事件等。
选择
下面的表格可以帮助您根据具体的应用场景进行计算资源的技术选型,您可以选择其中一种或多种方案,或者根据团队的具体需求采用不同的技术方案。
计算资源类型 | 适用场景 | 优势 | 产品 |
Serverless | 当您需要阿里云负责基础设施的管理和运维时使用。 | 全托管服务,开发人员能够专注于编写业务代码,而无需管理或调配服务器,从而最大限度地降低运维成本。 |
|
Kubernetes | 当Kubernetes是您的主要计算平台时使用。 | 提供通过Kubernetes一致性认证的标准化容器服务平台、高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,让您轻松高效地在云端运行Kubernetes容器化应用。 |
|
VM | 当您需要基于云服务器直接构建和部署应用,且对基础设施有自主控制权时使用。 | 可以灵活调整支持业务的场景,对虚拟机具有完全控制权,可以与阿里云其他云服务快速集成。 |
使用
经过多维度的综合考虑评估,您已经确定使用哪种服务进行应用程序部署。为了让您能够快速入门,我们为每个产品提供了相应的学习路径。
产品名称 | 学习路径 |
函数计算 | 介绍函数计算的产品特性、产品架构及如何使用。 介绍如何通过函数计算创建服务和函数及函数的执行。 介绍函数计算在AIGC、文件处理、Web应用搭建及GPU实例使用等方面的最佳实践。 |
Serverless应用引擎(SAE) |
介绍SAE产品的适用场景、核心能力、产品架构及产品在部署应用、应用托管、任务托管、监控管理方面的能力。
介绍如何将Web应用及微服务应用部署到SAE。
介绍SAE在弹性伸缩、网络、镜像、监控、存储、微服务等方面的最佳实践。 |
容器服务Serverless版 | 介绍ACK Serverless的产品优势、应用场景、核心能力及与ACK集群的对比等信息。 介绍ACK Serverless在不同场景下的入门操作。 通过ACK Serverless集群在运行Job任务、Spark计算任务及CI/CD等方面的实践教程。 |
容器服务Kubernetes版 | 介绍ACK的产品形态、产品架构、核心功能及生态信息。 介绍使用ACK的几种方式,如在控制台授权和开通服务、搭建魔方游戏、通过Kubectl使用ACK及部署无状态应用。 介绍ACK在集群、节点、网络、存储、可观测性、弹性伸缩等方面的最佳实践。 |
弹性容器实例 | 介绍ECI在产品特性、产品架构及计费相关信息。 介绍如何通过ECI控制台快速使用及通过ACK Serverless集群使用ECI。 介绍ECI在搭建不同类型的应用、运行Job任务及实现弹性伸缩等方面的最佳实践。 |
云服务器ECS | 介绍ECS的优势、架构及如何使用等相关信息。 介绍如何选择ECS实例规格及如何通过控制台、CLI、SDK快速使用ECS。 介绍ECS在AIGC、建站、实例、镜像、块存储、快照及安全等方面的最佳实践。 |
轻量应用服务器 | 介绍轻量应用服务器的产品特性、产品架构及与ECS的对比。 介绍如何快速使用轻量应用服务器的流程,如搭建WordPress个人博客及部署Apache服务。 |