为什么一个线上运行“稳定“的系统要持续运维?

本文由Markdown语法编辑器编辑完成.

1. 问题提出:

在互联网行业, 有一个岗位叫运维工程师. 而且开发人员, 也需要在一个项目上线后, 在前几天/几周/几月的时间里, 持续维护这个项目, 以确保这个项目能够平稳地运行.

我以前其实不是很理解, 为什么一个系统之前运行得好好的, 突然某一天, 看似也没有发生什么特别的事情, 这个系统突然就出毛病了? 为什么同样的代码, 在不同的客户机器上, 会有不同的表现?

难道代码还会选择性工作吗? 还会选择性奔溃吗?

最近几天, 我就在查找一个在医院已经上线几个月的项目问题. 这个项目刚上线时, 经历了一段时期的阵痛. 经过前期的修复, 已经能够较持续平稳地运行了. 我本来以为问题已经彻底解决, 从此可以高枕无忧了. 结果运行了几个月后,在医院运维的同事已经向我报告现场的问题了.

真是应了那句话, 有时候没有消息就是好消息.

既然已经出现了问题, 而且已经明显地影响到了客户的使用体验. 那么就必须查出个所以然来, 给客户一个交代才可以.

2. 问题调研:

在调查问题的时候, 我想到了之前陈皓老师在他的博客(酷壳-CoolShell)中写的一篇文章: https://coolshell.cn/articles/10804.html (X-Y Problem). 这篇文章的大意是说, 一个人问你问题A, 你费了很大的劲, 去回答问题A. 最后发现, 这个人其实想问的问题是B. 因此, 我们在倾听别人的提问时, 可能不能直接就上来回答问题A, 而应该试图去发现, 是否他真正想问的问题是B.

之所以说以上这段话, 是因为我在查找线上问题时,就是根据运维同事反馈的问题A查找解决方案. 但是查找到后来, 我才意识到, 其实问题A只是一个假象, 真正的问题可能是别的问题.

回到上面的话题, 经过差不多两天的debug, 我后来发现产生该问题的原因, 是随着这个系统的不断运行, 数据库MySQL里面的记录越来越多. 而这个系统的几乎每个处理步骤, 都要频繁地和数据库进行交互, 因此运行速度会越来越慢. 最后慢到了客户已经能够感受到的地步, 于是问题就出来了.

找问题花了很长时间. 找到问题后, 解决方案就明确了, 就是将很多过期的数据及时地从数据库中删除. 经过这个处理后, 系统又恢复了往日的速度.

3. 问题感想

以上提到的, 只是由于数据库的数据量迅速增大而引起的, 在线系统运行速度减慢的问题.
这个问题, 我在平时的开发中, 是不会特别留意的. 开发人员也是将很多精力都放在了功能的开发和实现上, 但是对于系统的整体性, 持久性, 鲁棒性等, 可能没有关注太多. 而测试人员, 有时候限于环境的问题, 也无法完全模拟线上的复杂环境. 所以, 就会出现很多在公司无法暴露, 在客户的机器上暴露的问题.

这就需要软件开发人员, 在平时的工作中, 除了本身的功能开发外, 一定要多思考, 多总结. 同时也要拓展自己的知识面, 而不是只局限于自己的那点工作。试想,假如我对数据库更了解的话,那么在设计数据库的时候,通过增加索引,就可以极大地提高数据库查询的效率;同时,也会想到随着数据库数据量的增大而可能引发的问题。

总之一句话,台上一分钟,台下十年功。

参考链接:

  1. https://coolshell.cn/articles/10804.html (X-Y Problem)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 要搭建一个SaaS平台,您需要考虑以下几个步骤: 1. 确定你的目标市场和客户群体:确定你要提供的服务和解决的问题,并确定你的目标市场和客户群体。 2. 选择一个适合你的云计算平台:云计算平台是搭建SaaS平台的基础,您需要选择一个适合您需求的云计算平台,例如AWS、Azure、Google Cloud等。 3. 开发应用程序:开发您的应用程序,根据您的客户需求和市场定位来开发应用程序,您可以选择使用现有的应用程序或开发全新的应用程序。 4. 数据库和存储:选择一个适合您的应用程序的数据库和存储系统。 5. 集成付款和订阅服务:在SaaS平台中,您需要集成付款和订阅服务,例如Stripe、PayPal等。 6. 部署和维护:将您的应用程序部署到云计算平台中,并确保您的平台能够安全、高效地运行。同时,您需要定期进行维护和更新,确保您的SaaS平台始终保持最新和最安全的状态。 需要注意的是,搭建一个SaaS平台是一个复杂的过程,需要涉及多个领域的知识和技能。如果您没有相关经验或技能,可以考虑与专业团队或合作伙伴合作,以确保您的平台能够成功运行。 ### 回答2: 搭建一个SaaS平台需要经过以下步骤: 1. 确定目标与定位:首先要明确SaaS平台的目标和定位,了解目标用户群体,并确定平台所提供的服务类型和范围。 2. 构建核心功能:根据平台定位和目标用户需求,确定平台的核心功能模块。这些功能模块应包括用户管理、权限控制、支付与账单管理、数据存储与管理、多租户隔离等。 3. 开发平台架构:根据核心功能需求,构建合适的平台架构。选择合适的编程语言和开发框架,搭建稳定可靠的技术基础。 4. 设计界面和用户体验:通过用户研究和交互设计,设计平台的用户界面和用户体验,确保用户能够方便快捷地使用平台。 5. 数据库设计和管理:根据平台需求,设计适当的数据库结构,选择合适的数据库技术,确保数据安全和性能。 6. 平台部署和运维:选择合适的云服务提供商,将平台部署到云服务器上,并确保平台的稳定运行。同时,建立定期的备份和监控机制,及时处理故障和漏洞。 7. 安全和隐私保护:制定安全策略和隐私保护措施,确保用户数据的安全和隐私。 8. 推广与营销:根据平台定位,制定推广和营销策略,通过社交媒体、线线下活动等渠道,吸引和留住用户。 9. 不断优化:根据用户反馈和数据分析,持续改进和优化平台的功能和用户体验,保持平台的竞争力。 10. 客户服务和支持:提供及时的客户服务和支持,回应用户的问题和需求,提供培训和文档,帮助用户获得最佳的使用体验。 总之,搭建一个SaaS平台需要综合考虑技术、功能、用户体验、安全、推广等各方面的因素,不断优化和创新,才能成功地为用户提供优质的服务。 ### 回答3: 搭建一个SaaS平台是一个多步骤的过程,需要深入了解业务需求、选择适合的基础设施和技术架构,并进行开发和部署。以下是搭建一个SaaS平台的一般步骤: 1. 确定业务需求:明确SaaS平台的定位、目标用户和提供的服务。了解用户需求和竞争对手,并确定如何为用户提供独特的价值和解决方案。 2. 选择合适的基础设施:根据业务需求选择适合的基础设施,如云计算平台AWS、Azure或Google Cloud。这些平台提供了弹性、高可用性和可扩展性的基础设施,可以满足SaaS平台的需求。 3. 设计技术架构:根据业务需求和基础设施选择,设计SaaS平台的技术架构。考虑平台的可伸缩性、多租户支持、安全性等方面的因素。选择合适的开发语言和框架,并考虑使用微服务架构来实现不同组件的隔离和独立部署。 4. 开发平台功能:根据需求和技术架构设计,进行平台功能的开发。开发包括用户管理、权限控制、数据存储和处理、支付集成等功能。确保平台具有良好的用户体验和高性能。 5. 实施多租户支持:实现多租户的支持是SaaS平台的重要部分。通过数据隔离和安全控制,确保每个租户的数据在系统中相互隔离。可以使用数据库模式、多租户平台或虚拟化等技术来实现多租户支持。 6. 测试和优化:在上线之前进行全面的测试,包括功能测试、性能测试和安全测试。根据测试结果进行优化,确保平台的稳定性和高性能。 7. 部署和运维:将开发完成的SaaS平台部署到选定的基础设施上,确保平台的可用性和可扩展性。建立相应的监控系统,及时发现和解决问题。 8. 持续改进:SaaS平台是一个持续发展的过程,需要根据用户反馈和市场需求进行持续改进和迭代。收集用户反馈,改进和添加新功能,并持续进行产品优化和升级。 总而言之,搭建一个SaaS平台需要根据业务需求选择基础设施和技术架构,进行开发、部署和运维。同时,还需要不断优化和改进平台以满足用户需求,实现持续发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值