前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云原生丨主题周】云原生为何物?为何重要?

【云原生丨主题周】云原生为何物?为何重要?

作者头像
博文视点Broadview
发布2020-06-10 15:10:37
3260
发布2020-06-10 15:10:37
举报
文章被收录于专栏:博文视点Broadview

小编说:云原生是一个宽泛的术语,本文带你快速了解云原生与云原生架构。本文选自《Python云原生》,了解本书详情请点击阅读原文。

云原生是一种团队、文化和技术组织形式,利用自动化工具和架构来管理软件复杂度和加速软件交付。

云原生概念已经超出了技术的范畴。我们需要从成功的公司、团队和个人身上了解行业的发展方向。

目前,像Facebook 和Netflix 这样的大公司都已经在云原生技术上投入了大量的资源,而一些小的公司也意识到了该技术的价值。根据云原生技术实践的反馈,我们总结了如下一些优点。

√ 结果导向和团队合作:云原生的方法将一个大问题分解成众多的小问题,从而使每个团队都能专注于各自的部分。

√ 减少重复工作:自动化减少了困难、繁杂和重复的手动工作量,并减少了停机时间。这将使系统更有效率。

√ 可靠而高效的应用程序基础设施:自动化可以对不同环境(无论是开发、阶段发布还是生产)中的部署做更多控制,还可以处理意外事故。自动化构建不仅有助于正常部署,而且在灾难恢复的时候,也能使重新部署变得更加容易。

√ 应用程序洞察:为云原生应用程序构建的工具可为应用程序提供更多洞察,从而使调试、故障排查和审计变得容易。

√ 高效可靠的安全性:每个应用程序都会关注安全性,确保可靠的身份验证。云原生为开发人员提供了多种确保应用程序安全性的方式。

√ 经济高效的系统:使用云管理和部署应用程序可以有效地利用资源,包括应用程序发布,通过减少资源浪费使系统花费更合理。

  • 云原生为何物?为何重要?

云原生是一个宽泛的术语,它可以充分利用不同的技术,如基础架构自动化或中间件开发、支持服务等,这些功能都属于应用交付周期中的一部分。云原生方法包括频繁的版本发布(无Bug、稳定),以及根据业务需求扩展应用程序。

使用云原生方法,可以系统地实现应用程序构建目标。

云原生方法远优于传统的面向虚拟化的业务流程,传统方法需要投入大量的精力来构建开发环境,以及软件交付过程中的其他不同环境。理想的云原生架构应具有自动化和组合功能,这些自动化技术还应实现跨平台管理和部署应用程序。

云原生架构还应该具有其他几个特性,如稳定的日志记录、应用程序和基础架构监控,以确保应用程序正常运行。

云原生方法能够帮助开发人员使用例如Docker 等工具,在不同的平台上轻易地创建和销毁应用程序。

  • 云原生运行时环境

当软件从一个计算环境迁移到另一个计算环境时,该如何使其可靠运行?最佳解决方案就是使用容器。这可能是从开发者自己的机器到预发布环境再到生产环境,也可能是从物理机到私有云或公共云中的虚拟机。Kubernetes 已经成为容器服务的代名词,越来越流行。

随着云原生框架的兴起和其周边应用程序的增加,容器的编排越来越受人关注。在容器运行时需要注意以下几点。

  • 管理容器状态和高可用性

一定要保持容器的状态(创建和销毁),特别是在生产中,因为从业务的角度看它们非常重要。而且还应该能够根据业务需求进行扩展。

  • 成本体现和分析

容器可以根据业务预算控制资源管理,并可在很大程度上降低成本。

  • 环境隔离

在容器内运行的每个进程都被隔离在该容器内。

  • 跨集群的负载均衡

应用流量由容器集群处理,在容器内均匀重定向,这将增加应用程序最大响应数量并维持高可用性。

  • 调试和灾难恢复

由于我们要在生产系统中使用,所以需要确保有正确的工具可以监控应用程序的运行状况,采取必要措施避免停机,并提供高可用性。

  • 云原生架构

云原生架构类似于我们为遗留系统创建的应用程序架构,但在云原生应用程序架构中,我们应该考虑一些特性,例如十二要素应用程序(应用程序开发模式的集合)、微服务(将单体业务系统分解为独立可部署服务)、自服务敏捷基础设施(自服务平台)、基于API 的协作(通过API 进行服务之间的交互)和抗脆弱性(自我实现和加强的应用程序)。

首先,我们来探讨一下什么是微服务。

微服务是一个更宽泛的术语,指将大型应用程序分解成更小的模块,分别开发直到发布。这种方法不仅有助于有效地管理每个模块,而且还可以帮助我们发现服务底层本身的问题。以下是微服务的一些关键部分。

  • 用户友好的界面:

微服务之间可以实现明确的分离。微服务的版本控制可以更好地对API 进行控制,为消费者和生产者提供更大的自由度。

  • 跨平台部署和API 管理:

由于每个微服务都是一个单独的实体,因此可以更新单个微服务而不用更改其他服务,同时也更容易将服务回滚到之前的更改。这意味着用来部署微服务的工件应该兼容不同的API 和数据模式。这些API 必须在不同的平台上测试,并且测试结果应该在不同的团队,即运维、开发人员之间共享,大家共同维护一个集中的控制系统。

  • 应用灵活性:

开发的微服务应该能够处理所有请求且必须做出响应,而不管请求的种类如何,包括可能的错误输入或无效请求。微服务也应该能够处理意外的负载请求并进行适当的响应。所以应当对微服务进行独立测试和集成测试。

  • 微服务的分布:

最好将服务分为小块服务,以便单独跟踪和开发,最终组合起来形成一个微服务。这种技术使得微服务开发更稳定、更有效率。

下图显示了一个云原生应用程序的高级架构。

在理想情况下,应用程序体系结构应该从两三个服务开始,然后通过不断更新版本进行扩展。了解应用程序架构非常重要,因为应用程序需要与系统的不同组件集成,并且在大型组织中会有团队来专门管理这些组件。微服务中的版本控制至关重要,因为软件开发的各个阶段都会使用不同的方法。

  • 微服务是一个新概念吗

微服务的概念由来已久了。微服务是一种用来划分大型系统中不同组件边界的架构模式。所有的微服务都以相似的方式工作,然后将不同服务链接起来,根据请求的类型处理特定事务的数据流。

下图描绘了微服务的体系结构。

  • 为什么说Python 是云原生微服务开发的最佳选择

为什么我们选择Python 并将其推荐给其他人?下面列举了几点原因。

  • 可读性

Python 是一种表达能力很强且易学习的编程语言。即便是业余爱好者也可以轻松掌握Python。与其他编程语言(例如Java 更关注圆括号、大括号、逗号和冒号)相比,使用Python你可以将更多的精力投入到编程上,减少调试语法的时间。

  • 库和社区

Python 有大量可以在不同平台(例如UNIX、Windows 和OS X)上运行的库。这些库可以根据你的应用程序需求轻松扩展。同时还有一个强大的社区致力于构建这些库,这使得Python 成为最适合用于业务的语言。

就Python 社区而言,Python 用户组(PUG)是一个基于社区开发模式的社区,这可以促进Python 在全球范畴内的普及。社区中的小组成员相互交流,有助于我们构建基于Python框架的大型系统。

  • 交互模式

Python 交互模式可以帮助你在调试完代码后,立即将其添加到主程序中。

  • 可扩展

Python 提供了更好的结构和概念,如模块,这比起任何其他脚本语言(如shell 脚本),可以更系统地维护大型程序。

本文选自《Python云原生:构建应对海量用户数据的高可扩展Web应用》

本书是你一站式地了解使用Python 构建云原生应用架构的理想读本。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档