简洁至上

Simplicity Saves

在SaaS、IaaS和开源软件之间,快速轻松地启动任何一个旨在解决特定技术或业务问题的众多解决方案变得非常容易。现代开发世界承诺任何代码都可以在任何地方运行,因为库、框架和应用程序之间具有无缝的互操作性,这些库、框架和应用程序利用定义明确且一致的API。

开发人员、数据分析师和基础设施团队比以往任何时候都拥有更多可用的工具。然而,许多人被与尝试使用手动和自动化流程的混合来将所有内容拼接在一起相关的挑战所淹没。          

对于企业来说,这个问题尤其令人头疼。InfoWorld最近的一篇文章,复杂性正在扼杀软件开发人员,描述了企业必须克服的困境

“从构建单体架构中的应用程序……到将其分解成多个微服务,打包成容器,使用Kubernetes编排,并在分布式云环境中托管,这标志着我们软件复杂程度的明显跃升。”  

甚至还有一个术语来描述它——云复杂性——以及德勤提供的配套云复杂性成本计算器。云原生计算基金会 (CNCF) 的构成云原生生态系统的大约 1000 个服务的景观是该问题的确凿证据——而这些都是云原生解决方案。这还不包括三大云 (AWS、GCP、Azure) 中每个云提供的 200 多项服务。

云原生不必复杂

这里的错误选择是选择本身会导致复杂性。事实并非如此。开发人员和架构师可以选择不复杂的框架和服务——即使有无数的选择也是如此。这是降低复杂性的关键——明智地选择和选择云原生。

原因之一是大多数云原生应用程序本身并不复杂。诚然,存在一个连续体,但Kubernetes 的固有复杂性并非源于Kubernetes,而是陷入了非云原生世界,使用连接器和插件做一些不自然的事情来尝试集成非云原生应用程序。正如我们从无数教程中看到的那样,即使是像对象存储即服务这样简单的事情,如果它是云原生的,也可以很容易。

当然有理由保留遗留基础设施,我们并非暗示相反,但前进的道路和降低复杂性的方法是规划一条通往应用程序、基础设施和工作流的云原生实现的路径。在这一点上,大多数遗留应用程序可以在云平台上运行,但它们未能利用云原生软件提供的可扩展性、可扩展性、互操作性和可移植性。试图通过构建 API 支持和其他扩展作为在其之上运行的微服务来将其塞入云原生架构会造成不必要的复杂性。将遗留代码塞入容器可能是迈向获得云原生优势的第一步,因为然后该容器可以由 Kubernetes 编排。但是,从长远来看,随着开发人员在维护和改进代码库的同时管理依赖项,您会增加复杂性。

相反,云原生应用程序构建为作为微服务运行。每个微服务都有其自己的功能,并且微服务通过 API 进行通信以形成完整的应用程序。将每个功能分解成其核心本身就是一种简化。在基于微服务的应用程序中,代码及其功能几乎总是比在大型单体应用程序中定义和组织得更清晰。

云原生应用程序不仅仅是一组微服务。容器是一种抽象,它为在其中运行的微服务代码提供操作系统和其他依赖项。容器消除了在微服务运行的每个地方维护依赖项的要求。我们现在已经简化了应用程序和底层依赖项。

Kubernetes 是关键

Kubernetes 建立了一个基础架构,用于向其编排的容器提供硬件资源和服务。这简化了为微服务提供监控、报告、身份验证和加密等服务。这些服务不需要为每个应用程序单独安装,并且由于环境是云原生的并且其所有部分都是 API 驱动的,因此应用程序不需要手动编码以包含这些服务。

应对软件复杂性的技巧

单体现在是一个流动的分布式应用程序。结果是活动部件的数量呈指数级增长。然而,每个活动部件都得到了简化。在每一步,开发人员都需要抵制引入复杂性的冲动,而是奖励简单性。删除微服务之间的依赖关系。即使手动流程看起来像一个巧妙的解决方法,也必须将其简化并替换为代码。使用 Kubernetes 及其声明式 API管理所有内容——服务、代理、网络、存储——以一致的方式。          

一旦复杂性最小化并且一致性最大化,您就可以通过自动化实现运营效率。可重复且可预测的过程易于自动化以遵循最佳实践,以便应用程序可以弹性扩展而不会出现运行时意外。通过确保跨 Kubernetes 集群的一致配置和应用程序设计来简化。    

选择有助于简化的后端对象存储。对象存储是一项基础的云原生技术,但并非所有解决方案都相同。注意添加了对象存储接口的遗留存储设备——根据定义,设备在多个平台上不一致且不可用。相反,请查看专为云原生实现而设计和构建的对象存储。MinIO 软件定义的对象存储提供了一个简单、高效、高性能的解决方案,可以在从裸机到任何 Kubernetes 发行版的任何地方运行,为开发人员和基础设施团队提供一致的 API 驱动的体验。  

简单性是我们 MinIO 的核心价值观之一。我们在从产品的​​设计、代码、文档和支持到我们在网站和博客上使用的语言和设计的所有工作中都追求简单性和简约性。我们的团队努力构建软件定义的对象存储,使其成为 AWS 之外速度最快、可扩展性和实施最广泛的 S3 兼容存储——并为您提供易于使用的工具,如MinIO Client (mc)MinIO Kubernetes Operator 来管理它。

我们对简单性的不懈追求意味着云架构师拥有一个坚实的云原生对象存储基础,他们可以在其上构建、部署和运行应用程序。MinIO 是一个只有 100 MB 的小型二进制文件,可以在任何地方的任何地方运行,通过一致的云原生和 S3 兼容接口提供高性能对象存储。MinIO 的强大功能与其简单性紧密相连。我们构建它以便在任何云、数据中心、开发人员笔记本电脑、专用边缘设备、裸机或 Kubernetes 上运行,以及任何组合——包括功能强大且易于配置的复制,可自动保持多个 MinIO 集群同步。

极简主义的简单性

乍一看,对于具有企业 IT 思维的人来说,云原生世界可能显得过于复杂,但云原生变得复杂的原因仅仅是我们使它变得复杂。核心云原生元素远非复杂——它们简单、直接、一致且可移植。云架构师必须依靠极简主义的简单性来减少错误的机会,提高正常运行时间并在多个云、数据中心和边缘实现弹性可扩展性。MinIO 提供了所有这些以及更多功能,使其成为一个出色的对象存储解决方案,可作为高性能、可靠和可扩展的云原生架构的基础。MinIO 只需下载 Docker 镜像或单个二进制文件然后执行即可在几分钟内安装和配置。配置选项和变体的数量保持在最低限度,从而导致几乎为零的系统管理任务和很少的故障路径。升级 MinIO 只需一个命令即可完成,该命令不会中断并且不会导致任何停机时间——从而降低总拥有成本。

下载 MinIO 并亲身体验简单、强大的云原生软件的外观、感觉和操作方式。