基于阿里云构建自己的弹性应用

短短几年,软件、企业信息系统、互联网等行业因为云计算的出现和普及发生了很多的改变。在今天,如果我们计划创建一家新的互联网初创公司的时候,我们不再需要把时间浪费在服务器采购、IDC选择、网络南北互通和服务器硬件故障这些基础设施上面。因为像ECS这类服务的出现,我们需要的服务器资源已经变得唾手可得。同时,RDS、Redis、OSS等服务的出现,我们甚至不需要自己去安装和维护数据库、缓存等软件了。云计算使互联网初创公司能够更关注自己核心业务的快速奔跑。

同时,云计算本身也在快速发展。创业公司对云计算的理解和应用能力,也成为了创业公司最终成败的一个重要因素之一,因为这不仅影响到成本,同时也影响到产品的性能、规模、服务能力、用户体验和迭代速度。成本和迭代速度对于初创公司的重要性不言而喻。

阿里云在2015年底推出了一款新的服务,其目标皆在于帮助云计算用户进一步减少在基础设施维护上的成本,提供更加敏捷的云计算资源维护能力。这款服务就是阿里云资源编排服务。

在资源编排服务出现之前,虽然我们已经不需要搬运沉重的服务器到机房去,大部分时候我们只要在阿里云的网站上点点鼠标就能够得到我们想要的服务器资源,但是当管理的资源多起来以后,通过Web界面来维护大量的云产品的创建、配置仍然是颇有挑战的工作,特别是当出于安全需要而引入复杂的网络拓扑结构时,很多管理员不得不借助外部文档来记录资源间的依赖关系、系统整体架构和很多的配置细节。使用阿里云资源编排服务(Resource Orchestration Service),用户仅需要编写一个文本文件,就能很好的解决这些问题。借助这个文件和编排服务提供的能力,我们不仅能够定义我们的资源需求、配置细节和资源间的依赖关系,甚至我们可以在同一个文件中描述整个网络拓扑结构和系统架构。这个文件神奇的定义了整个系统,并且重要的是只有一个文件,而且整个系统可以任意复制、修改。

资源编排的核心概念:

  • 模板:模板是一个JSON格式的文本文件,遵照阿里云资源模板的格式定义。其中定义了用户系统的所有资源细节和整体架构。阿里云资源编排模板定义
  • 资源编排服务:资源编排服务是阿里云提供的开放云产品,提供RESTful风格的API、SDK和Web界面供用户使用。接受用户提交的资源模板,完成用户系统的生命周期维护。
  • 资源栈: 资源栈是一个逻辑上的概念,用户定义的资源模板文件,由资源编排服务执行后得到的资源全体即是资源栈。一个资源栈代表了一个用户的运行时系统。

下面用一个网页游戏的例子来说明如何借助资源编排服务的能力来简化整个系统配置。作为一个小的创业团队,我们没有专职的运维工程师,同时我们的游戏很受欢迎,是一个峰值在线人数超过2000人的网页游戏。由于游戏的特点导致用户操作比较频繁,我们大概前期需要2台2核心4GB内存的ECS实例,一个rds.mss1.xlarge规格的SQLServer实例,2台ECS实例运行的是同样的游戏服务端程序,游戏用户通过统一的域名登入游戏,不会感知后面到底有多少机器来提供服务,所以我们还需要一个SLB来做2台ECS的前端负载均衡器。整个游戏系统的架构如下:

为了创建整个游戏系统,我们提前已经把游戏软件做成了一个私有镜像,镜像ID是m-25qoptbjn,然后我们编写了下面的模板:

{
    "ROSTemplateFormatVersion": "2015-09-01",

    "Resources": {

        "LoadBalancer": {
            "Description": "创建负载均衡实例,带宽20Mbps,按固定带宽付费",
            "Properties": {
                "AddressType": "internet",
                "Bandwidth": 20,
                "InternetChargeType": "paybybandwidth"
            },
            "Type": "ALIYUN::SLB::LoadBalancer"
        },

        "BackendServer1": {
            "Description": "创建游戏服务器实例,使用装有游戏服务端软件的自定义镜像, 实例规格ecs.s2.large",
            "Properties": {
                "ImageId": "m-25qoptbjn",
                "InstanceType": "ecs.s2.large",
                "InternetChargeType": "PayByTraffic",
                "IoOptimized": "optimized",
                "SecurityGroupId": {
                    "Fn::GetAtt": [
                        "securityGroup",
                        "SecurityGroupId"
                    ]
                },
                "SystemDisk_Category": "cloud"
            },
            "Type": "ALIYUN::ECS::Instance"
        },

        "BackendServer2": {
            "Description": "创建游戏服务器实例,使用装有游戏服务端软件的自定义镜像, 实例规格ecs.s2.large",
            "Properties": {
                "ImageId": "m-25qoptbjn",
                "InstanceType": "ecs.s2.large",
                "InternetChargeType": "PayByTraffic",
                "IoOptimized": "optimized",
                "SecurityGroupId": {
                    "Fn::GetAtt": [
                        "securityGroup",
                        "SecurityGroupId"
                    ]
                },
                "SystemDisk_Category": "cloud"
            },
            "Type": "ALIYUN::ECS::Instance"
        },

        "SLB_Attachment": {
            "Description": "挂载2台ECS实例到SLB",
            "Properties": {
                "BackendServers": [{
                    "ServerId": {
                        "Ref": "BackendServer1"
                    },
                    "Weight": 100
                }, {
                    "ServerId": {
                        "Ref": "BackendServer2"
                    },
                    "Weight": 100
                }],
                "LoadBalancerId": {
                    "Ref": "LoadBalancer"
                }
            },
            "Type": "ALIYUN::SLB::BackendServerAttachment"
        },
        "securityGroup": {
            "Description": "创建经典网络安全组",
            "Properties": {
                "SecurityGroupName": "WebGameSG"
            },
            "Type": "ALIYUN::ECS::SecurityGroup"
        },
        "Database": {
            "Description": "创建SQL Server数据库",
            "Type": "ALIYUN::RDS::DBInstance",
            "Properties": {
                "Engine": "SQLServer",
                "EngineVersion": "2008r2",
                "DBInstanceClass": "rds.mss1.xlarge",
                "DBInstanceStorage": 10,
                "DBInstanceNetType": "Intranet",
                "SecurityIPList": {
                    "Fn::GetAtt": ["BackendServer1", "InnerIp"]
                }
            }
        }
    }
}

模板完整定义了整个系统的资源细节和之间的依赖关系。我们登入阿里云资源编排服务的控制台,输入上面的模板内容,几分钟后网页游戏服务就已经搭建完成了。当然这个例子还是很简陋的,随着游戏运营,可能同时在线人数上升到了5000人,我们需要增加3台机器,我们只要修改模板文件重新交给资源编排服务就可以进行系统扩容。如果我们需要在另一个地域,比如青岛开辟一组新的服务,只要把模板文件复制后,选择在青岛区域运行就同样可以在几分钟内将整个服务复制到青岛。

另一个例子,我们是一家为客户提供基因分析服务的初创公司。我们通过采集客户的唾液来提取基因数据,然后采用大规模机器学习的方法来对基因数据进行分析,并最终给客户提供某些疾病的发病风险的可能性报告。人的基因数据一般都需要若干GB的文件来存储,分析这些数据需要大量的计算资源。作为初创公司,维护几百台服务器是无法接受的成本。通过阿里云的资源编排服务,我们把整个分析所依赖的软件和资源用一个模板文件来定义,当接到分析任务的时候,我们把模板文件交给阿里云的资源编排服务构建整个系统,可能是几十台ECS,上面运行我们的分析软件。当整个计算完成后,我们立即释放所有资源。这样,我们即有能力调度大量的计算资源来完成我们的业务,同时又不必为资源闲置买单。借助阿里云资源编排的能力,我们可以用同样的模板来同时构建多个一模一样的系统,来并行处理。同时,阿里云资源编排服务提供API和SDK,使我们可以把整个流程和我们的业务系统进行集成,我们可以像写代码一样的来操作云计算资源。

上面的例子虽然很简单,但是已经能够构建出很多有用的系统。其他一些系统要更复杂,但是通过阿里云资源编排服务提供的能力,整体的运维复杂度依然可以控制在很低的程度。

阿里云资源编排服务是免费的,更多信息请访问: https://www.aliyun.com/product/ros/

时间: 2024-08-02 16:46:05

基于阿里云构建自己的弹性应用的相关文章

云加数商业地产转型——基于阿里云构建云+中台

在2017云栖大会-上海峰会上,正佳金控集团CIO宋亦皇做了题为<云加数商业地产转型--基于阿里云构建云+中台>的分享.未来在大数据技术和云计算的推动下,商业地产中将出现原生金融.融合体验.对于企业来说,商业决策也会变得更加智慧,体制也会被不断创新.云在未来的商业活动中将凸显其核心地位.

基于阿里云构建可靠懒猪行IT运维平台

背景 以阿里云为代表的云计算平台的出现,给IT系统的运维带来了巨大的便利,我们的项目在14年创立之处就在使用阿里云的ECS.2016年度,我们借助单台ECS实例和精心设计的软件系统,跑出了接近1个亿的销售额,但随着业务规模的快速扩展和IT系统的演进,运维架构也做出了较大的调整. 关键点 将业务分拆为一般重要.关键和既重要又关键的模块 搭建持续集成环境和预发布环境 敲除单点故障,为保证SLA对关键服务做冗余处理 对未来数据规模的预估,并定期归档冷数据 用好内存型NoSQL,例如Redis 业务分拆

[容器Hub服务]基于阿里云Code的仓库构建

阿里云Code 容器Hub服务支持Github.Bitbucket作为代码源的仓库构建,但是为了向用户提供更加稳定可靠的服务,我们也引入了阿里云Code.阿里云Code代码托管平台实现了私有并且安全的代码管理服务,能提供目前最流行的分布式版本控制系统Git来有效管理项目. 创建仓库 默认情况下,如果你的容器Hub服务登录账户已经开通了阿里云Code,将会默认展示你在阿里云Code上的项目.如果你还没有开通过阿里云Code,那就不要犹豫,先点击绑定账号,去开通一下吧. 之后,你可以基于阿里云Cod

基于阿里云生态构建网聚宝业务监控系统

伊始 -- 网聚宝业务监控系统 今年网聚宝开始推进服务化进程,我有幸分在架构组,在公司产品服务化的过程中负责业务监控模块.在以前,我们发展工程还未服务化的时候,我们可能只单单关注单个请求的耗时等基本指标,对其作出优化或者业务上的调整,其内容往往也只是一人从顶到底,一人即可了解其中的逻辑层次.但随着服务化的到来以及业务逻辑愈来愈复杂,一个前端 web 层的请求需要调用很多服务才可以完成一次请求,当请求变的比较慢或者发生故障,我们很难看出是哪个服务或者哪台机器发生的问题,所以需要一个监控服务,来快速

【Best Practice】基于阿里云数加·MaxCompute及Quick BI构建网站用户画像分析

前文背景:[Best Practice]基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏   开通阿里云数加产品 前提条件 为了保证整个实验的顺利开展,需要用户使用开通相关产品及服务,包括DataHub.MaxCompute.AnalyticDB.Data IDE.Quick BI.      业务场景 数据来源于网站上的HTTP访问日志数据,基于这份网站日志来实现如下分析需求: n   统计并展现网站的PV和UV,并能够按照用户的终端类型(如Android.iPad.iP

【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏

本文偏向与实操层面的为大家介绍,如何基于阿里云数加StreamCompute.DataV快速构建网站日志实时分析. [什么场景适合用流计算] 流计算提供了针对流式数据实时分析的一站式工具链,对于大量流式数据存在实时分析.计算.处理的逻辑可以考虑通过流计算该任务.举例如下: 1. 针对实时营销活动,需要实时获取活动流量数据分析以了解活动的营销情况,此时可以上流计算. 2. 针对物联网设备监控,需要实时获取设备数据进行实时灾难监控,此时可以上流计算. 3. 对于手机APP数据实时分析,需要实时了解手

小鱼儿CTO赵兴国:基于阿里云的互联网+视频会议系统实践

2016云栖大会上海峰会于2016.1.20日在上海科技馆顺利举办.本文是根据小鱼儿科技联合创始人兼CTO赵兴国在2016云栖大会上海峰会<互联网+架构及实践专场>的演讲中分享内容整理而成.赵兴国以基于阿里云后台的视频会议系统为例,分享了互联网+的视频会议实践.   下面是演讲内容整理.   传统视频会议设备复杂,一般是四件套,会议系统必须外接电视.麦克风.摄像头,学习很复杂的摇控器,才能够开始使用.为保障视频会议效果,还需要搭建服务器.租专线,才能投入使用.并且每次开会都需要专业人员维护,比

梨视频:基于阿里云E-MapReduce搭建视频推荐系统的实践

   (来源:C资讯)     专注新闻资讯的梨视频近来表现亮眼.   梨视频由前澎湃新闻掌门人邱兵创立.   在上线之前,它就获得了黎瑞刚华人文化近1亿美元投资,旗下<微辣>栏目总播放量已经超过4亿,并在上线1个月后获得"年度视频新媒体"大奖.   这样一款脱胎于传统媒体的创业型短视频软件,在视频领域异军突起,不仅让内人士在感叹梨视频内容生产力之强大的同时,也诧异于是谁在为梨视频的庞大用户体量提供技术支撑.保证视频流畅?   今天就和大家分享梨视频如何基于阿里云快速搭建一

基于阿里云数加MaxCompute的企业大数据仓库架构建设思路

  数加大数据直播系列课程,主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题,分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台.   本次分享嘉宾是来自阿里云大数据的技术专家祎休!   背景与总体思路   数据仓库是一个面向主题的.集成的.非易失的.反映历史变化的数据集合,用于支持管理决策.其结构图如下所示:     随着大数据.云计算等技术的应用和普及,互联网环境下数据处理呈现出新的特征:业务变化快:数据来源多:系统耦合多:应用深度深.业务变化