• 不久前,在一个并不遥远的IT世界里,架构师的角色被认为是不必要的。开发人员精通他们在大学数据库和网页设计课上学到的三层架构和ERD。精通对象建模、UML图解和文档的架构师只是臃肿的,是已逝的瀑布时代的遗物。 这在云计算时代已经完全改变了。现代的架构
  • 当公式的组织架构及其代码被拆分以后,但仍然存在紧密耦合时,就会出现分布式单体。这已经成为一个问题,因为系统的规模增加,单体的所有部分都需要一起管理,这会放慢开发速度并增加任何变化的风险。 能够识别何时处理分布式单体很重要:
  • 软件架构是任何成功软件系统的基础,并且会影响整个系统生命周期中的可维护性、可扩展性、稳定性和安全性等方方面面。实施新软件系统的第一步是架构图.随着软件系统和 Web 应用程序变得越来越复杂,精心设计的系统架构图对于与其他开发人员和利益相关者进行交流变 icon
  • 我们都希望有用和有趣的内容被推送给我们。新闻提醒出现在我们的手机上,信息通知出现在我们的桌面上。我们希望了解最新的事件,而不是去寻找它们。当相关的信息被传递给我们时,这就容易多了。 事件驱动的系统也是如此。当信息出现在需要的地方,而不是一个系统不得 icon
  • 程序员是无到有构建代码,应该注重组合思维,做出来的东西需要能够相互组合在一起;而架构师是从上而下的视角,因为不参与具体细节构建,但为了落地,应该具有多维度多维度视角,从程序员到架构师思维转变很重要,下面是原文摘要:一个人能看得更多不仅意味着要有更好的视力,还意味着能看到更多的维度。想 icon
  • 架构图是软件设计的基础,也是软件开发沟通和协作的基础工具。在 Spotify,我们拥有一个极其复杂的网络,由数百个团队拥有的数千个相互关联的软件系统组成,因此有一种简单的方法来可视化这些连接是必不可少的。 虽然在一张大图中捕获我们所有的软件在技术上 icon
  • 以下是通过参加了一些关于软件开发的会议搜集到的软件开发趋势: 1. 可观察性[跟踪、监控和记录]是至关重要的!你正在开发你的软件,并且你已经准备好部署它。所有的测试都通过了,测试覆盖率也达到了一个不错的水平 icon
  • 想象一下你正在买一辆车。您需要其中的哪些基本功能?车辆应该将人从 A 点运送到 B 点。但我们还要检查的是安全性、舒适性、可维护性、易于维修或更好的里程。您也可以寻找电动版本或更快的速度。为什么?为了限制在提供主要功能时可能发生的意外。同样,就像汽车、摩托车或房屋一样,软件也有其非功 icon
  • 对于许多软件工程师来说,系统设计面试仍然是一个神秘的挑战。大多数工程师以前从未真正在大型系统上工作过,因此必须解释如何构建一个似乎令人生畏。而且因为系统设计面试的问题可以是开放式的,所以很难知道正确的准备方法。在我在 Microsoft 和 Facebook 从事分布式系统工 icon
  • 随着云计算的发展以及 PaaS 和 SaaS 服务的使用,来自不同领域的 IT 从业者更容易学习、实践和研究不同解决方案架构的样子。然而,与此同时,它增加了设计的复杂性以及与各种解决方案平台、服务、集成方法的可能组合。这个故事旨在提供一些关于解决方案架构的基本概念和想法,以及如何长期 icon
  • 想象一个由数十个持续部署的自治服务组成的微服务应用程序。每个应用程序的服务群都有自己的存储库,具有不同的版本控制方案和不同的团队不断发布新版本。谜语:我怎样才能知道(整个)应用程序的版本?由于变更历史分散在数十个存储库中,那么跟踪变更的最有效方法是什么?我们如何管理应用程序发布? icon
  • 所有伟大的图表都在讲述一个故事。 让我们拿学习如何驾驶汽车做个比喻。当你学习如何开车时,教练描述了启动汽车的必要步骤,把它放在驱动位置,然后驶入交通。每一个步骤都有上下文,向你展示每一个步骤是如何进行下一个步骤的。 icon
  • 系统设计对话可能非常具有挑战性。可能有很多模棱两可的地方、选项和想法——加上有限的时间和难以解决的问题。根据经验,我发现了一种通用方法,可以帮助使这些对话更有条理、更有趣、更有成效。 1. 要求和目标系统设 icon
  • 1988年,人类学家Joseph Tainter出版了一本名为《复杂社会的崩溃》的书。在书中,他描述了罗马人、玛雅人和查科人等伟大文明的兴衰。他的目标是回答几个世纪以来一直困扰着思想家的一个问题:为什么这些强大的社会会崩溃? 在他的分析中,泰恩特发 icon
  • 这些是 Internet 上系统设计的最佳资源。 视频处理大规模转码视频:https ://www.egnyte.com/blog/2018/12/transcoding-how-we-serve-vide icon
  • 本指南介绍了软件工程项目的架构决策记录 (ADR) 过程。ADR 支持团队协调,记录项目或产品的战略方向,并减少重复和耗时的决策工作。 在项目和产品开发期间,软件工程团队需要做出架构决策以实现其目标。这些决策可以是技术性的,例如决定使用命令查询职责 icon
  • 在研究数据结构/算法 (DSA) 面试问题时,有一个清晰的剧本:掌握概念并始终如一地实践 icon
  • 当面临选择时,总是选择最简单的东西来解决你眼前的问题。然后确保你以后可以改变主意。我所说的最简单的事情是指最容易推理的解决方案。 当我们总是选择最简单的解决方案时,我们就可以避免分析瘫痪,即找出在我们可以想象的所有未来情况下哪个解决方案可能是最好的 icon