根据我们今年初发布的2019全球云原生调查,84%的受访对象在生产中使用容器,使得容器在全球范围内无处不在。...在中国调查中,将近一半(49%)的受访对象在生产中使用容器–从2018年3月调查的32%和2018年11月的20%跃升至更高水平。...在多个团队中使用Kubernetes的调查对象中,有68%使用命名空间。 监控,日志和跟踪 对于那些使用监控,日志和跟踪解决方案的用户来说,本地运行还是通过远程服务器托管更普遍。...46%的受访者使用本地监控工具,而20%的受访者通过远程服务运行。整体上使用日志和跟踪的受访者较少,但是26%的受访者在本地运行跟踪,而20%通过远程服务运行跟踪。...但是,我们在中国的调查显示,纯自动化环境相对较少-只有21%的受访对象采用自动发布周期,而31%依靠手动流程。最受欢迎的是混合方式,占46%。 ? 您的发布周期是手动还是自动?
这就是为什么要求在生产环境中以及测试环境中都要进行完整测试的原因。从经验中,我知道如果手动完成,这可能是一个艰苦而艰巨的旅程。自动化这个时候就能够大显神威,帮助我们解决部分效率上的问题。...什么是生产测试? 如果只是初入行的测试人员,那么很有可能您可能不是十分理解SDLC(自动化测试生命周期),并且您可能会怀疑生产环境和测试环境哪里不同?我们在生产中要测试跟生产环境测试区别在哪?...每个应用程序都在不同的环境中克隆。有些用于开发人员,有些用于测试人员,另一些用于您的客户。与客户进行交互的应用程序运行环境称为生产环境,而其他应用程序称为测试环境或开发环境。...这就是为什么在每个发布周期中,都必须在生产环境中进行跨浏览器测试的原因。但是,如果不是单调的话,要在数百种浏览器和操作系统上测试Web应用程序肯定会很复杂且低效率。...总而言之 生产中测试的主要议程是确保应用程序在生产环境中稳定。为了避免故障,您需要使测试脚本自动化,以确保在所有最新的和旧版浏览器中都对应用程序进行了尝试和测试。
根据我们今年早些时候发布的全球2019年Cloud Native调查,有84%的受访者在生产中使用容器,这使得容器在全球范围内无处不在。...计划在生产中使用容器的中国会员少得多-我们在2018年3月的调查中为57%,在11月为40%。这意味着许多组织已将容器计划付诸实施,而不再处于计划阶段。...分离Kubernetes应用程序 在集群中管理对象可能是一个挑战,但是名称空间通过将它们作为组进行过滤和控制来提供帮助。71%的受访者将其Kubernetes应用程序与名称空间分开。...Monitoring,Logging和Tracing 对于那些使用监视,日志记录和跟踪解决方案的用户来说,它们是在本地运行还是通过远程服务器托管。...46%的受访者使用本地监控工具,而20%的受访者通过远程服务运行它们。整体上使用日志记录和跟踪的受访者较少,但是26%的受访者在本地运行跟踪,而通过远程服务运行的是20%。
在 Web Worker中使用无限同步循环 由于 Web Worker 本质上是Web线程,因此你可以在其中无限循环而不阻塞主线程。这使你可以访问微秒级的时间分辨率。...无需担心调用时卡住,这些调用将在再次显示选项卡时立即运行。 从 DOM 中删除隐藏的 div 时,将自动进行清理。例如,如果你有一个可渲染时间的 React 组件,则无需在卸载时做任何事情。...这就是为什么我建议创建一个像这样的任意不存在的标记的原因 。...其他CSS规则可能会干扰你的配置。 IE 和 Edge (在 Chromium 之前)不受支持。 不准确 根据我的测试,它可能会延迟15ms。 直到整页加载才开始。...缺点 仍然是一个建议。不要在生产中使用。 可怕的兼容性。可能仅适用于 Chromium。 还是有点违反直觉的。 标签未聚焦时暂停。如果用作 setTimeout 的替代品可能会很糟糕。 不能间隔使用。
对同步函数的单个调用可能会在几微秒或几毫秒内返回,但是在高流量网站中,这些调用会累加并降低应用程序的性能。 避免在生产中使用它们。...尽管 Node 和许多模块提供了它们功能的同步和异步版本,但在生产中始终使用异步版本。 唯一可以证明同步功能合理的时间是在初始启动时。...Use a process manager 在开发中,您只需使用 node server.js 或类似的东西从命令行启动您的应用程序。 但是在生产中这样做会导致灾难。...这个警告基本上适用于所有形式的水平扩展,无论是多进程集群还是多物理服务器。 在集群应用程序中,工作进程可以单独崩溃而不影响其余进程。 除了性能优势之外,故障隔离是运行应用进程集群的另一个原因。...将不需要应用程序状态知识的任务移交给反向代理可以释放 Express 来执行专门的应用程序任务。 出于这个原因,建议在生产中使用反向代理(如 Nginx 或 HAProxy)运行 Express。
Kubernetes vs Docker是云计算行业中多次提到的话题。无论您是否有技术背景,需要快速介绍,还是需要做出业务决策,我希望以下几点将一次性澄清这一问题。...Docker - 作为开发人员的工具 开发人员面临的一个问题是,应用程序运行的生产服务器与开发应用程序的自己的开发机器(通常是笔记本电脑和工作站)之间存在差异。...因此,您可以将代码打包到Docker映像中,使用Docker在本地运行和测试,以确保从该Docker映像创建的容器在生产中的行为相同。 注意:所有依赖项(如编程语言版本、标准库等)都包含在该镜像中。...生产中的Kubernetes 人们不应该因为在生产中对Kubernetes受到指责,我个人认为这背后的原因是双重的。 首先,大多数组织盲目地跳跃而不了解分布式系统的基本概念。...但是,在生产中运行它们并不是我推荐的。要跟上它们,需要对集群进行持续的维护,并且需要花费更多的人力。 但是,组织可以使用云托管的Kubernetes平台来运行其应用程序。
错误边界是在他们的子组件树中捕捉JavaScript错误,记录这些错误,并显示一个回退UI的React组件,而不是崩溃的组件树。...我们也鼓励您使用JS错误上报服务(或建立您自己的),您可以了解他们在生产中发生的未处理的异常,并修复。...组件的堆栈跟踪 在开发过程中,React16会将渲染过程中发生的所有错误打印到控制台,即使应用程序意外地将它们删除。除了错误消息和JavaScript的栈,它也提供了组件的堆栈跟踪。...现在你可以精确地看到在组件树的哪部分发生了错误: ? 你也可以看到文件名和行号在组件堆栈跟踪中。这在Create React App脚手架中是默认的: ?...如果你不使用Create React App,你可以添加这个插件手动修改你的Babel配置。请注意,它只是为了在开发过程中使用,在生产环境一定要禁止。 为什么不用 try / catch?
如果爆炸半径很小并且可以在运行的容器中进行测试,那么应用程序开发团队可以进行测试,而不必担心突破容器。...为什么要进行混沌测试? 开发的迷雾是非常真实的,尤其是对于更大的分布式系统、复杂系统和微服务实现。从应用程序的角度来看,每个单独的微服务都可以单独测试并确定按设计工作。...第一个是提供足够的覆盖范围,第二个是确保经常运行实验并在生产中模拟/运行,第三个是最小化爆炸半径。 为估计的故障频率/影响提供覆盖范围 在软件中,您永远不会达到 100% 的测试覆盖率。...在您的管道中连续运行实验 软件、系统和基础设施确实会发生变化——每个人的状况/健康状况都可能会迅速发生变化。运行实验的好地方是在 CI/CD 管道中。CI/CD 管道在进行更改时执行。...衡量变革的潜在影响的最佳时机莫过于变革开始在管道中建立信心的旅程。 在生产中运行实验 正如在生产中进行测试的可怕想法一样,生产是用户所处的环境,流量峰值/负载是真实的。
应用程序开发环境的变化 在这个最新的调查版本中,我们添加了关于发布的额外问题,以了解更多关于公司如何管理他们的软件开发周期。微服务体系结构的好处之一是具有灵活部署的能力,允许公司根据需要随时减少发布。...Kubernetes 58%的受访者在生产中使用Kubernetes,42%的受访者在评估未来使用。相比之下,40%的企业公司(5000+)在生产中使用Kubernetes。...CNCF在过去一年中对Kubernetes培训进行了大量投资,包括免费和付费课程以及Kubernetes管理员和应用程序开发者的认证,我们会继续托管需要额外培训资源的新项目。...- Minio:27%的受访者正在生产中使用,而73%(从28%上升)正在评估。 - OpenSDS:16%(从7%上升)受访者正在生产中使用,而84%(从14%上升)正在评估。...- REX-Ray:18%的受访者正在生产中使用,而82%的受访者正在评估。 - Openstorage:19%(从31%下降)受访者正在生产中使用,而81%(从36%上升)正在评估。
越来越多的团队开始在生产中使用Kubernetes来运行其容器化工作负载和应用程序。当零停机时间和安全性至关重要时,Kubernetes迅速成为在生产中运行大规模复杂应用程序的最简单方法。...当零停机时间和安全性至关重要时,Kubernetes迅速成为在生产中运行大规模复杂应用程序的最简单方法。...Kubernetes是一回事(许多团队都是从这种方式开始的,而Minikube和类似的工具使这种方式相对简单),而在生产环境中运行是另一种回事。...Rao说,“与许多与在Kubernetes上运行数据服务的客户合作,而我一直听到的一句话是‘我曾尝试在Kubernetes上运行MongoDB,但SAN一直存在问题。’...企业的员工也可能会从新的云原生应用程序开发实践培训中受益。” 总的来说,当团队将Kubernetes视为一种灵丹妙药,而不是像其他任何重要系统一样必须维护和改进的工具时,团队往往会遇到问题。
实际上,我们已经研究这个颇有几分,不同发现的方法记录在生产中,最常见的方式来解决的Java应用程序中的错误,如何以及应用监控点的工具可以检测错误帮助。...底线: Loom使用应用程序日志和指标来尝试了解应用程序的正常行为,并提供建议的解决方案和操作项。 3. OverOps OverOps告诉您代码在生产中的时间,地点和原因。...,可通过SaaS,Hybrid和内部部署在5分钟内完成安装 带有黑色主题的badass仪表板 怎么运行的: OverOps是一个本机监视代理程序,它在JVM和处理器之间运行,从应用程序本身提取信息。...它使用AI来识别通常隐藏在海量信息环境中的问题,这反过来又有助于开发团队比以前更快地解决问题。 OverOps收集的数据在AI环境中是独一无二且非常有价值的。...在假设大多数日志相似的情况下运行,而唯一区分它们的是它们内部的变量。
由于使用XML和JSON格式进行数据传输,使用HTML/CSS和JavaScript进行界面,Rails确保了使用Ruby快速而深入地开发网络应用。...由于RoR带有各种各样的内置插件和模块,开发人员在创建应用程序时可以使用大量的插件。这大大减少了编写模板代码所需的时间。 一致性。...RoR可以以一种方式配置,而且只能以一种方式运行。这极大地加快了标准功能的开发,但在实现独特功能时可能会限制开发人员的灵活性。 错误的成本高。...虽然Flutter应用程序在任何平台上看起来和运行都一样好,但它们并不完全具有原生的外观和感觉。这主要是只有iOS的纯粹主义者才会注意到的,但还是值得一提的。 相当年轻。...由于所有的浏览器都支持JavaScript,用Express框架开发跨平台的应用程序是快速和具有成本效益的。一个单一的代码库可以重复使用,在任何平台和任何浏览器中运行你的应用程序。 2.
在本文中,我将分享在我需要物理移动缓存并增加其容量的类似情况下如何可靠地迁移和改进缓存而不影响服务。...在役期间难以管理哈希服务器 第二个问题是缓存服务器不能实时自主控制,即在服务中途,如果缓存服务器发生变化或故障,无需重启后端应用程序。...大规模服务中的迭代测试 因此,在我开始在生产环境中迁移缓存之前,我将测试分为两部分。 在开发环境中运行小型模拟以进行测试。 在生产中请求最少的服务器集群上运行多个 Canary 测试。...我们认为这些测试很难在开发环境中覆盖,所以我们想通过在生产环境中运行多个金丝雀测试来弥补。...事实上,一旦我们在生产中这样做,从旧缓存集群迁移到新缓存集群大约需要一个月的时间。花费这么长时间的原因是因为有一些流量可能是从各种客户端或遗留客户端代码遗留下来的。
几乎每个人现在都听说过 Kubernetes ,许多各种规模的组织正在使用它或至少在考虑在生产中使用它。然而,Kubernetes 不仅仅是用于运行容器化工作负载的技术。...当时几乎它是唯一的用于运行容器化工作负载的开源技术。如今,使用容器的组织中约有一半正在使用 Kubernetes 在生产环境中运行它们。 但Kubernetes的意义不仅仅在于操作容器化工作负载。...当然,你可以看出我是一个铁杆粉丝——部分原因是因为我参与了这个令人惊叹的社区,并喜欢在这里做贡献——但我们来快速看看为什么 Kubernetes 真的是解决许多问题的瑞士军刀。 一切都始于容器。...其中一半使用容器的组织在生产中使用 Kubernetes 来部署其中至少一部分容器( 64% 的最终用户和 49% 的非最终用户)。 你可能会说这只是数字,只代表世界各地正在发生的特定领域的软件工程。...它会为开发人员抽象出底层基础设施,并为他们提供一些接口来运行他们的应用程序(部署、扩展、查看日志等)。开发人员几乎不需要运维知识,但他们的灵活性也会受到限制。
根据我作为顾问的经验,我发现只有很小一部分机器学习项目能够被成功投入生产。人工智能项目失败的原因有很多,而「难以部署」就是其中之一。...R 是一种很好的原型开发语言,因为它使我们可以进行简单的交互和问题求解,但是在生产环境下则需要将其转换为 Python、C++ 或 Java。...我注意到,这往往是历史遗留的分析系统所造成的问题。由于没有能力轻松地将软件组件移植到另一种主机环境下并在那里运行它,这种软件组合可能会被限制在一个特定的平台上。...这回给数据科学家在创建和部署模型时设置障碍。 4、可扩展性 对于许多人工智能项目来说,可扩展性是一个很现实的问题。实际上,你需要确保你的模型能够进行扩展,并且满足生产中对性能和应用程序需求的增加。...我相信,将所有这些工具结合起来在生产中使用机器学习是目前最大的挑战。 部署机器学习是困难的,并将一直如此,而这正是我们需要面对的现实。值得庆幸的是,一些新的架构和产品正在成为数据科学家的「好帮手」。
然而,在真实的工业生产场景下,将原型机器学习算法部署到应用程序中又是一项充满挑战的课题。...根据我作为顾问的经验,我发现只有很小一部分机器学习项目能够被成功投入生产。人工智能项目失败的原因有很多,而「难以部署」就是其中之一。...我注意到,这往往是历史遗留的分析系统所造成的问题。由于没有能力轻松地将软件组件移植到另一种主机环境下并在那里运行它,这种软件组合可能会被限制在一个特定的平台上。...这回给数据科学家在创建和部署模型时设置障碍。 4、可扩展性 对于许多人工智能项目来说,可扩展性是一个很现实的问题。实际上,你需要确保你的模型能够进行扩展,并且满足生产中对性能和应用程序需求的增加。...我相信,将所有这些工具结合起来在生产中使用机器学习是目前最大的挑战。 部署机器学习是困难的,并将一直如此,而这正是我们需要面对的现实。值得庆幸的是,一些新的架构和产品正在成为数据科学家的「好帮手」。
学习如何轻松构建可伸缩的 React 应用程序:整洁和可维护的代码 # 为什么要编写整洁的代码 编写干净的代码对于编程非常必要,有以下几点好处: 业务连续性 业务连续性在每个组织中都非常重要,因为当开发人员离开公司或企业时...重复的代码会导致代码的可维护性降低 将可重复使用的代码抽象为函数或组件,在需要时调用 尝试自解释代码 无论编写什么代码,无论是方法、函数还是变量声明,都应该以一种解释给下一个要读、调试和支持它的人的方式编写它...,而不会破坏当前正在工作的代码 删除注释或未使用的代码 开发应用程序时,我们倾向于注释我们错误编写或稍后使用的代码或导致应用程序中出现错误的代码,这不是好习惯,它会使应用程序代码不必要地变得冗长 在提交到生产之前...b = 2; // good const firstNumber = 1; const secondNumber = 2; 所有函数必须只做一件事情 在应用程序中编写函数来帮助我们,这些函数可以根据我们的目标做各种各样的事情...错误是不可避免的,这就是为什么作为开发人员,需要检查错误。 使用 try 和 catch 包装代码可以帮助检查这些错误并向用户显示友好的消息,并且最好将这些错误记录到文件中或保存到数据库中。
如果您认为向微服务和容器的转变是演变而不是革命,那么您来对地方了!在本文中,我们将对基于Kubernetes的应用程序领域采取务实的方法,并详细介绍一系列步骤,以确保整个管道的可靠性。...具体来说,在对基于Kuberenetes的应用程序进行故障排除的上下文中,我们将涉及持续可靠性的3个支柱:在CI管道中实现代码质量门,在CD管道中实现可观察性,以及创建上下文反馈循环回开发。...文件) 阶段2:阶段/用户验收测试(UAT) UAT环境的目标是尽可能地复制生产,以便在执行性能和规模测试时,您可以确信它的行为就像新版本正在生产中运行一样。...生产反馈循环 最重要的是–我们要确保开发人员可以轻松访问有关应用程序行为的所有数据。无论是在测试,分阶段还是生产中,都可以使用提供可见性并与问题跟踪和事件管理软件集成的多种工具来实现此反馈循环。...简而言之,它使您能够选择在代码被测试执行或在生产中运行时发生的新错误和严重错误,并获得修复它们所需的完整上下文: 关于作者 泽阳,DevOps领域实践者。
领取专属 10元无门槛券
手把手带您无忧上云