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

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云服务器ECS,u1 2核4GB 1个月
简介: 阿里云在2015年底推出了一款新的服务,其目标皆在于帮助云计算用户进一步减少在基础设施维护上的成本,提供更加敏捷的云计算资源维护能力。这款服务就是阿里云资源编排服务

短短几年,软件、企业信息系统、互联网等行业因为云计算的出现和普及发生了很多的改变。在今天,如果我们计划创建一家新的互联网初创公司的时候,我们不再需要把时间浪费在服务器采购、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/

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
259 0
|
2月前
|
弹性计算 人工智能 安全
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(3)
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(3)
430 0
|
2月前
|
弹性计算 安全 网络安全
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(2)
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(2)
478 0
|
5天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
15天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
11 0
|
26天前
|
弹性计算 网络协议 关系型数据库
网络技术基础阿里云实验——企业级云上网络构建实践
实验地址:<https://developer.aliyun.com/adc/scenario/65e54c7876324bbe9e1fb18665719179> 本文档指导在阿里云上构建跨地域的网络环境,涉及杭州和北京两个地域。任务包括创建VPC、交换机、ECS实例,配置VPC对等连接,以及设置安全组和网络ACL规则以实现特定服务间的互访。例如,允许北京的研发服务器ECS-DEV访问杭州的文件服务器ECS-FS的SSH服务,ECS-FS访问ECS-WEB01的SSH服务,ECS-WEB01访问ECS-DB01的MySQL服务,并确保ECS-WEB03对外提供HTTP服务。
|
29天前
|
弹性计算 人工智能 物联网
挖掘阿里云ECS的潜力:创意应用和未来可能性
在云厂商中,我觉得开发者更信赖阿里云的云产品,而且随着阿里云最近宣布云产品降价的消息,会有更多的开发者和企业选择阿里云的云产品。这里拿阿里云的云服务器来做说明,阿里云的云服务器ECS为用户提供了强大的计算资源和灵活的扩展性,使其成为搭建各种有趣和创意应用的理想平台。除了已知的小游戏、小程序和个人网盘等应用案例之外,本文还会进一步探讨ECS在特定场景下的实践经验,并挖掘其在其他领域的潜力,为大家带来更多创意和启发。
552 3
挖掘阿里云ECS的潜力:创意应用和未来可能性
|
30天前
|
缓存 运维 监控
应用研发平台EMAS 常见问题之用华为的推送界面阿里云收不到如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
382 2
|
1月前
|
消息中间件 编解码 运维
阿里云 Serverless 异步任务处理系统在数据分析领域的应用
本文主要介绍异步任务处理系统中的数据分析,函数计算异步任务最佳实践-Kafka ETL,函数计算异步任务最佳实践-音视频处理等。
175285 348
|
1月前
|
人工智能 DataWorks 数据可视化
心动基于阿里云DataWorks构建游戏行业通用大数据模型
心动游戏在阿里云上构建云原生大数据平台,基于DataWorks构建行业通用大数据模型,如玩家、产品、SDK、事件、发行等,满足各种不同的分析型应用的要求,如AI场景、风控场景、数据分析场景等。
332 1

热门文章

最新文章