网站崩溃的5种方式(以及如何应对)

九游会客户端——2014年11月26日,星期三

Web开发人员, 至少是好的, 如果没有充分的信心,不要发布他们编写的程序,因为它们可以在正常(以及许多异常)的情况下工作. 测试是每个开发周期中绝对必要的一部分. 尽管有各种各样令人眼花缭乱的浏览器“在野外”,“我们不能发行一款只会出现很小比例失败的游戏. 网站 caniuse.com 存在只是为了让开发人员可以运行百分比,并决定他们可以轻松地添加什么功能到他们的网站. 很多垫片 webshims 帮助开发人员填补空白. 当一个程序运行时, 它应该已经经过了充分的测试, 硬化的火, 随时准备服务于现在和未来.

matcha-design-5-ways-a-website-can-break.jpg

不幸的是, 不管你花了多少精力来防止一个项目的失败, 任何东西在适当的条件下都可能破裂. 以下是这些年来我们发现的一些原因, 还有我们能做些什么来减少他们的威胁.

1. 依赖外部服务
几乎每个拥有大型网站的技术公司都提供了有用的服务,他们允许较小的开发人员通过使用应用程序编程接口接入这些服务, 或api. 例如,两个 微软Office 365 而且 谷歌驱动 提供功能丰富, 易于使用的, 安全的web应用程序,允许用户创建公共日历. 然后,开发人员可以(在用户允许的情况下)将自己的程序挂接到 谷歌 or 微软 API引擎和提取数据显示在他们的公司网站. 用户永远不需要接触网站, 开发人员不需要为用户创建一个非常复杂的界面.

很多时候,这是一个双赢的局面. 然而,api不是永恒的. 随着时间的推移,公司会改变它们,以使它们更安全或更好地与自己的服务相匹配. 它们可以悄悄地将连接移动到“已弃用”或“中断”状态. 就API的使用者而言, 一切都在顺利地运转,直到突然停止. 一旦API消失,以前健壮的应用程序几乎肯定会停止工作.

防止这种破坏的唯一方法是让开发人员留在公司管道中,随时了解最新API版本即将发生的变化. 大多数公司会提前几个月宣布变更,除非出现紧急情况(发现安全漏洞), )需要快速更新. 只要开发者订阅了他们的新闻,并随时了解行业最新消息, 他们不会措手不及. 保持警惕是开发者的最佳选择.

2. 服务中断
用户到服务器的连接是另一个可能的故障点. 开发人员无法控制用户的计算机是否脱离了互联网. 如果在关键数据传输过程中发生断开, 程序可能永远等待一个永远不会出现的数据字符串的结束. 随着时间的推移,如果这些滴数加起来足够多,最终程序会有越来越多的挂起连接. 因为每个连接都会消耗少量的服务器资源, 在这一点上,崩盘是不可避免的.

解决这个问题的方法非常简单,以至于程序员有时会忘记这么做:超时. 超时是一个小的子程序,它周期性地监视数据传输. 如果在一个间隔和下一个间隔之间没有来自最终用户的数据, 程序会取消转移.

3. 恶意用户输入
网络上的程序可能会成为各种不礼貌用户的牺牲品. 从愤怒的客户在联系表单上一遍又一遍地捣碎密钥,到设计用于利用已知服务器或编程语言漏洞的复杂程序, 这是一个危险的互联网.

开发人员必须非常小心地处理来自他们无法完全控制的数据源的数据. 一个典型的做法是 输入检查. 基于web的表单中的每个数据片段都要检查长度, 特殊字符的存在, 以及可能导致不必要行为的内部代码, 然后再传给程序的其他部分. 这取决于网站的彻底程度和要求, 有些开发人员甚至会对来自所有外部来源的信息进行净化, 包括api. 不过,通常情况下,对表单输入进行消毒对网站的保护是绰绰有余的.

4. 错误数据
创建大多数程序都是为了显示来自多个源(包括人工输入)的动态数据. 也不是他们自己的错, 人类有时会按错键, 把坏数据直接发送到程序中. 这是一个古老的编程格言“垃圾输入, “垃圾输出”适用于此, 在最好的情况下经常会造成不恰当的输出,在最坏的情况下会导致程序完全崩溃.

程序员经常觉得他们可以对公司内部来源提供的数据的完整性更加宽松. 错误不一定是恶意的,每个人都会犯错误. 在计算周期和开发时间方面,对来自每个可能向量的每个可能的数据片段应用输入消毒是非常昂贵的. 因此,大多数开发人员都会使用适当数量的 错误捕获 尽量减少坏数据的影响.

所有编程语言都有内置的钩子,用于在发生错误时捕获错误. 这些钩子允许程序员根据错误的类型和严重程度指示程序执行替代任务. 一有意外输入的迹象, 一个被良好捕获的程序可以优雅地退出,并发出“哎呀, 消息或显示来自备份源或最近的数据缓存的数据.

另一方面, trapping every single bad outcome is a needless expense for relatively little benefit; if we never encounter an error which was extremely unlikely in the first place, 那么任何用于捕获错误的时间都被浪费了. 编程再一次变成了概率游戏. 有经验的开发人员知道最有可能的失败点,并针对它们设置陷阱. 如果真的发生了十亿分之一的错误,之后的快速修复是最谨慎的解决方案.

5. 服务器错误
不管程序有多安全,它的性能都取决于运行它的服务器. Web服务器是经过多年反复测试的应用程序, 所以它们变得非常强大. 它们也非常复杂, 任何带有许多“移动部件”(即并行运行的程序)的系统都可能在意想不到的时候失败. 有时,只需要一段数据错位就能使整个结构停止运行.

不幸的是, 对于奇怪的服务器错误,开发人员无能为力, 就像机械师不能阻止司机碾过堵塞发动机的岩石一样. 在这种情况下,只适用最基本的IT规则:尝试关闭并再次打开它.

及以后 ...

网页开发周期的结束并不是真正的结束. 时间总是会把任何程序的漏洞暴露出来. 即使是防弹程序也可能随着技术和市场的发展而过时. 对于任何拥有Web服务的公司来说,留出维护预算以确保随着时间的推移,一切都是最新的,这总是一个很好的做法. 每隔几个月花几个小时的时间来工作将有助于确保你的网站保持相关性, 在未来的许多年里都是有用和无错误的.

九游会客户端
九游会客户端是一家专注于全方位服务的创意机构 网页设计打印身份品牌界面设计视频制作静止摄影 而且 运动设计. 用我们对卓越的热情,多元文化背景,和 获奖 实践, 我们一贯提供高品质的, 自定义, 创新的解决方案,以满足客户多样化的营销需求. 欲了解更多信息,请访问 www.MatchaDesign.com.