全文共6320字,预计学习时长19分钟
如果你想建立自己的网络应用程序。你有创建的理念,但现在的关键是建立正确的架构。
在这篇文章中,我们将讨论这些关键内容:
·什么是软件架构?
·为什么软件架构很重要?
·软件架构和软件设计之间的区别。
·软件架构模式。
·如何决定你的应用程序应该有多少层。
·水平或垂直缩放—哪一种适合您的应用?
·整体式还是微型服务?
·何时应该使用NoSQL或SQL?
·选择合适的技术。
·如何成为软件架构师。
·如何起步。
文本的目标是让您对网络架构、相关概念以及在设计应用程序时如何选择合适的架构和技术有一个坚实的理解。在这篇文章的结束后,当你从零开始设计一个应用程序的时候,你不会在黑暗中孤立无助。
我们开始吧!
什么是软件架构?
系统的软件架构描述了它的主要组件、它们的关系以及它们如何相互作用。
本质上,它是一个蓝图。它提供了管理系统复杂性的抽象图景;它在组件之间建立联系和协调。
一些关键点:
·软件架构有助于确定出满足所有技术和运营要求的解决方案,它们的共同目标是优化性能和提高安全性。
·设计架构涉及组织需求和开发团队需求的交集。每个决策都会对质量、可维护性、性能等产生相当大的影响。
我最喜欢的软件架构定义之一是拉尔夫·约翰逊在《设计模式:可重用面向对象软件的元素》一书中所说的:
“这是你希望在项目早期就能做出的决定。”
为什么软件架构很重要?
建造一座建筑或者做一个比萨饼——要成功地创造任何东西,你需要把基础做好。如果你没有把基础做好,出了问题,你只能从头开始——没有办法绕过它。
构建一个网络应用程序也是一样的。建筑是基础。应该仔细考虑,以避免后续重大设计变更和代码重构。
许多工程师会告诉你:你不想重新设计东西。它像黑洞一样吞噬你的时间。它有可能把你的提交日期延长几个月,这还不是最长的。并且不包括工程期和金融资金的浪费。
在初始设计阶段做出的草率决定可能会造成开发过程中任一阶段的僵局。因此,在我们开始编码之前,必须使底层架构正确。
软件开发是一个迭代和进化的过程——我们不一定能在第一次的时候就把事情做完美。但这不是不完成任务的借口。
软件架构和软件设计的区别
软件设计和架构之间经常存在混淆。下面来进行区分。
软件架构用于定义系统的框架和高级组件,以及它们如何一起工作。例如,您是否需要一个可以将应用程序分成两个组件无服务器架构:BaaS(后端即服务)和FaaS(功能即服务)?或者,您是否需要像微服务架构这样的东西,可以将不同的特性/任务分成单独的模块/代码库呢?
选择架构将决定您如何处理性能、容错、可伸缩性和可靠性。
软件设计负责代码级设计——每个模块在做什么,类的范围,以及功能、目的等。战略性地使用时,它们可以使程序员工作更有效率,使用已经被其他人改进过的方法,所以他们不需要重复编程。
此外,当与他人讨论或在更大的团队中管理代码时,他们提供了一种有效的通用语言来概念化重复的问题和解决方案。
来源:Pexels