我们分享了现代化门户网站体系结构的经验,这使产品便捷,稳定和容错成为可能:流量从35万增加到700万用户! 对于打算扩展产品的人来说,这个故事将很有用。 首先,我们将研究哪些因素会干扰Web门户的工作和开发:
- 过时。 随着时间的流逝,可用性方法,对不同设备的适应性,基本外观和结构不再满足观众的需求。
- 技术过时。 Web标准和技术正在不断发展。 更改会影响开发人员工具(例如,框架,数据库,其他软件)以及网络的基础。 从相对较新的时代开始-从http到https的大规模过渡以及对旧DNS的支持被放弃。
- 错误和崩溃。 开发人员可能无法完美地完成任务并允许出现缺陷。 结果,可能会发生违反站点的情况-首先,在系统完全失效之前,按钮第一次不会起作用。
案例有一个客户与我们联系,该客户的门户网站需要进一步开发。 在某个时刻,每月达到35万独立访问者的上限。 这似乎是不够的-该项目显然具有前景,我们必须找出阻碍进一步扩展资源的确切方式。
稽核原来,旧的Bitrix引擎无法适应负载和缩放比例。 系统的每个组件都紧密相交,并且相互依赖。 不断修复错误是一项艰巨的任务,我们提出了一种灵活且易于理解的微服务架构。 在它们中,每个组件都足够独立,以使其中的错误不会“损害”系统的其余元素。
Bitrix仍然是该体系结构的基础-至少与授权相关联,但是在可能的情况下并保证了很高的效率,我们将功能转移给了微服务。 他们成为该项目的基石。
新的组合架构为我们提供了稳定,快速的系统操作,并且在某些模块上几乎完全没有错误。 它也是营销人员有效工作的基础。 由于改进了体系结构,推广专家设法使资源的出席率提高了20倍。
微服务在独立的微服务中,我们区分了文件加载器,搜索和新闻提要等模块。 除了这些用户友好和显而易见的功能之外,还以微服务的形式实现了许多其他功能元素:
- 从开源项目中卸载,存储和管理数据;
- 动态创建RSS feed;
- 动态创建块系统,将任何服务的物料布置到结构块中;
- 向服务材料添加其他数据;
- 技术支持服务;
- 各种数据的单一目录。
除了上述所有功能之外,我们还创建了许多微服务,以方便管理面板使用。

该站点的每个功能块都已成为一个相当自治的单元。 使用专用过程进行加载和渲染,以最大程度减少与其他服务的交叉。
同意,当用户付款时,他不想等待很长时间才能将负责播放不需要的视频的脚本加载到页面的另一部分。 确实,这就是单片系统中发生的事情-侧面功能有时会干扰真正重要的组件的工作。
我们迈出了第一步,使用户和开发人员的生活更加轻松,每年发布20多种新服务。 结果:
- 我们解决了缩放问题。
- 由分散的团队实施了更有效的开发流程。
- 设置动态资源管理,以使系统快速,平稳地运行。
技术堆栈升级同时,我们更新了技术堆栈。 如果门户最初基于php 5.6和MySQL 5.6,则在改进引擎的过程中,我们将其切换为php 7.0和MySQL 5.7。 实现Yii2框架,提供memcache缓存。
任务队列为了更好地并行化任务,我们将Web Worker(内部处理程序)转移到RabbitMQ队列。 它优化了触发事件的顺序,从而减少了系统的负载。 与该站点的合作已变得更快,更舒适。
持续整合使用GitLab CI支持透明且可管理的开发过程。 这是一个真正的连续无缝开发,它使程序员和测试人员有更多时间解决重要问题,而不是打补丁。
为了最大程度地减少错误,我们引入了其他开发循环。 该链包括多个应用程序和基础结构测试循环:预发布,最新的程序集测试(预生产),实战(生产),用于一次测试多个构建的多个测试循环以及面向开发人员的循环。
组装系统在初始阶段,从项目源创建构建。 代替使用不同的类,样式和处理程序,而是使用组合的实体-每个实体都在一个可执行文件的外壳中。 只有必要的构造才会放置在程序集中以在页面上执行事件。 这还提供了站点的灵活性和速度。
错误监控GitLab CI提供了用于代码验证和自动化测试的高级功能。 与给定参数的程序集之间只有一点点差异,系统会通知开发人员,并且不允许在错误修复之前开始进一步的组件实现过程。 此外,我们安装了Sentry,这是一个完整的错误监视工具。
工艺优化为了使系统保持高性能,我们一直在优化业务流程和基础架构。 共享的库和服务原型成为快速实现新功能的基础-我们采用现成的模板,并在很短的时间内获得有效的产品。
监控与操作所有过程都处于全视图。 监控每个节点的状态,我们提供了Zabbix-一个全面的跟踪系统。 我们有机会研究了项目结构的核心,并对其进行了紧凑的观察。
我们还连接了Grafana平台,该平台将干数据转换为可视仪表板,以方便客户员工。
稳定与重构必要时,我们重构了系统-代码简化并且简洁。 同时,总是有增长的空间,因为定期对系统进行掺杂可以加快站点速度。 结果,该资源对搜索引擎和用户变得更加友好。
新架构是增长的基础在工作开始时,该资源具有适度的提升潜力,并且对客户而言不够方便,这阻碍了公司的业务流程。 为了改善用户与网站交互的过程,由于我们自己的API,我们几乎完全更新了门户架构及其结构,创建了一种灵活的机制,该机制可以与大量服务和应用程序集成。 许多服务在不进行干预的情况下已经达到了最佳状态一年以上,其工作中的错误数量已减少到几乎为零。
新站点是用于业务开发的强大工具,具有进一步扩展的潜力。 使用网络应用程序的更新架构,该项目的营销人员能够实施他们的一系列促销活动,并将流量从每月35万的唯一身份访问者增加到超过700万。 而且,在听众成倍增长之后,门户继续稳定运行。