云原生|什么是云原生(——软件开发的现代方法)

【云原生|什么是云原生(——软件开发的现代方法)】
目录

  • 前言:
  • 云原生定义:
  • 云原生景观:
  • 云本地架构与内部架构的优势:
  • 云本地挑战:


前言:

防止看不到之前的内容。戳我跳到本人个人主页,点击查看更多知识点!
大家好,我是_奇奇,为一名C/C++博主。河牧院大一在读。
欢迎大家和我一起交流学习
??编程的前途是光明的,道路是曲折的。笑到最后才是赢家
此篇为英文翻译而来。下文我们也称云原生为云本地。
云原生英文 Cloud Native 翻译过来为 《云本地》。其利用了许多现代软件开发技术,包括微服务、容器、CI/CD、敏捷方法和devops。
术语“云-本地计算”已经成为软件开发人员在云基础设施上构建、部署和维护现代软件应用程序所需的各种工具和技术的总称。在这里,我们定义了这个术语,考察了云本地环境,并确定了云本地的一些优点和缺陷。

云原生定义: Cloud-native是一种构建和运行软件应用程序的现代方法,它利用了云计算的灵活性、可伸缩性和弹性。Cloud-native包含了当今软件开发人员为公共云构建应用程序所使用的各种工具和技术,而不是适合于内部数据中心的传统架构。
构建和运行软件的云原生方法是由一群通常被称为“生于云端例如流媒体巨头Netflix和Spotify、叫车公司Uber和住宿预订平台Airbnb。自那以后,其他寻求类似数字敏捷性和颠覆性竞争优势的公司也采用了云本地方法。
这个云本地计算基金会(CNCF)定义cloud--原生的范围稍微窄一点,专注于应用程序容器化--将应用程序分解成微服务并打包在轻量级容器中,以便跨各种服务器部署和编排。
用CNCF自己的话说:“云本地技术使组织能够在公共、私有和混合动力车云。”
云本地应用程序开发通常包括结婚微型服务, 云平台, 容器, 库伯奈特斯不可变的基础设施、声明性API和连续交货像这样的技术devops和敏捷方法.
云原生景观: 这种流行软件开发技术的转变已经见证了以开源工具为主的新局面的出现。全国妇女委员会维持这个生态系统的交互式图形.
云本地计算有四个层次需要理解:
  • 应用程序定义和开发层。云本地堆栈的顶层关注开发人员用于构建应用程序的工具,如数据库、消息传递系统、容器映像以及持续集成和持续交付(CI/CD)管道。
  • 供应层。云本地堆栈的供应层包括构建和保护应用程序运行环境所需的一切,理想情况下是以可重复的方式。在云本地世界中,这通常涉及到作为代码的基础设施将映像存储在存储库中,自动化构建,并通过漏洞扫描、密钥和策略管理以及身份验证工具解决应用程序安全需求。
  • 运行时层。运行时层关注与云本地应用程序运行相关的任何内容,例如容器运行时--它仍然倾向于码头工人以及存储和网络.
  • 编制和管理层。编排和管理层汇集了部署、管理和扩展容器化应用程序(包括编排和调度)所需的工具。在大多数情况下,这意味着库伯奈特斯-以及服务发现、服务代理、API网关和服务网格。
在这些层之外,实现可观察性实践,所以所有这些服务都被有效地监控。一些组织还选择将他们的堆栈整合到自助服务中内部开发者平台或者去买一个平台即服务(PaaS)以方便开发人员采用。
云本地架构与内部架构的优势: 云本地应用程序开发需要与传统企业应用程序截然不同的体系结构,后者通常运行在内部数据中心。下面是一些关键的区别,以及云本地应用程序相对于传统应用程序开发模型的优势。
Languages. 为在公司服务器上运行而编写的内部应用程序往往使用传统语言编写,如c/c++、c#和企业Java云原生应用程序更有可能使用以web为中心的语言编写,比如HTML、CSS、Java、Javascript、.NET,去, Node.jsPHP,蟒蛇还有露比。使用现代语言和平台有助于吸引最优秀的工程师到您的组织工作。
Updatability. 云本地应用程序被构建为高可用性、弹性和定期更新,而内部应用程序通常使用瀑布方法每年更新一到两次。云计算的可更新性为开发团队提供了一个生产力提升,使他们能够专注于自己的竞争优势,并且比以前更频繁地向客户交付新特性。
Elasticity. 云本地应用程序通常利用云的弹性,根据需求灵活调整消费,而内部应用程序则需要物理地提供额外的基础设施才能有效扩展。这也会带来成本问题,因为云可以让你为你所使用的东西付费,避免昂贵的过度配置你自己的基础设施--至少理论上.
Multitenancy. 云本地应用程序在虚拟化空间中工作和使用多租户模型与其他应用程序共享资源没有问题。这给开发团队带来了明显的效率提升。
Downtime. 由于超大规模云供应商管理的数据中心的规模和地理分布,云提供了更大的冗余,因此可以通过快速重定向流量到另一个区域并避免昂贵的停机时间来更好地管理停机。
Automation. 云原生技术为工程师提供了大量的自动化机会,只需构建一次,就可以转向其他更紧迫的挑战。
Stateless. 云本地应用程序往往是无状态的,因为它们不会将保存的数据从一个会话传递到另一个会话。该模型提供了一个机会,可以轻松地跨多个服务器扩展,更容易地缓存以提高性能,使用更少的存储空间,并通过不连接到特定服务器来避免可怕的供应商锁定。
云本地挑战: 想要升降机和换档将现有的内部应用程序变成云本地应用程序而不进行架构挑战是一个常见的错误,但是为云重新架构本身也是一个重大的工程挑战。
找到合适的技能组合,适应以云为中心的安全模型,以及管理云环境中不断变化的成本概况所有这些仍然是希望实现云本地化的组织面临的关键挑战。
尽管如此,开发人员还是应该将cloud-native作为一种组织原则,或者为云构建新的应用程序,或者将现有的单片应用程序拆分成微服务,使它们更适合云环境。
这将需要从传统的瀑布式部署向更多的模式转变敏捷开发最小可行产品(MVP)开发,包括自动化,多变量测试,快速迭代,可观察性并与运营团队紧密合作devops模型.

    推荐阅读