妈妈帮上云之路:云上平台架构与运维实践

摘要:本次阿里云云栖社区行业圆桌论坛上,妈妈帮平台开发总监胡兴邦、妈妈帮运维主管张楠、阿里云业务架构师刘欣(花名:昕晖)与阿里云MongoDB高级技术专家杨成虎(花名:叶翔)共同探讨了妈妈帮的上云实践之路,云上架构设计、数据库选型、安全运维实践以及在这个过程中阿里云如何帮助妈妈帮解决遇到的问题。对话行业大咖,引领云端科技,畅谈云上话题,尽在阿里云云栖社区行业圆桌论坛。

以下内容根据阿里云行业圆桌论坛视频整理而成。视频传送门,点这里哟

本期嘉宾介绍:
胡兴邦,妈妈帮平台开发总监;
张楠,妈妈帮运维主管;
刘欣(花名:昕晖),阿里云业务架构师;
杨成虎(花名:叶翔),阿里云MongoDB高级技术专家。

妈妈帮技术团队概况
妈妈帮技术平台总监胡兴邦首先简单介绍了妈妈帮平台开发技术团队的情况。目前妈妈帮的平台开发有两个小组,一个小组负责运维,另一个小组负责架构,两个开发小组主要是为妈妈帮提供稳定的技术支撑,为数据量提供横向扩展,提高开发效率,并提供一些公用的组件。妈妈帮运维负责人张楠也谈到运维团队主要负责网络以及服务器的运维,所做的主要工作就是支撑妈妈帮的正常运行。

什么是业务架构师
大家可能对于架构师这个词很熟悉,然而对于业务架构师而言,很多人并不了解。本次圆桌论坛上也请到了阿里云业务架构师昕晖进行分享。昕晖谈到对于业务架构师而言,所发挥的作用一方面是对于阿里云的产品和服务进行传递,也就是将阿里云的产品和解决方案的知识传递给客户;而业务两个字就代表了业务架构师的另外一部分工作,就是需要去根据客户所处行业的特性,利用阿里云的技术产品和解决方案去解决用户在行业中遇到的特定的技术和业务问题,所以业务架构师是技术和商业的结合。

妈妈帮上云之路
胡兴邦谈到妈妈帮是从2016年11月份开始上云的,而其实在2016年上半年的时候,妈妈帮就已经开始对于市场上的云服务提供商进行考察了,在2016年10月份最终决定选择阿里云。

对于妈妈帮而言,在开始上云的时候是否存在着一些顾虑呢?
胡兴邦谈到其实妈妈帮在开始上云的时候也会存在着一些顾虑,主要集中在以下两个方面:
  1. 云的稳定性;
  2. 云的安全性,以及在出现故障的时候,阿里云方面的响应效率问题。

因为在之前妈妈帮使用的是自建的IDC,从表面上看起来是可以直接触达机房和机器的,所以在感觉上会认为对于机器的把控性是比较强的,同样也希望在上云之后阿里云能够保证稳定性和故障出现时的响应效率。


在成本方面,妈妈帮上云之前和上云之后相比是怎样的呢?

在上云初期妈妈帮进行成本预期的时候认为上云之后成本上升20%以内都是可以接受的,但是最终计算下来上云之后的成本与原来基本持平。关于上云之前妈妈帮的运维成本,胡兴邦谈到主要来自于以下几个方面:

  1. 硬成本,也就是支付给IDC机房的电费、机架和机柜的费用以及给网络运营商的网络带宽租赁费用。
  2. 隐形的成本,主要就是运维人员的成本,这部分也包括了运维人员的学习成本,因为运维人员往往需要学习像Redis以及MQ等产品和技术的新的知识。
  3. 机会成本和对业务进行支撑的时间成本,如果运维的效率越高,组件的稳定性会更强,那么对于业务进行支撑的时间就会越短,而业务会运行得更稳健,效率会更高。
总之,对于成本而言,不只包括物料的成本,还需要包括横向的影响因素,甚至是对于业务的价值等,比如业务受到影响也会导致成本的上升。所以需要保证一切以业务优先,绝对不能让运维拖业务的后腿。

阿里云能为用户提供稳定安全的云上环境
作为业务架构师的昕晖已经为很多阿里云用户提供过服务,昕晖谈到这些问题其实是互联网公司的一个普遍的顾虑。其实对于包括妈妈帮在内很多互联网公司的业务而言,往往都需要7x24小时不间断地对外提供服务,所以即使业务有一分钟的中断,都将会对用户造成比较大的伤害,而对于客户的业务的影响也会是巨大的。针对于这个方面,阿里云所提供的服务其实有非常多用处,而且阿里云在整个基础体系架构上对于冗余以及容灾方面进行了很多的设计和考虑,所以整个平台的稳定性是有保障的。其次,阿里云现在的产品能够帮助用户很容易地实现同城容灾以及异地容灾的架构,比如像阿里云的SLB,就可以支持多可用区,用户可以将服务器放在多个可用区,从而方便地实现同城容灾,这就是阿里云产品体系上对于容灾的支持。第三个方面,在故障响应方面,阿里云的整个故障响应通道在业界是处于领先地位的,可以看到每次出现故障,阿里云总能在第一时间就发布公告。另外如果客户遇到一些技术问题,比如网站不能访问或者停止服务了,可以通过电话或者工单的方式找到阿里云的后台技术支持,后台的业务架构师会第一时间协调售后和产品研发帮助客户定位、排查并解决技术问题,所以从整个服务保证、售后流程以及服务稳定性等方面,阿里云都拥有强大的保障能力。

弹性配置帮助客户降低成本
在上云的成本方面,首先对于资源成本而言,阿里云的架构上做了很多冗余的设计的,这样单纯看成本的话,可能看上去会更高一些,但是随着阿里云市场规模的继续扩大,以及技术红利不断释放,用户使用云计算的成本一定会有所下降的。另外,因为云计算具有弹性伸缩的特点,而互联网业务的流量也存在波峰和波谷的周期性变化,所以云计算能够帮助客户充分利用弹性最大程度地利用资源,而不需要针对于峰值配置资源量,也就是说客户可以依靠云计算的弹性来降低成本,这一点随着用户继续深入地使用会体会得更加深刻。

刚才提到一点就是减少运维人员的成本,其实在很多上云的公司中,首先提出反对意见的应该就是运维人员,因为运维人员可能觉得上云后很多服务都依靠云实现了,运维人员的价值就会降低了,那么作为运维主管的张楠在妈妈帮决定上云时是什么样的想法呢?

张楠谈到从他自身的角度而言,是不存在上面提到的这种顾虑的。张楠认为运维应该将更多的精力从对于底层设备的维护转到对于业务的支撑上面去,这样才能使得运维具有更高的价值。张楠谈到还谈到虽然在未来确实可能出现云服务和产品代替一些运维技术工作的情况,但是运维人员角色的变化还是好的,这样的变化能够从一定程度上提高运维人员的内在价值。

那么在妈妈帮向云上迁移的过程中遇到了哪些问题或者困难呢?

对于妈妈帮迁移上云过程中遇到的问题,胡兴邦谈到了在将图片数据向OSS迁移的过程中,之前是自动对于图片进行缩放的,因为APP对于图片的缩放的变化比较多,所以之前实现了根据图片的地址源信息自动地对图片进行缩放,并且这个缩放规则是技术团队自己确定的,而当迁移到OSS之后,由于阿里云OSS在地址信息里面有一些对于图片裁剪以及缩放的处理规则,这样就会导致两个信息不匹配,所以在进行开发时需要进行小的改动来适配这部分。

业务架构师如何帮助客户上云

昕晖也谈到作为业务架构师在帮助客户上云的过程中会做以下几项工作来解决客户所遇到的困难:
  1. 对于阿里云的产品和解决方案进行知识传递,帮助客户结合之前的技术架构以及使用的产品情况做出一些推荐和选型,帮助客户将适合自身开发和运维特性的阿里云产品使用起来。
  2. 结合客户在线下的架构,帮助客户设计云上的架构,并考虑到容灾以及将来的可扩展性,在架构上配合客户进行优化和升级。
  3. 把阿里云的生态合作伙伴引入进来,帮助客户提升向云上迁移的效率。比如像MongoDB中大量数据的搬迁,阿里云就会引入很多合作伙伴进行硬盘的传送,来加速客户上云效率,再比如与网络运营商合作来为客户提供专线的接入支持等。

在平滑上云的设计中主要会考虑到哪些问题呢?

胡兴邦谈到第一点也是最重要的一点就是对于服务的平滑迁移,需要保证在服务不中断的情况下,向云上进行迁移。除此之外,还需要保证迁移之后能够进行横向扩展,所以对于之后运维规范性和安全性都会考虑进去。胡兴邦还谈到其实妈妈帮为了预防上云之后会出现一些不可预知的问题,为了保证业务的稳定性,目前使用的是IDC与阿里云相结合的双活架构方式,保证阿里云和IDC其中一方中断不会影响妈妈帮正常地提供服务。

妈妈帮目前使用的云产品和服务

阿里云有各种各样的云产品,而对于技术而言,也是条条大路通罗马,所以想达到同样的业务目的,可能有多种的产品可以达到预期目标,那么对于妈妈帮而言,对于云产品的选择有哪些考量呢?
胡兴邦谈到,妈妈帮目前使用到的阿里云的产品还是比较多的,像之前提到的SLB、云服务器ECS、OSS、MemCache以及Redis等,而且未来还将引入阿里云的MongoDB数据库服务。最近一年阿里云的产品线增长得非常迅速,所以妈妈帮在选择产品的过程中也存在了一定的对比性,主要会从两个方面进行考虑,首先是对于目前自身所使用的服务进行一定的考察,同时也会对于阿里云目前正在提供的一些产品以及线上的服务进行考察,通过这两部分的调研选择出最匹配的并且最符合对应关系的产品。除此之外,胡兴邦还谈到如果妈妈帮自身对于一些问题还不是特别清楚就会和阿里云的业务架构师进行沟通,将遇到的一些问题和场景抛给阿里云的业务架构师,让他们给出一些最佳实践或者方案,之后再进行向云上的迁移。

作为业务架构师,对于妈妈帮选择产品时有哪些建议呢?

昕晖谈到一般而言业务架构师在帮助用户选择云产品和服务时主要会从以下几个方面进行考虑:
  1. 阿里云产品支撑的成熟度,阿里云会根据产品的商业化的时间以及成熟度情况向用户进行推荐。
  2. 客户需要支撑的技术特性,包括上对于架构上的以及业务上的扩展性等特性。阿里云会从这些角度考虑为客户推荐产品,使得客户能够在平滑地迁移上云的同时也照顾到未来的扩展性,并且尽可能地降低客户上云的改造成本。
  3. 阿里云还会更多地考虑客户未来的业务,比如未来客户可能去做大数据以及其他一些扩展性的业务,这时候就会为用户推荐一些大数据解决方案以及SaaS化的服务,进而节省客户自己进行研发的成本。

虽然阿里云已经在最大可能上帮助客户向云上进行平滑迁移,但是还是会在某些案例中出现阿里云目前还没有能够满足客户相应需求的产品或者服务的情况,那么这样的情况下应该怎样做呢?

昕晖谈到针对于目前有可能用户还会需要一些阿里云还没有的产品的情况,作为业务架构师一般会给出两种建议:一种方式就是建议用户在阿里云的ECS上部署自己开发的产品,另外一种方式就是阿里云会结合市场分析判断这样的产品是不是通用型的业务需求,如果的确是通用型的业务需求,阿里云就会分析竞争对手的业务情况以及商业化能够带来的价值,之后在整个阿里巴巴集团内部寻找能够进行研发的资源和团队,进而推进相应产品和服务的商业化。这也是业务架构师的一部分职责所在,就是将市场需求总结抽象成为产品需求并反馈给产品和研发团队。

妈妈帮云上架构

胡兴邦介绍妈妈帮作为比较典型的互联网公司,架构设计的从前到后都使用了阿里云的一些产品和服务,最前面使用了CDN进行加速,之后就是负载均衡调度,然后就是ECS上的Nginx服务器。后面接着是应用层,再之后就就使用了MemCache以及Redis这些服务,最底层就是数据库这部分,目前主要是MongoDB,妈妈帮90%的数据都存储在MongoDB上,剩余的10%存储在MySQL上。

妈妈帮MongoDB使用历史

胡兴邦谈到妈妈帮从2012年12月份圣诞节那天MongoDB就开始正式上线了,当时使用的是单台机器单节点的MongoDB数据库。后来随着业务的发展,发现数据量的读取开始出现了问题,接下来对数据库使用了主从策略,但是主从策略是有一定的缺陷性的,因为无法实现自动切换。之后妈妈帮又做了复制型的数据库,但是紧接着又发现复制型数据库也会带来问题,会出现全局锁对性能产生影响的问题,所以之后又将一些库拆分到多个节点上,保证写和更新的性能会比较好。由于单表的压力会比较大,后面又对于存储层进行了相应的处理。

无论是使用MongoDB还是一些其他的产品,总会多多少少遇到一些问题,而妈妈帮经过了这么多年,还是坚持使用MongoDB。胡兴邦谈到妈妈帮坚持下来使用MongoDB其实有多方面的原因,一方面其实数据库转型之后往往会带来更多的问题,因为MongoDB与结构化数据根本上就是schema机制不一样,传统的数据库比如MySQL是有严格的schema的,这样造成了如果数据库转型的话在数据结构性上会造成很大的问题。另外一方面,MongoDB还是有很多优点的,它最大的优点就是具有强大的性能。除此之外,MongoDB在设计之初就是为了适应分布式系统集群的,传统的关系型数据库像MySQL就不能非常好地支持分布式存储。

对于阿里云MongoDB有什么样的要求或者期待呢?

胡兴邦谈到对于阿里云MongoDB最期待的就是稳定性的提升。妈妈帮在数据库上可以说是一路坎坷地支持着MongoDB,但是目前MongoDB的稳定性问题还是比较突出的。此外,还希望在数据备份、恢复以及运维工具上面阿里云能够提供更多的特性来更好地支持开发和运维。

上云为运维工作带来的变化

张楠谈到上云之前,运维人员需要花费很多精力放在底层设备、技术搭建以及维护上。上云之后则会将主要精力都放在对于性能的优化,对于高可用更多的关注以及如何更快更好地支持业务的发展这部分。

对于运维负责人而言,上云之后有什么样的技术上的帮助和成长呢?

张楠谈到上云对于运维人员来说当然会有一些帮助,正如昕晖提到的在传统IDC里面做同城灾备是一个成本非常高并且技术难度非常大的工作,但是使用了阿里云之后,阿里云就会提供很多方案帮助实现同城灾备。除此之外,运维人员还会接触到一些新的组件,学习到新的技术和知识。

妈妈帮目前日访问量已经超过了百万量级,那么在这种访问量的情况下,有什么样的运维经验或者心得可以进行分享吗?

胡兴邦谈到自己曾经带过一段时间的运维团队,运维经验总结下来就是需要胆大心细,同时能够及时发现问题并且将问题遏制在摇篮之中。

妈妈帮对于安全问题的思考

近期发生了几起成为热点的数据安全问题,比方GitLab数据库被删除事件以及炉石传说数据库问题以及MongoDB黑客赎金事件,那么妈妈帮对于这些事件有什么样的思考呢?
胡兴邦谈到妈妈帮虽然没有遇到过被勒索的情况,但是流量攻击、CDN攻击还是经历过很多的,妈妈帮技术团队主要会从以下三个方面进行安全防范:
  1. 运维团队会将包括IP在内的所有的对外端口都进行收敛,最小化范围内公开端口以及IP等信息。
  2. 培训业务人员在业务层进行安全层面的控制。
  3. 与第三方安全公司进行合作,定期进行安全性扫描并提供安全报告,有助于去修复这些问题。

阿里云作为云安全服务提供商,有哪些安全产品和服务能提供给像妈妈帮这样的企业呢?

昕晖谈到其实很多互联网初创企业在安全方面做得不是特别完善,这样就会导致很多的安全问题。而阿里云目前有一款产品叫做先知计划,这款产品是由经过阿里云认证的白帽子去帮助客户对系统进行漏洞扫描和发现,并且以悬赏的机制进行付费,这是一种性价比非常高的安全检测解决办法,目前来说先知计划在业界内的口碑非常好,使用过客户都是非常推荐的。另外,云盾中也有一款产品非常适合互联网电商业务,就是WAF——Web应用防火墙,它在防止CC攻击以及短信接口盗发以及防止网络爬虫方面的表现都非常出众,所以也是对于互联网电商用户非常推荐的产品。当然阿里云还有其他的安全产品,比如像高防等。

GitLab删库事件也引出了新的话题就是数据库备份的有效性,那么对于妈妈帮的运维团队而言,是如何管理数据库备份的呢?

张楠谈到之前妈妈帮也发现数据库备份策略存在着一些问题,所以看到GitLab等事件发生的时候也会有一些担忧,于是春节后就对数据库备份进行了有效性检查。

叶翔也谈到阿里云作为数据库服务提供商,其实在数据库备份上也做了很多工作,实现了比如像增量备份时间恢复等功能,但是正如之前提到的有备份和备份能不能使用其实是两回事情,所以做好有效性检查其实是更难的一件事情。

妈妈帮大数据战略规划

妈妈帮作为母婴类的生活服务平台,那么肯定会有很多用户产生的内容数据,那么妈妈帮在大数据上有哪些规划呢?

胡兴邦谈到大数据是妈妈帮比较看重的一部分,目前用户产生的数据主要是UGC,后面希望为客户提供更丰富的内容。对于母婴品牌而言,可能用户最需要的是与孕期相关的一些知识,未来希望能为准妈妈们提供美食、美妆、旅游以及摄影等各个方面的内容供用户阅读,所以需要更详细地对用户进行画像,通过数据的更新更加深入地了解用户的爱好、性格以及品味等,通过更加精确的建模为用户提供更精细化的服务和产品,更好地服务于个性化的用户。

技术管理经验和对于运维同学的建议

最后胡兴邦分享了一些技术管理方面的经验,他谈到作为技术管理者,需要帮助团队中的每个成员找到成就感。其实每个人在工作时都需要有自我的成就感,这就是对自己的一种奖励,通过成就感这样的奖励就可以形成正反馈,可以使自己对工作产生更浓的兴趣,无论是做产品还是开发都是一样的,这款产品有更多的人使用,能够影响几千万用户改变对于育儿观的认知,或者是开发了一个类库能够帮助团队提高效率,更好地进行开发,都会产生成就感。当成就感提升之后,团队成员就会以更高的效率投入到工作中去,也就会更好地提高自身的技术水平。

张楠也分享了对于运维同学的建议,他谈到虽然近些年技术发展比较迅速,但是想要做好运维就需要脚踏实地,将技术基础打牢,另外一方面还需要抬头看天,看清技术的发展形势,更快地成长。

昕晖在最后也谈到对于妈妈帮的寄语:母婴是垂直电商中一个非常有前景的行业,妈妈帮在内容运营方面已经做得非常好了,并且也开始有业务泛化的场景,希望在未来妈妈帮的业务能够蒸蒸日上,更好地使用阿里云的产品和服务,而阿里云的技术团队也会更好地为妈妈帮提供技术支持。
上一篇:《Storm企业级应用:实战、运维和调优》——2.3 安装部署Storm集群


下一篇:SQL优化常用方法49