阿里云OSS成本优化指南
OSS是什么
对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。同时,OSS也提供原生的传输加速功能,支持上传加速、下载加速、提升跨国、跨洋数据上传、下载的体验。也可以结合CDN产品,提供静态内容存储、分发到边缘节点的解决方案,利用CDN边缘节点缓存的数据,提升同一个文件被同一地区客户大流量重复并发下载的体验。除此以外,上传文件到OSS后,可以配合媒体处理服务和图片福利进行云端的数据处理。
问题与挑战
除了阿里云以外、无论是使用过AWS、微软云还是别的云厂商,云上托管对象存储服务在管理上通常都面临类似的问题。由于对象存储使用太过便捷,对于管理员来说,仅仅是将对应的存储桶(Bucket)权限或是Access Key给到对应的研发团队,由于不同的业务场景以及存储对象类型的差异,无法简单地使用通用策略管理,因此也很难做到精细化管理。
阿里云OSS提供标准、低频访问、归档和冷归档四种不同的存储类型,每种类型的性能和价格均不一样;不同的存储类型又分为本地冗余及同城冗余;同时还要考虑不同的业务场景是否需要对存储对象开启版本控制功能增加生命周期管理。
对于OSS来说,如何在保证数据可靠性、符合业务场景的前提下,选择适合的配置模式。
成本分析
在许多的领域OSS可以作为云上共享存储的替代方案使用,诸如用户上传存储图片、PDF等。在存储成本及可靠性成本具备天然优势。其次,由于OSS支持CRUD操作,也使得研发人员能够非常方便地管理Bucket中的对象。
OSS的成本在大多数时候相较于ECS、RDS等云上资源并不会引起特别注意,也因此对于OSS的精细化管理没有投入许多精力的原因之一。而事实上,在许多数据分析场景如AI算法、大数据分析等,当数据量达到PB级别,若没有针对对应Bucket做任何的控制策略,一年在阿里云上的存储成本将达到150万的支出。在理解如何优化OSS成本之前,先来看下所需具备阿里云OSS的相关知识。
存储类型
对象存储OSS提供标准、低频访问、归档、冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。
标准存储(Standard)
提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问。适用于各种社交、分享类的图片、音视频应用、大型网站、大数据分析等业务场景。
低频访问(Infrequent Access)
提供高持久性、较低存储成本的对象存储服务。有最低存储时间(30天)和最小计量单位(64 KB)要求。支持数据实时访问,访问数据时会产生数据取回费用,适用于较低访问频率(平均每月访问频率1到2次)的业务场景。
归档存储(Archive)
提供了高持久性、极低存储成本的对象存储服务。有最低存储时间(60天)和最小计量单位(64 KB)要求。数据需解冻(约1分钟)后访问,解冻会产生数据取回费用。适用于数据长期保存的业务场景,例如档案数据、医疗影像、科学资料、影视素材等。
冷归档存储(Cold Archive)
提供了高持久性的对象存储服务,存储费用在四种存储类型中最低。有最低存储时间(180天)和最小计量单位(64 KB)要求。数据需解冻后访问,解冻时间根据数据大小和选择的解冻模式决定,解冻会产生数据取回费用。适用于需要超长时间存放的极冷数据,例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等业务场景。
费用组成
OSS服务费用由存储费用、流量费用、请求费用、数据处理费用、对象标签费用、传输加速费用、临时存储费用、DDoS防护费用组成:
其中,存储费用、流量费用通常是OSS的主要费用构成,如不对各功能实现的计费方式了解透彻,易于在不同场景实现的组合下收取相应的成本。
定价详情
存储费用根据存储类型的不同,分为标准型单价、低访问型单价、归档型单价、冷归档单价四种。基于不同的高可用场景又分为本地冗余和同城冗余。
OSS在本地冗余存储的模式下,数据持久性设计可达11个9(四种模式),同城冗余则提供12个9的数据持久性,差别不大。本地冗余和同城冗余的主要区别在于能够提供更高的服务可用性,以标准存储类型为例,本地冗余的可用性为99.99%,而同城冗余的可用性达99.995%。如果服务可用性有较高要求的,可采用同城冗余方案提升系统可用性指标。
OSS对象存储的流量计费,通过内、外网上传到OSS不收取任何费用,从同地域ECS(包括其它云服务)使用内网Endpoint,下载OSS的数据时同样也不收取费用。主要的流量部分包括外网流出流量及CDN流出流量。
外网流出流量根据时段分为闲时流量(00:00-08:00)及忙时流量(8:00-24:00)收取0.25元/GB和0.5元/GB费用不等。
除此以外,若有跨可用区复制需求,如异地灾备或数据同步场景,根据不同的地域收费策略略有差异,具体金额以官网为准。
成本优化
在了解了OSS的具体收费场景之后,便可以有针对性的对OSS不同的使用场景有针对性的优化配置,降低整体成本。
元数据管理
首先依然是成本优化的基础,如何分好账。这里可以使用到标签管理体系,为对应的Bucket添加“部门”、“创建人”、“产品”、“系统”、“环境”等标签。可根据标签,针对特定不同的业务场景配置不同的策略模板。在很大的程度上,可以提升管理的精细化程度上。
版本控制策略
版本控制是针对存储空间(Bucket)级别的数据保护功能。开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。当错误覆盖或者删除Object后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。
版本控制功能本身不收取任何费用,但对当前版本和所有历史版本的文件都会收取存储费用。以下列场景为例,说明使用版本控制时的存储费用(假定当月有30天):
当月第1天:通过PutObject操作向某一存储空间(Bucket)上传了4 GB大小的Object,存储类型为标准存储(本地冗余)。当月第16天:通过PutObject操作对同一个Bucket中的同一个Object写入5 GB的数据。
分析上述Object当月的存储费用时,请注意在第16天对Object写入5 GB数据时,第1天上传的4 GB的Object并未从Bucket中删除。相反,4 GB作为Object的历史版本在Bucket中存储了30天,而5 GB作为Object的最新版本在Bucket中存储了15天。按照存储费用的按量付费计算规则得知,该Object当月的存储费用为:4 GB×0.12元/GB/月+5 GB×0.12元/GB/月÷2=0.78元。
从上例中可以看到,当存储对象版本足够多时,存储容量的增长将翻倍增长。在使用上,如果存放静态图片需要做更新、删除等动作,建议开启版本控制,确保不会对数据误操作。但版本控制功能不支持基于一定的版本数量对过期数据维护清理,只支持按照时间频率归档清理,故对于历史版本时效性要做一定的人工判断。
生命周期管理
OSS支持设置生命周期(Lifecycle)规则,自动删除过期的文件和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。在访问对象存储OSS的过程中,会产生大量的访问日志,其中包括了请求目标Bucket和对应Object名称的具体访问时间。
针对访问频次较低的数据,建议设置低频、归档生命周期,实现bucket级别的治理。对于Bucket访问频次高,但是objcet访问分布差异较大的数据,建议进行Object级别治理,可以按照访问情况或者更新日期策略进行治理。也可以通过前缀等方式进行重要文件筛选。
通过将不同生命周期的数据差别化存放在不同的存储类型,可有效降低数OSS的存储成本。假设当前有1PB的数据存储在阿里云OSS上,在不做任何管理的情况下,一年成本将会是1*1024*1024*0.12/元/月*12=151万支出。在做了优化之后,当数据按照生命周期归档之后,OSS上的存储成本1*1024*1024*0.015/元/月之后,约为18万8,降低成本百万以上。
流量费用
流量费用的开销主要来源于外网流出流量。对于业务层面的必要操作不可避免,可考虑优化的场景主要有异地灾备场景,将数据同步放在空闲时段执行可降低一半流量成本。
另外关于CDN的回源流量这部分,在没有配置缓存策略的情况下,CDN的默认缓存时间为[10,3600]秒内。即10秒-1小时的缓存时间。具体的缓存时间计算公式为:t= (current_time - last_modified) * 0.1。换句话说:当文件上传OSS时间超过10小时(36000秒)后,文件被缓存时间将开始以每小时一次的频率刷新。
可基于具体需求场景对特定的不会做更新操作的诸如图片、视频、语音等静态数据在CDN上设置较长的缓存时间,如1天或1个月,降低CDN的回源流量。
购买资源包
存储容量单位包SCU(Storage Capacity Unit)是一种预付费存储容量资源包,可用于抵扣多种云存储产品存储容量费用。相比其他单一产品的存储包,SCU使用更灵活,性价比更高。
资源包类型包括标准(本地/同城)存储包、低频(本地/同城)存储包、归档存储包、下行流量包、回源流量包和传输加速包这八种。
标准(本地/同城)存储包、低频(本地/同城)存储包、归档存储包:主要指存储空间内存放的标准存储类型文件所产生的存储费用。
下行流量包:外网流出流量费用:通过互联网浏览或下载OSS数据所产生的外网流出流量费用。
回源流量包:CDN回源流出流量费用:通过CDN服务层浏览或下载OSS数据所产生的回源流量费用。
传输加速包:使用传输加速域名访问OSS产生的传输加速费用。
资源包使用示例:
用户小A购买了500 GB的中国大陆通用标准(LRS)存储包和100 GB的中国大陆通用下行流量包,其6月份的资源使用量为:
华东1(杭州)地域当月标准存储(本地冗余)类型文件存储量为300 GB、外网流出流量110 GB、API请求次数10万次。
-
华东2(上海)地域当月标准存储(本地冗余)类型文件存储量为100 GB、标准存储(同城冗余)类型文件存储量为200 GB。
关于资源包的购买需要注意以下细节:
购买OSS资源包后,仅对于增量的存储数据生效,存量数据不在资源包统计范围之内。
由于资源包的使用逻辑仅对增量数据有效,若在初期购买较大资源包将同样存在大量时效性的浪费。建议在前期购买规格较小资源包,通过叠加和升级方式对资源包的容量扩容。叠加和升级方式在细节层面有所不同,叠加可在原资源包的基础上购买相同规格累加;升级则仅可购买更高规格。对于不同的类型资源包的支持逻辑不完全一致。可参考官网材料。
资源包抵扣规则只能在同账号下使用,不可跨账号使用。
资源包使用对应账号全量bucket,不对应bucket关联,只要符合资源包抵扣规则的均会生效。
该用户资源包使用情况如下:
总结
本文总结了阿里云OSS成本优化的相关方法。了解阿里云OSS对象存储的计费方式,分析在各场景下如何通过不同存储类型转换、对象生命周期管理、版本控制策略、增加CDN缓存时间,结合OSS资源包降低OSS整体使用成本。