
88
|
第
9
章
监控和可观测性工具有不同的最佳实践和不同的实现,它们服务于不同的目的。
9.3 系统与软件注意事项
在传统的环境中,系统和软件之间的区别很明显:裸机基础设施就是系统,而在该系统
内运行的一切都是软件。现代系统,以及它们的许多高阶抽象,使这种区别变得不那么
清晰了。让我们从一些定义开始。
出于这些目的,软件是你正在积极开发的代码,它运行生产服务,为客户提供价值。软
件是企业想要运行以解决市场问题的工具。
系统是有关运行该服务所需的底层基础设施和运行时的所有其他内容的总称。系统是企业
需要运行以支持其想要运行的软件的东西。根据这个定义,系统(或基础设施,我们可以
在这里互换使用这两个术语)包括从数据库(例如
MySQL
或
MongoDB
)到计算和存储(例
如容器或虚拟机)的所有内容,以及在部署和运行软件之前必须配置和设置的所有内容。
云计算的世界使这些定义有些难以确定,所以让我们进一步深入研究。假设要运行你的
软件,你需要运行底层组件,例如
Apache Kafka
、
Postfix
、
HAProxy
、
Memcached
,甚
至是
Jira
。如果你将这些组件的访问权作为服务购买,那么它们将不被视为此定义的基
础设施,你实际上是在付钱给其他人为你运行它。但是,如果你的团队负责安装、配
置、偶尔升级以及对这些组件的性能进行故障排查,那么这是你需要担心的基础设施。
与软件相比,系统层的一切都是不经常变化的,专注于不同的用户群,提供不同的价值。
软件
—
你为客户编写的代码
—
是你业务的核心差异化因素:这正是你的公司今天存在 ...