多年来,单片应用程序一直是实现业务需求的标准企业体系结构。但是,一旦云基础架构开始以规模和速度处理业务加速,情况就发生了重大变化。如今,应用程序体系结构也已进行了转换,以适应云本地应用程序和微服务,无服务器和事件驱动的服务,这些服务在跨混合和多云平台的不可变基础架构上运行。
根据Cloud Native Computing Foundation(CNCF)对云原生的定义: “云原生技术使组织能够在现代,动态环境(例如公有云,私有云和混合云)中构建和运行可扩展应用程序。容器,服务网格,微服务,不变的基础结构和声明性API就是这种方法的例证。”
“这些技术使松散耦合的系统具有弹性,可管理性和可观察性。结合强大的自动化功能,它们使工程师能够频繁且可预测地以最小的工作量进行高影响力的变更。”
像Kubernetes这样的容器编排平台允许DevOps团队构建不可变的基础架构,以开发,部署和管理应用程序服务。现在可以进行快速迭代的速度与业务需求保持一致。
那么,创建云原生应用程序架构需要哪些功能,开发人员将从中受益呢?尽管有很多方法可以构建和架构云原生应用程序,但以下是要考虑的一些要素:
1. 运行时(Runtime):它们更可能以容器优先或/和支持Kubernetes本机语言编写,比如Java,Node.js,Go,Python和Ruby等运行时。
2. 安全性:在多云或混合云应用程序环境中部署和维护应用程序时,安全性至关重要,应成为环境的一部分。
3. 可观察性:使用诸如Prometheus,Grafana和Kiali之类的工具,它们可以通过提供实时指标以及有关如何在云中使用应用程序和如何运行的更多信息来增强可观察性。
4. 效率:专注于极小的内存占用,较小的工件大小和快速的启动时间,以使应用程序可在混合/多云平台之间移植。
5. 互操作性:将云原生应用程序与开源技术集成在一起,使你能够满足上述要求,包括Infinispan,MicroProfile,Hibernate,Kafka,Jaeger,Prometheus等,用于构建标准的运行时架构。
6. DevOps/DevSecOps:这些方法旨在以最小的可行产品(MVP)和安全性作为工具的一部分,连续部署到生产中。