这是六个重要的软件架构原则的选择。
1. 制造、购买、重用——或者更好地重用、购买、至少制造
在购买之前重复使用,在制造之前购买。
为什么?
示例:如果您制作(编码和实施)您的个人公司互联网浏览器、邮件应用程序或办公软件包,会发生什么?
答:你会花很多时间和金钱。您将无法专注于您的核心业务。通常,您的解决方案会非常独特,以至于在糟糕的情况下,它需要额外的用户培训。
尤其是在大公司中,验证解决方案是否已经存在、购买、实施或是否已经针对给定问题运行是有意义的。有时您会在公司的另一个部门找到正在运行的软件解决方案。
如果您的公司还没有可用的软件来解决需求,您应该首先进行市场调查。
在大多数情况下,有不同的软件解决方案提供商或多或少专业化。不要重新发明轮子。
如果您的要求非常特殊以至于没有合适的解决方案,您应该制作您的软件。这是您创建和销售用于特殊用途的软件的核心业务。并以此赚钱。
2. 为云构建
现代软件应用程序需要能够在 AWS、Azure、GCP 等云环境中运行。
如今,没有一家公司愿意运营自己的数据中心,除非出于特殊原因必须这样做。
通常,使用大型提供商的云环境要便宜得多。
大型云提供商在安全方面和可用性方面也有更多的经验和更高的可靠性。
您唯一应该确保的是,您在技术上并没有与特定的云提供商联系得太紧密。那么风险就是陷入供应商锁定。
如果您想购买软件,则需要验证该软件可以在您喜欢的云环境中运行。
3. 可扩展
软件可扩展性是系统的一种属性,可根据用户的需求增加其容量和/或功能。可扩展软件随负载变化稳定运行。无需停机即可部署更改和升级。
云环境的优势在于应用程序可以灵活地对负载做出反应。这降低了基础架构成本并增加了软件的响应时间和可用性。
请记住,市场上的许多标准软件只能垂直扩展(向上扩展)。这意味着它们仅在添加存储和 CPU 时进行扩展。为此,通常需要重新启动服务器,这会影响系统的可用性。
通过使用横向扩展(横向扩展),系统资源和可用性几乎没有限制。例如,可以添加和删除其他服务器。负载变化时,软件系统开始“呼吸”。如果以正确的方式配置,它可以降低基础架构成本。
4. 降低复杂性
复杂性是成本驱动因素。如果您使应用程序保持简单,则可以节省资金。KISS 原则要求搜索问题以找到最简单的解决方案。
复杂性的降低始于需求的定义。降低复杂性的一种方法是询问“需要特定功能的频率”。降低复杂性的另一种可能性是投资回报率 (ROI) 问题。
降低复杂性的一个优势是系统的更好可控性和公司中安装的应用程序的概览。
如果您遵循重用原则,这也会降低组织的复杂性。
5. API优先
API first 意味着使用此原则设计的应用程序可以更容易地集成到其他系统中,因此更加灵活。
此外,所有应用程序功能都可以通过 API(应用程序编程接口)访问,而不仅仅是少数。
API 允许公司将功能分解为单独的、自主的服务。基于微服务构建应用程序有助于确保所有设备上的良好用户体验 (UX)。
API 优先策略允许组织构建服务于所有应用程序的 API,并且可以为所有设备、平台和操作系统有效地开发和维护。
6. 经常发布并避免大爆炸式部署
最好的做法是将更改分解成更小的块并经常部署而不是一个大版本。
这种最佳实践降低了复杂性并提高了变更的可管理性。同时,它减少了推出软件时的业务影响和风险,因为只有很小的部分发生了变化,并且可以更容易地回滚。
另一个好处是您的用户和利益相关者经常会获得新的功能片段并看到稳定的改进流。
值得考虑投资于自动交付管道,该管道应在项目开始时存在并与系统一起开发。