随着玫琳凯美容顾问和使用玫琳凯美妆产品和调养产品的顾客极速增加,如何一以贯之地践行与分享玫琳凯的企业使命和价值观?如何更好地服务于用户?玫琳凯亟需通过互联网手段快速、有效、高频度地与美容顾问和顾客进行沟通。
需求与挑战
打造新应用的任务被分派到了玫琳凯的软件开发和基础架构团队,要求交付时间:4个月。对于玫琳凯的IT团队而言,这几乎是一项不可能完成的任务。从产品而言,完全从零开始,当开发团队接到任务时,APP的概要设计都尚未展开,有的只是产品经理几个脑海中一闪而过的念头;从基础架构而言,玫琳凯现有的数据中心基本都以运行和支撑内部应用为主,不足以支撑百万级用户规模的互联网应用。
玫琳凯的IT团队紧急邀请相关的合作伙伴一同研究方案与技术路线,而当时能提出的需求仅仅是:
- 应用前端基于iOS/Android,后端基于.NET
- 生产和开发测试环境均使用公有云IaaS平台(如果扩建内部数据中心,单是选型招投标采购流程可能都超过4个月)
- 应用必须微服务化,以适应不断变化的产品需求长达3个小时的脑力激荡,最后得出了以下几点方案:
- AWS作为IaaS平台(玫琳凯正在小规模部署AWS,验证公有云的可行性);
- 必须构建PaaS平台以抽象并隔离平台层,使开发团队摆脱构建、维护开发环境基础架构的工作,专心开发应用;
- PaaS平台应具有相当成熟的自动化运维能力,支撑基础架构团队快速交付开发所需的运行环境、数据库、消息以及其它的服务;
- 构建完整的持续集成/持续交付平台(CI/CD),进一步缩短从代码到产品的迭代周期,支持产品团队的快速验证、快速更新,降低试错的时间成本Pivotal作为PaaS平台合作伙伴和应用开发顾问,与玫琳凯一起开始了这段让美在云中绽放的旅程。
解决方案
对于玫琳凯的基础架构团队而言,尽快交付新应用所需的基础架构是一项艰巨的挑战。不仅仅是部署速度,信息安全、弹性、法规遵从等等一系列问题都需要在数周而不是数月内得到解决。如果说应用程序可以先专注于MVP(Minimal Valuable Product),那基础架构需要的是在第一天即足够健壮。
为了尽快满足所有的这些要求,玫琳凯不仅加快了AWS公有云的部署进度,更全面采用Pivotal成熟的PaaS云平台 Pivotal Cloud Foundry (PCF)。通过在IaaS 层(AWS)上部署完整的PaaS层(PCF),玫琳凯的基础架构团队将系统设计和部署的大部分工作由人工转变为依靠PCF自动调度、编排、管理和维护。资深的基础架构工程师的宝贵时间可以用于技术选择,规则和标准制订,数据库和其它服务的配置和计划等高级任务,而不再担心基础架构的可用性、可靠性、弹性、适应性等基础工作。

玫琳凯基础架构团队依靠PCF所独有的“4层高可用”特性向产品和开发部门提供了基础架构“生产级别”的高可用性和“永远在线”的用户体验。开发团队编写的符合“十二要素宣言”的应用模块无需通过与基础架构或平台耦合来向用户提供服务,并且,当需要扩展时,简单地自动或手动添加应用实例即可实现。

应用实例本身通过PCF自动编排功能被自复制后编排进不同的高可用区(Availability Zone)、不同的虚拟机(VMs)来保证最高级别的可用性和资源利用率。而这一切动作完全无需玫琳凯的运维或开发人员参与或手动干预。
通过以下的检测机制,PCF保证玫琳凯的应用具有最高的可用性和可扩展性:
- 当应用实例出现故障导致不可用时,PCF会自动侦测到故障并立即启动新的实例。同时,故障实例会立即被停止服务,所有相关请求会第一时间被重新路由到新的健康的实例。整个过程完全由PCF自动完成,无需人工干预。
- 当应用程序所在的虚机的管理插件故障时,PCF会自动重启故障的插件,应用程序完全不受影响。
- 如果应用实例所在的虚机宕机,PCF将自动将访问请求转发至其它(已经部署了同样应用实例的)虚机,同时重启故障虚机并重新部署应用实例。这一系列动作完全不会影响到应用程序的可用性,因为PCF已将同样的实例编排至多个不同虚机中并持续运行。并且单个VM的宕机不会影响到其它VM的正常运行。
- 如果整个AZ(可用区)停服,例如,AWS中国AZ-A整个停服,PCF将自动将访问请求重新路由至其它AZ,例如AWS 中国 AZ-B,并在该可用区内新增相应数量的虚机和应用实例,确保应用程序的性能、可访问性等不会受到影响。
在整个性能测试与预生产测试过程中,玫琳凯将上述场景测试了无数遍,“随时随地,想跑就跑”。而PCF的表现永远稳定、一致、可信赖。这使得运维人员再也不去担心系统本身的运行状况,而将时间花在更重要的工作上:监控平台运行指标(例如JMX指标),梳理日志,监测系统运行仪表板等。PCF帮助玫琳凯的IT团队从关注应用可用性和可靠性的繁杂工作中摆脱出来,“晚上可以安心睡觉”而无需担心应用崩溃或宕机。
而对于另一边的开发人员而言,借助PCF的容器化运行、预置运行环境和数据服务等特性,只需将写好的代码“cf push”到PCF平台上,平台自动完成打包,加载、连接、运行等一系列动作,一两分钟后,一个原生的云应用即可被访问。完全避免了原来为了得到合适的运行环境而需要与运维团队进行的大量、往复、低效率的沟通和等待,节省了大量的无效工作时间,大大提高了开发效率。

在开发过程中,我们容许失败,甚至鼓励一些有意义的失败。但无论是什么样的失败,都不能对生产环境产生影响。PCF帮助玫琳凯的IT团队搭建了额外的安全管控机制。无论是怎样的失败或错误(代码错误、功能不符、单元/集成测试不通过还是性能不达标),这些错误的代码或应用都无法通过CI/CD的测试关卡到达生产环境。即使是完全达标的应用,产品经理也可以使用PCF自带的蓝绿版本切换功能把新旧版本同时部署在线并进行用户测试,也可以方便地在任意时间点进行“渐进性”新旧版本的切换而不会影响应用的可用性。
玫琳凯的开发团队践行敏捷开发还包括了允许应用版本回滚。当使用者不满意新的功能或新功能不够有价值时,蓝绿切换功能同样提供了从新版本到旧版本的回滚机制。玫琳凯通过部署CI/CD管道来应用这一机制,使得当业务需要快速的功能验证或试错时,应用能够安全、快速地响应业务决策。
客户收益
降低软件成本
在PCF环境中,多个.NET的应用可以同时共享一套Windows Server,同时每个IIS服务器都是互相隔离的,这样既显著提高了Windows Server的使用率,由不会产生由于共享而应用间互相干扰,抢占资源的问题。与没有PCF的部署方式相比,新的部署方式在得到更高的灵活性和部署密度的同时大大降低了软件获取成本。
提升应用的可用性和稳定性
以上种种,使玫琳凯不仅显著提升了生产环境中应用的可用性、稳定性,并且使得业务部门能随时随地将需求转变为产品功能,无须漫长的等待,更无需“计划性的”停机窗口。这也是玫琳凯选择牵手Pivotal帮助其数字化转型,使玫琳凯更好的服务更多女性,丰富女性人生,同时践行其一贯的帮助员工生活/工作平衡宗旨的原因。
“凭借部署与实施Pivotal Cloud Foundry 平台,玫琳凯(中国)拥有了新一代软件工程CI(持续系统);CD(持续交付)能力,极大的改善了云端应用程序发布效率和质量。相比原先传统数据数据中心的应用程序发布,在PCF上,我们实现了100%自动化应用程序发布;蓝绿部署;成功发布效率提高了10倍!
--玫琳凯IT基础架构经理Steven
非常感谢与Pivotal的合作。按时完成了业务部署,并且整个玫琳凯应用团队在技术和思维都真正进入到云的时代。--玫琳凯应用开发经理荣凯