云原生的优势,大概有以下几点:
是更好的资源效率,可以用较少的服务器上运行相同数量的服务
云原生基础架构可实现更高的开发速度,从而更快地改善服务,以降低风险
云原生允许多云(在公共云之间切换或在多个云上运行)和混合云(在数据中心和公共云之间移动工作负载)
3个要素目标:加速创新,降低成本,提高效率。
相比于传统应用,云原生应用意味着统一:
1.统一的技术标准:通常以微服务架构进行服务开发,服务之间使用标准的API契约进行通信。松耦合的架构方式会减轻因需求变更导致的系统迭代成本,并加快交付速度。
微服务倡导基于API接口通信,避免在服务间共享数据库,文件等有状态的实体。单个服务能独立的更新,扩展,重启而不影响其他服务。
微服务使得单个服务的开发团队更小,也更加独立。亚马逊内部采取2个披萨原则——即团队规模维持在刚好两个披萨能够吃饱,来限定团队规模。团队沟通成本可以维持在较低水平, 同时每个人都承担富有挑战性的工作。
松耦合+独立小型的团队使得持续更新和敏捷管理协作成为可能,因此微服务成为了云原生应 用的最佳开发实践之一。
2.统一的交付方式:标准容器化的打包方式实现了真正的应用可移植性,不依赖于特定的基础架构(虚拟机,混合云等)。
容器技术起源于linux的进程隔离虚拟化技术,将一组进程单独限定在同一个资源目录下,并可以限定其资源使用的配额。
Docker的出现将应用的整个运行时环境都打包成一个镜像文件,并基于容器本身的隔离特性,实现了应用在特定容器中可以轻松的在不同环境间移植,同时确保宿主机的安全。
在资源有限的场景,容器基于进程粒度的资源使用方式,也会降低系统的资源开销。
基于容器的应用将有助于构建统一的开发,交付和集成环境,是云原生应用的最佳交付载体。
3.统一的运维部署:基于容器的编排平台,可以充分利用不可变基础设施的特性。这使得在传统运维模式中的复杂部署策略(如灰度,蓝绿)变得轻而易举。
容器编排平台提供的自动化运维特性和声明式资源管理方式简化了持续构建中工具链之间的协作和调度。
容器编排带来的弹性伸缩能力和容错调度能力也让智能化运维成为可能。
技术驱动下的敏捷协作,和编排平台带来的运维能力共同构建了云原生应用的最佳运维实践
云原生应用又意味着分离:
1.存储与计算分离:存储与计算混合模型往往导致应用节点复杂且难以扩展和维护,云原生中利用存储抽象层实现了更加灵活的计算实例与存储实例绑定调度。
2.业务组件与通用组件分离:平台化运行将使应用本身只需保留业务相关的组件,其余的通用组件、监控运维功能则都由平台来提供。
3.关注度分离:平台提供的开箱即用能力,使应用开发者可以专注于编写为客户创造价值的业务代码。