随着云计算浪潮的推动,技术架构云化已经成为大势所趋。特别是最近由CNCF推进的云原生概念,将符合云原生标准的各类开源技术方案推向了史无前例的高度。在这一波浪潮的推进下,愈来愈多的企业开始了自身的数字化征程,逐步将本身的IT基础设施往云上迁移。Web应用托管服务(Web+) 正是在这一波浪潮下应运而生的黑科技产品——以应用为中心,为应用编排所需的云资源,并将中间件团队支持近千家企业客户上云时遇到各种问题的解决办法,造成一套最佳实践沉淀到这个产品中呈现给你们。这篇文章,就将逐一贯你们揭秘隐藏在这个产品背后的十个最佳实践。数据库
基础设施即代码,简言之就是用代码或配置文件来声明应用系统使用的基础设施资源。云计算技术发展到如今,基础设施即服务(IaaS)能力已经变得很是成熟了,其能托管的底层资源也愈来愈丰富,从计算资源、网络资源、存储资源到大数据资源、区块链资源以及人工智能资源等等,均可以做为基础设施被按需取用。所以也产生一个问题,就是云资源的使用变得愈来愈复杂,门槛愈来愈高,一个复杂一点的业务系统动辄集成十几个云计算产品是很是常见的状况。不只如此,这些资源应该如何被编排与使用,有时须要富有云架构管理经验的人员辅助才能得以顺畅实施。这些都严重加重了云计算能力向中小用户渗透的难度,致使发展受阻。而基础设施即代码能够很是优雅的解决这个问题,用户再也不须要手动管理基础设施,而只须要以代码的方式提交对资源的声明,即可由系统自动完成对资源的建立、编排与配置,极大下降了云产品的使用难度。并且一套符合标准的基础设施即代码文档是能够被分发及复用的,这有助于打破云厂商之间的产品界限,促进计算技术的革新与发展。缓存
提到云计算,咱们都会想到其低廉的价格和按需使用的特性,所以按量付费也理应成为云计算产品的主流付费方式。设想假若用户购买了一台以包年包月方式计费的云产品,他该如何才能作到按需使用呢?尤为是遇到弹性伸缩这种场景——系统所使用的计算资源会随着访问量的大小而自动扩容或缩容,包年包月的付费方式显然没办法如此灵活,并且也与云计算倡导的按需取用的理念相违背。可是,包年包月的付费方式显然也有其吸引人的一面,那即是价格优点——一般来讲都会比按量付费要便宜。这也很是容易解释,把包年包月看成是按量付费的一种批发形式就不难理解其价格差别了。那么是否存在一种付费方式,既不违背按需取用的云计算精神,又可以帮助用户节约成本呢?这即是预留实例。咱们能够把预留实例想象成游戏机室使用的游戏代币,买得越多越便宜。而想要玩某一台游戏机的时候,仅需支付若干枚代币便可。预留实例也是这个原理。用户须要购买1年或更长时间的预留实例以得到优惠,而这个预留实例能够用来抵扣按量付费产品产生的费用,也就是说若是使用了一个小时,那么就会从预留实例中扣除一个小时的费用,直到消耗完毕。安全
在The Twelve-Factor App的第三部分就提到了与配置有关的原则。本文所说的配置能够涵盖很是普遍的概念,除了狭隘意义上的应用程序配置文件,上文中提到的基础设施即服务的有关文档也能够属于配置的一部分。服务器
配置与代码分离。代码做为应用系统的构建来源,天然与产出物是密不可分的。咱们一般将应用程序或软件包称做为“构件”也具备这层含义——即经过代码编译而造成的组件。从版本管理的角度来看,代码能够被认为是具备不可变属性的,代码的变动一般意味着版本的升级。若是代码变动与版本升级之间脱离关系,必然会形成软件版本的混乱,给交付、部署和运维带来困难。而配置却不尽相同,虽然各类最佳实践也是建议将配置以版本化的方式来管理,可是配置与代码分离管理,是更好的解决方案。由于配置的变动与代码的变动不必定是同步的,切换某台主机的IP地址,更改某个数据库链接池大小等等,这些都不依赖代码的变动,也就是说在同一个版本的软件包上能够应用不一样的配置。在微服务领域,系统配置一般会由一个独立的配置中心服务来维护,其负责管理配置变动、配置版本以及配置推送,无论应用部署的是哪一个版本,只要需求和环境不发生变动,配置就能够始终复用。网络
配置与环境共存。虽然配置不依赖代码而存在,但其与环境的关系倒是很是密切的。举个简单的例子,一个应用系统从开发到上线一般都会存在开发环境、测试环境、预发环境以及线上环境等,而每一个环境的配置可能都是不一样的。例如测试环境无需高可用,性能也不用特别优化,基本上知足系统可以运行起来就够了。而线上环境就须要保证高可用、高性能与稳定性,天然环境配置也不相同。假若咱们把系统环境中的全部配置都固化下来,那么这份配置与环境就是彻底映射的了,即使环境被销毁,咱们也能够经过这个配置从新启动一套如出一辙的环境,这就是配置与环境共存的含义。架构
安全是个很大的话题,一般来讲没有绝对意义上的安全,也没有单方面的安全责任,只要有互联网存在安全就是永远不能回避的问题。从功能设计到代码实现、从系统架构到部署实施、从底层资源到上层业务、从数据存储到业务流程,每一个环节均可能会有被侵入的风险,所以安全须要是客户与厂商共建的系统性能力。可是无论怎么样,有两件最基础的事情,咱们能够先作好:1)作好数据安全;2)作好安全审计;以云产品为例子,请见下图:
首先:数据安全是用户最为担忧的问题,咱们建议从上传开始,不用流转太多的服务,就利用云存储的能力,直接到达您的“家里”。
其次:全部须要针对机器下发的指令,建议走云厂商提供的正规通道,这么作的一个很重要的理由就是能够作到能够控制权限,也能够作到审计。运维
承上文,之因此可以实现数据链路的彻底隔离,还要得益于实例访问角色的支持。简单来讲,运行在主机实例上的应用默认是没有办法直接访问用户的其余资源的(图中主机实例从共享存储中读取数据的链路)。想要实现此目标的办法有两种。一种是将用户帐号的AK/SK配置到应用中,让应用以该帐号的权限访问用户资源。这种办法的优点就是简单易用,仅需生成并配置AK/SK,再经过API进行访问便可,几乎没有什么额外的开发成本。但其劣势也是很是明显的,即该AK/SK存在泄漏的风险,一旦泄漏,非法用户即可以使用该组AK/SK访问用户的任何受权资源,结果将很是危险。另外一种办法就是经过实例访问角色,将访问用户资源的权限受权给主机实例的服务帐号,再由该帐号访问用户的资源,这种机制从如下三点保证了安全性:分布式
计算与存储分离,便是一种架构理念的革新,也是一种运维习惯的转变。在架构上,咱们推荐您尽可能将服务用的计算集群与数据存储用的存储集群进行隔离。这样一来,咱们针对计算集群只须要作简单的扩容,就能应对特定场景下流量的突增;而同时,针对存储集群作针对性保护。在运维上,计算集群与存储集群也须要分开部署,由于不少状况下不是同一组人员在维护计算与存储集群。
在云上,经常使用的数据服务如:缓存、日志、数据库、分布式存储和云盘等,已经可以知足绝大部分的业务须要了,而针对特定场景(如大数据和NoSQL等)云厂商也提供了相应的解决方案。这些成熟的方案,能够为您解决部署、运维、数据同步和备份等诸多问题。微服务
云计算带来的资源革命,主要体如今对待资源的申请方式上,即:从以前的什么都规划好到按需申请、按量访问,尽可能利用云的弹性能力得到最高的利用率。因此在云时代,咱们推荐是须要资源的时候就按需申请,不须要的时候就归还回去。这意味着,不推荐一上来就使用很大规格的机器,而是先申请一台较小规模的,等到须要的时候再扩容。由多台小规格机器组成的服务集群,比单一一台大规格的机器,既方便伸缩,也可以获取更多资源(如:带宽和磁盘等),更重要的是它会让您的服务自然具备高可用的能力。工具
每个服务须要对外提供服务时,若是是一个集群,须要以统一的出口对外,这个时候须要用到SLB的能力。阿里云的SLB目前由统一的集群负责,能够实现四层、七层的转发。随着您的应用个数或者对外暴露的服务愈来愈多,能够选择复用SLB——即选择同一个SLB ,使用域名或者URL的方式,将流量转发到不一样的服务器组,以下图所示:
这样作有两个好处:
一、安全:减小对外暴露IP个数,加强整个服务集群的安全性。
二、节约成本:复用SLB能够最大限度的利用到单个SLB的带宽,由于SLB的费用主要依赖实例个数和对外流量。
高可用这个话题若是从广义上说,从代码编写、软件设计、部署架构都会或多或少的影响到服务的高可用,咱们这一小节主要是讲部署结构。传统意义上的高可用,体如今部署结构上主要有:同城容灾、异地多活、两地三中心等常见的架构。而异地多活和两地三中心牵涉到更多的是须要自身业务架构师调整架构设计,其中很难处理的如数据同步与服务切换,就与业务有着莫大的干系,这些都须要业务团队针对自身的架构特色有专门的工具来作支撑才能完美支持。不过同城容灾在云上是很好作到的,具体来讲,咱们能够从如下三个方面讨论。
一、流量高可用:不过既然是集群,就须要保持高可用的能力,咱们推荐您在开SLB时选择 “多可用区” 的模式让其具有此的能力。
二、存储高可用:存储节点以阿里云的RDS为例,自己就自带了主备、集群等高可用的模式,若是选择主备模式,默承认以作到跨可用区的同城容灾模式。并且,云上提供的几乎全部的数据服务,都会带备份的功能。
三、计算高可用:若是存储和计算分离以后,计算节点的高可用方式,能够直接根据可用区均匀分布;虽然可用区之间物理上有必定隔离,可是不影响访问速度。
集群规模在某个数量之内的时候,咱们查看监控与日志的成本都是能够接受的,当咱们的规模超过某个数量(好比:3)台以上,甚至是一个微服务的大集群后,应用维度的日志查看、分析聚合甚至诊断、以及监控报警会瞬间变得迫在眉睫。业内针对这些领域,都有对应的开源的方案,如:日志聚合的ELK,监控报警的Zabbix、诊断领域有各类类型的APM产品。
阿里云上对应的领域也有对应的开源产品的商业化解决方案,如日志服务SLS、APM产品ARMS 、云监控等等。咱们推荐使用这些成熟的有人兜底的方案,免去本身运维与搭建的烦恼。
云产品Web应用托管服务(Web+) 的产品设计,正是默认给咱们的客户提供了上述十点的最佳实践,全力相助您在上云之路上走的更加的顺畅,产品永久免费,目前正在公测阶段,欢迎体验。
原文连接 本文为云栖社区原创内容,未经容许不得转载。