3.1 7×24小时云服务的挑战
云服务有它独特的优势,与传统软件相比,它由专业技术、服务人员集中提供服务,在保证服务质量的同时,由于其专业和规模效益,成本更低,使用更加方便;也正是由于这一特点,使得云服务软件与传统软件有着本质的区别。
3.1.1 传统企业服务软件与云服务软件对比
传统IT服务软件,其对象是一家企业,用户是一家企业的雇员,有十万以上员工的企业就很稀少了;而云服务,目标是服务于以万计的企业,用户量以千万计,如腾讯、360等云服务提供者,用户数量以亿计,因此大用户量、高并发是云服务软件要考虑的首要需求。
大量用户同时在线对云服务的稳定性提出了非常高的要求。对于一个企业内部软件,中断服务影响可以预估,而对云服务,中断服务影响的是数以万计的企业,其影响范围扩大、处理难度极大提高,这就对可靠性提出了更高的要求,需要系统达到99.99%或更高的可用度。目前,互联网免费网站的稳定性一般低于99.9%,如果对于B2B的收费服务,则必须达到99.99%以上。表3-1所示为服务的可用性指标。
而多用户的特点,也决定了云服务软件要具有另一个不同特点,即功能、流程的高度可配置性;传统IT服务软件,软件为特定客户部署,可以根据客户需求配置或二次开发,以满足不同客户的特定需求,而云服务软件集中部署,同时供许多客户使用,系统配置不再是静态的,而要根据不同用户,选择不同配置,系统功能要方便地根据用户需要配置,同时满足数以万计客户的使用。
此外,云服务用户是逐步积累起来的,这就要求随着用户增加,系统能够通过增加部署来提升系统容量,传统IT服务软件也有当企业规模扩大,通过部署提升容量的需求,但一般通过系统升级来做到,而云服务系统则要求更高,首先是系统扩容的频度比企业IT服务软件要高很多,其次是数据量随着企业增加,呈现爆炸性提升,因此如果不在架构时就考虑扩张,随着系统用户增加,并发压力增大,必将导致灾难性结果,因此如何设计高伸缩性架构也是云服务架构的一个关键点。
互联网云服务,许多企业也许是相互竞争的对手,共享一个服务,数据都存储在服务提供者处,用户通过互联网访问,这与传统软件数据保存在企业内部,访问仅仅来自内网相比,安全性要求有了极大提高,如何保障用户数据安全,保证只有授权用户可以访问相应数据,是互联网云服务成败的关键之一。
云服务与传统软件的比较如表3-2所示。
表3-1 可用性指标
表3-2 云服务与传统软件的比较
3.1.2 特性化与统一服务
云服务是借助互联网向不同用户提供服务,是通过一个统一服务软件系统,服务于大量客户,而每个客户对服务有着不同的要求,这就要求在统一服务的前提下,需要支持用户个性化需求,传统软件服务于一家企业,在部署时配置功能和流程满足该企业需求即可,这些配置是系统级的、静态的。
云服务对于不同用户,配置各不相同,用户可以根据自己的喜好配置服务,这些配置往往是每个用户都有不同要求,在该用户使用过程中有效,而且随时可能更改,因此配置是分级的、动态的。
云服务配置分层为系统级配置、客户级(企业级)、用户级配置,相较传统软件复杂度明显不同。
对于传统IT软件,企业有自己的IT人员服务、支持单个部署运行,而云服务系统是集中部署,服务于数以万计的企业客户,因此对于服务支持系统要求较高,如果只简单地将各个企业IT人员统一集中,显然不能为服务企业提供更专业且低成本的服务,因此在设计系统时,要同时考虑到运营服务支持的需求。
3.1.3 面向运营及服务系统功能
云服务要求的是电信运营级(Carrier Grade)的服务,因此运营维护和服务需求是软件基础需求的一部分。相较于传统软件,要设计专门的服务和技术运营系统,有专门的运营、服务团队,通过软件提供的技术运营和服务功能,快速响应用户请求。这与传统软件有着不同的要求,传统软件用户维护,通过提供系统诊断数据,用户遇到问题时先是自己的IT人员自己解决,然后是请求支持,因此服务一般面对的是IT人员,属于专业人员,云服务的服务团队直接面对的是用户,一般不是专业人员,对问题的描述是表象性的,需要尽快定位,需要更多数据和证据,以提升服务、技术运营团队的效率。
此外,技术运营系统还要面对客户,如前面提到的,一家服务提供者整合云服务面对最终客户,在服务过程中出现问题,其服务人员要有方法定位问题,需要整合服务和维护服务系统。除此之外,云服务的PaaS和IaaS,当用户部署服务后,通过服务平台对其部署服务进行维护和问题分析,也是必不可少的工作。
3.1.4 IT管理与服务监控
云服务同传统软件一样,需要IT管理与监控系统,但其要求比传统软件要高许多,主要是用户量和接入复杂,在判断问题时因素更多。因此,监控本身就是一个大系统,数据量大,分析复杂,而且用户访问行为记录不仅仅对技术运营判断问题有用,对于分析用户行为、改进系统也是非常重要的。
快速问题处理与错误恢复能力的要求,特别是对错误恢复时间要求更高,这需要在设计时考虑系统失败环节的恢复方式及对技术运营执行工作的支持。