云原生应用程序
在六,七年前云计算开始大步向前时,人们苦苦挣扎的重要问题之一是:“如果我想在公共云,私有云或混合云中运行它们,我的应用程序将是什么样子? ?
当时有很多方法可以回答这个问题。
一个流行的隐喻来自比尔·贝克(Bill Baker)的演讲,当时他在微软。 他将传统应用程序“宠物”与云应用程序“牛”进行了对比。 在第一种情况下,您要给宠物命名并在生病时护理它们恢复健康。 在后一种情况下,您给他们编号,如果其中一个发生问题,您会吃汉堡包并换一个。
还有其他尝试将这一区别编成法律。 “ 十二要素应用程序 ”是用于构建软件即服务应用程序的显式方法。 行业分析师Gartner从业务角度看问题,使用模式1和模式2区分传统IT(侧重于稳定性,健壮性,成本效益和垂直规模等属性)与云原生IT(强调适应性和灵活性)。敏捷)。
这些仍然是有用的观点。 许多现代,动态和横向扩展的工作负载均作为虚拟机在公共云和私有云(如OpenStack)中运行 。 显然,它们是根据与“ Big Iron”服务器上传统的按比例放大,长期运行的应用程序不同的原理开发和操作的。
但是,云原生通常意味着更具体的含义,尤其是在应用程序体系结构和设计模式的上下文中。 它是使用精细的API驱动的服务(也称为微服务)组成的容器化基础架构和应用程序的交集。 合并是偶然的。 像Netflix这样的公司正在推广微服务理念,以有效利用云计算。 首先通过早期的平台即服务产品实施容器,然后将其作为更广泛的标准化生态系统的一部分,容器是打包,部署和管理这些微服务的好方法。
顺便说一句,不要太在意微服务术语。 重要的是应用程序的整体敏捷性和可维护性。 正如通过使用持续集成和连续交付的DevOps流程交付的那样,这往往会导致模块化和松散耦合的服务,这些服务的依赖关系已明确定义。
但是,并非所有事情都需要分解为仅通过公开的,稳定的API进行通信的单功能服务,如果这对应用程序的性质和团队的规模没有意义的话。
容器本身维护服务之间的资源和安全隔离。 它们提供了一种快速且节省资源的方式,可以根据需要启动其他服务,并在需求下降且不再需要它们时退役。 从开发人员的角度来看,容器也是一种出色的生产力工具,因为容器将内容打包为一系列的层,并且可以在需要补丁时快速,一致地进行更新。
过去几年中,容器的最大变化也许是可用于管理容器的工具的数量和成熟度的增加。 Kubernetes是最著名的。 它使Linux容器操作自动化,并消除了部署和扩展容器化应用程序涉及的许多手动过程。
但是,Kubernetes只是涉及容器生态系统中的开源项目的起点。 有像Prometheus这样的监视程序,有像Jaeger这样的分布式跟踪程序。 Istio服务网格连接,管理和保护微服务。 另一个开发领域是功能即服务(通常称为无服务器 ),它响应事件(某种触发器)执行功能(即执行某些操作的代码)。 一个主要的驱动力是进一步简化程序员创建新服务的方式。
许多甚至大多数工作负载都可以在云中或在多个云的混合组合中运行。 但是,“云原生”应用程序的想法是,在云计算革命爆发约十年后,我们对充分利用新型基础架构的最佳方法有了一些扎实的想法。 并且,反过来,我们将继续改进这些基础架构技术,以为应用程序开发人员提供所需的工具。 这就是云原生的真正含义。 灵活,可扩展,可重用的应用程序使用了可用的最佳容器和云技术。
接下来要读什么
翻译自: https://opensource.com/article/18/7/what-are-cloud-native-apps
云原生应用程序