精华内容
下载资源
问答
  • 大家言必称云原生,却鲜少有人告诉你到底什么是云原生,若是找资料来看,读完大多会感觉云绕雾罩,一知半解,总之虚得很;甚至会让你一度怀疑自己的智商,不过我对于读不懂的文章,一律归因于写文章的人太蠢,当然这...

    伴随云计算的滚滚浪潮,云原生(CloudNative)的概念应运而生,云原生很火,火得一塌糊涂,都9102年了,如果你还不懂云原生,那真的out了。

    大家言必称云原生,却鲜少有人告诉你到底什么是云原生,若是找资料来看,读完大多会感觉云绕雾罩,一知半解,总之虚得很;甚至会让你一度怀疑自己的智商,不过我对于读不懂的文章,一律归因于写文章的人太蠢,当然这不一定是事实,但这样的思考方式能让我避免陷入自我怀疑的负面情绪。

    9e77f0d3d24bb74856894f582441eb1d.png

    云原生之所以解释不清楚,是因为云原生没有确切的定义,云原生一直在发展变化之中,解释权不归某个人或组织所有。

    技术的变革,一定是思想先行,无产阶级革命事业兴旺发达也是因为有战无不胜的马指导。

    1、何谓云原生?

    云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。

    Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念;2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器

    541cb9ab07e06d7a8d64965be34d77ab.png

    2015年云原生计算基金会(CNCF)成立,CNCF掺和进来后,最初把云原生定义为包括:容器化封装+自动化管理+面向微服务;到了2018年,CNCF又更新了云原生的定义,把服务网格(Service Mesh)和声明式API给加了进来。

    可见,不同的人和组织对云原生有不同的定义,相同的人和组织在不同时间点对云原生也有不同的定义,真是乱的一匹,搞得鄙人非常晕菜,我的应对很简单,选一个我最容易记住和理解的定义:DevOps+持续交付+微服务+容器

    总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

    云原生构建应用简便快捷,部署应用轻松自如、运行应用按需伸缩。优点不一而足,缺点微乎其微;秒杀传统Web框架,吊打祖传IT模式,实在是保命装逼、评优晋级不可多得的终极绝密武器。

    2、云原生的四要素

    微服务:几乎每个云原生的定义都包含微服务,跟微服务相对的是单体应用,微服务有理论基础,那就是康威定律,指导服务怎么切分,很玄乎,凡是能称为理论定律的都简单明白不了,不然就忒没b格,大概意思是组织架构决定产品形态,不知道跟马克思的生产关系影响生产力有无关系。

    微服务架构的好处就是按function切了之后,服务解耦,内聚更强,变更更易;另一个划分服务的技巧据说是依据DDD来搞,不过鄙人对DDD知之甚少。

    容器化:Docker是应用最为广泛的容器引擎,在思科谷歌等公司的基础设施中大量使用,是基于LXC技术搞的,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,谷歌搞的,Docker和K8S都采用Go编写,都是好东西。

    DevOps:这是个组合词,Dev+Ops,就是开发和运维合体,不像开发和产品,经常刀刃相见,实际上DevOps应该还包括测试,DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付能力。

    持续交付:持续交付是不误时开发,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发版本和稳定版本并存,其实需要很多流程和工具支撑。

    cab6cb32199fc53cac0e4f10e8ea182b.png

    3、如何云原生?

    首先,云原生借了云计算的东风,没有云计算,自然没有云原生,云计算是云原生的基础。

    随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势

    云计算的3层划分,即基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)为云原生提供了技术基础和方向指引,真正的云化不仅仅是基础设施和平台的变化,应用也需要做出改变,摈弃传统的土方法,在架构设计、开发方式、部署维护等各个阶段和方面都基于云的特点,重新设计,从而建设全新的云化的应用,即云原生应用。

    1. 本地部署的传统应用往往采用c/c++、企业级java编写,而云原生应用则需要用以网络为中心的go、node.js等新兴语言编写。
    2. 本地部署的传统应用可能需要停机更新,而云原生应用应该始终是最新的,需要支持频繁变更,持续交付,蓝绿部署。
    3. 本地部署的传统应用无法动态扩展,往往需要冗余资源以抵抗流量高峰,而云原生应用利用云的弹性自动伸缩,通过共享降本增效。
    4. 本地部署的传统应用对网络资源,比如ip、端口等有依赖,甚至是硬编码,而云原生应用对网络和存储都没有这种限制。
    5. 本地部署的传统应用通常人肉部署手工运维,而云原生应用这一切都是自动化的。
    6. 本地部署的传统应用通常依赖系统环境,而云原生应用不会硬连接到任何系统环境,而是依赖抽象的基础架构,从而获得良好移植性。
    7. 本地部署的传统应用有些是单体(巨石)应用,或者强依赖,而基于微服务架构的云原生应用,纵向划分服务,模块化更合理。

    可见,要转向云原生应用需要以新的云原生方法开展工作,云原生包括很多方面:基础架构服务、虚拟化、容器化、容器编排、微服务。

    幸运的是,开源社区在云原生应用方面做出了大量卓有成效的工作,很多开源的框架和设施可以通过拿来主义直接用,2013年Docker推出并很快成为容器事实标准,随后围绕容器编排的混战中,2017年诞生的k8s很快脱颖而出,而这些技术极大的降低了开发云原生应用的技术门槛。

    71b575e747c8e5e049eb5c314563e18e.png

    虽说云原生的推介文档有引导之嫌,但面对它列举的优点,作为杠精的我亦是无可辩驳。这么说的话,云原生也忒好了吧,应用是不是要立刻马上切换到云原生架构?我的观点是:理想很丰满,现实很骨感,需从应用的实际需要出发,目前的问题是否真的影响到业务发展,而推倒重来的代价能否承受得来。

    4、技术的趋势及影响

    软件设计有两个关键目标:高内聚、低耦合,围绕这2个核心目标,又提出了单一职责、开闭原则、里氏替换、依赖导致、接口隔离、最少知识等设计原则。

    软件工程师一直都在为这两个目标而努力奋斗,以求把软件编写得更加清晰、更加健壮、更加易于扩展和维护。

    但后来,人们发现有更多的诉求,希望开发软件变得更简单、更快捷,程序员希望更少编写代码,非专业人员也希望能开发程序,于是,更多的更傻瓜的编程语言被发明出来,更多的编程技术(组件)和编程思想(复用)被发明出来,比如库、组件、云基础设施。

    于是很多技术变成了屠龙之技,比如汇编,时代变了,建国后动物不能成精了,没有龙可以宰了,然后很多软件工程师摇身一变成了调参工程师、Call API砖家、用库包能手、拼组件达人,这是效率分工的结果,也是技术发展的使然

    纵观近二十年的科技互联网发展历程,大的趋势是技术下沉,特别是近些年,随着云计算的发展和普及,基础设施越来越厚实,业务开发变得越来越容易,也越来越没有技术含量,而之前困扰小团队的性能、负载、安全性、扩展性问题都不复存在,这不禁让互联网行业的油腻大叔们噤若寒蝉,仿佛分分钟就要被卷入历史洪流而万劫不复。

    虽然不可否认技术的重要性在降低,但也还不至于那么悲观。遥想PC时代,当VB、Delphi、MFC出现的时候,也有类似论调,所见即所得,点点鼠标,就可以开发PC桌面程序,是不是很高端?那时候码农的担心相比现在恐怕是只多不少吧,但后来随着互联网兴起,出现了后端开发这个工种,码农很快找到了新的战场,网络、分布式、数据库、海量服务、容灾防错,于是又玩出一堆新花样。

    如果说PC时代的基础设施是控件库,互联网时代的基础实施是云,那AI时代基础设施是什么?又会有什么高端玩法?

    展开全文
  • ​在云计算上下文中,什么是云原生应用?并且“基于云(cloud-based)”与“云原生(cloud-based)”指的完全相同的架构吗?云原生开发意味着使用一套特定的方法和工具,或者简单地在特定环境上安装、运行和管理你...

    7994c739c502822ef1686c7faf04b0e0.png

    ​在云计算上下文中,什么是云原生应用?并且“基于云(cloud-based)”与“云原生(cloud-based)”指的是完全相同的架构吗?
    云原生开发意味着使用一套特定的方法和工具,或者简单地在特定环境上安装、运行和管理你的应用吗?
    让我们试着用朴实的语言给出云原生应用的定义,以及云原生开发过程的关键原则,消除其一些神秘感并消除围绕云原生技术和云原生架构的一些混乱。

    什么是云原生应用?

    最简洁的定义可能是它是使用基于云的技术开发的应用程序,完全放在云上并在云上进行管理。你是否感觉到“基于云( cloud-based)的应用”与“云原生(cloud-native)应用”之间的根本区别?
    前者(“基于云的应用”)可以是一种老一点的应用,经过重新构架之后运行在云操作系统上。而后者则是从一开始就是在云上。
    云原生应用端到端的(end-to-end)运行在云上。这意味着它已经使用基于云的技术和服务进行编写,测试并部署在云中,而不仅仅是后来才将其托管到云计算环境中。
    现在,如果要突出云原生应用区别于传统应用的特征,我将它们概括为三点:
    它们在构建时就考虑了敏捷性和高度灵活性,这意味着可以带来更好的安全性,顶级的性能并改善客户体验。
    迅速地运行新功能、采用变更以及全面自定义应用;
    它们不依赖“单体式”的软件代码库; 相反,它们以“模块化”的方式构建,并利用了多种基础设施和云计算框架。

    云原生应用的三个典型的特点

    换句话说,我们怎么识别一个云原生应用呢?
    让我将一长串的特征缩减为最具体的特征:
    它们不会局限在特定的公有云基础设施上。
    它们可以很好地水平扩展,因为它们利用了云平台的弹性。
    它们在“构建”过程中使用了一系列“云特有”的开发与运维方法论,技术以及架构方法,包括:轻量级的容器环境,基础设施即代码,微服务,编排。

    开发云原生应用的7个原因

    如果你认为以上所提及的云原生特性还不足以让你选择云原生开发,这里有一些更具说服力的东西:1 管理基础设施更加容易
    让无服务器(Serverless)架构来为你服务!
    在诸如AWS Lambda和Azure Functions这样的serverless平台的帮助下,类似于配置网络,提供云实例,确保有充足的存储空间等操作都会被自动关照。
    所有留给你做的就是上传你的代码。2 云原生应用对故障更具韧性
    “理想”的应用会自带自愈能力。因此,希望它能够自动处理“停转(outages )”,具有内在的容错能力。如果出现问题,你的云原生应用将会“迅速”而谨慎(discreetly)地从一个数据中心转移到另一个数据中心。简而言之:终端用户的体验不会被影响,并且你不必再为停工检修(downtime )的成本而焦虑。3 你可以更快地发布你的APP
    因为它支持DevOps 过程——诸如构建、测试、部署等关键操作的自动化与协同实现了流水线化——你的云原生应用就会加速整个软件的交付过程。4 低成本
    成本减少背后的四个主要原因:
    容器:容器化的应用将使你更加轻松和安全地对其进行管理。
    云原生工具,可以使工具运用达到一定程度的标准化。
    开源模型(The Open-Source Model)
    无服务器计算(Serverless Computing,),支持按使用付费模式并提升了定价的灵活性5 你的应用可以自动的(水平)扩展以满足需求的增长
    云原生应用架构的主要属性之一是自动扩展。
    基本上,你的应用程序将根据默认情况进行扩展,以处理你未来的业务需求。而这也反映在成本上:你只为你使用的计算资源付费。6 你的应用支持自动供给(Auto-Provisioning)
    只要想象一下:你的关键业务app将会平稳运行(non-eventful),恰好按照应用所需来分配服务。
    它(关键业务app)将会自动地利用“自服务”以及编程式的供给(programmatic provisioning),这样你不必为它们的平滑运行手动提供所需资源。7 你将会提供更好的客户体验
    可以十分确信的预见,由于云原生的原则是以快速交付新功能和不断迭代为中心,因此你将能提供更好的终端用户体验。

    展开全文
  • 不仅如此,云原生甚至还有自己的基金会:由Linux基金会于2015年推出的云原生应用基金会(CNCF)。“云原生”定义在一般用法中,“云原生”一种构建和运行应用程序的方法,它利用了云计算交付模型的优势。“云原生”...

    “云原生”这个词被大量引用,尤其是云服务商。不仅如此,云原生甚至还有自己的基金会:由Linux基金会于2015年推出的云原生应用基金会(CNCF)。

    “云原生”定义

    在一般用法中,“云原生”是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势。“云原生”是关于如何创建和部署应用程序,和位置无关。 这意味着应用程序位于云中,而不是传统数据中心。

    CNCF将“云原生”定义的更为狭窄,意味着使用开源软件堆栈进行容器化,其中应用程序的每个部分都打包在自己的容器中,动态编排,以便每个部分都被主动调度和管理,以优化资源利用率和面向微服务的应用程序,以提高应用程序的整体灵活性和可维护性。

    咨询公司Deloitte的董事总经理Mike Kavis说:“云原生应用程序专门设计用于运行现代云计算平台所需的弹性和分布式特性。” “这些应用程序松散耦合,意味着代码不会硬连接到任何基础架构组件,因此应用程序可以按需伸缩,并采用不可变基础架构的抽象。通常,这些架构是使用微服务构建的,但这不是强制性要求。“

    云服务提供商Splunk的首席技术支持者Andi Mann表示,对于云原生应用程序而言,最大的不同之处在于应用程序的构建,交付和运维方式。“利用云服务意味着使用敏捷和可扩展的组件(如容器)来提供离散和可重用的功能,这些功能以良好描述的方式集成,甚至跨越多云等技术边界,这使得交付团队可以使用可重复的自动化和编排来快速迭代。”

    云原生应用程序开发通常包括DevOps,敏捷方法,微服务,云平台,Kubernetes和Docker等容器,以及持续交付,简而言之,每种新的和现代的应用程序部署方法。

    因此,你确实希望拥有平台即服务(PaaS)模型。PaaS不是必需的,但它使事情变得更容易。绝大多数云客户从基础架构即服务(IaaS)开始,这有助于从底层硬件中抽象出他们的应用程序。但PaaS增加了一个额外的层来抽象底层操作系统,因此你可以完全专注于应用程序的业务逻辑,而不必担心进行操作系统调用。

    云原生和本地部署应用程序之间的差异

    云原生应用程序开发采用与传统企业应用程序完全不同的体系结构。

    编程语言

    编写在公司服务器上运行的本地部署应用程序往往使用传统语言编写,如C/C ++,C#或其他Visual Studio语言(如果部署在Windows Server平台上)和企业级Java。如果它在大型机上,可能使用Cobol。

    云原生应用更有可能以网络为中心的语言编写,这意味着使用HTML,CSS,Java,JavaScript,.Net,Go,Node.js,PHP,Python和Ruby。

    可更新

    云原生应用程序始终是最新的,云原生应用始终可用。

    本地部署应用程序需要更新,并且通常由供应商按订阅提供,并且在安装更新时需要停机。

    弹性

    云原生应用程序通过在峰值期间增加的资源来利用云的弹性。如果你的基于云的电子商务应用程序使用频繁,你可以将其设置为使用额外的计算资源,直到峰值消退然后关闭这些资源。云原生应用可以根据需要调整增加资源和规模。

    本地部署应用程序无法动态扩展。

    多租户

    云原生应用程序在虚拟化环境中工作,并与其他应用程序共享资源没有问题。

    许多本地部署应用程序要么在虚拟环境中不能正常工作,要么根本不工作,必须要非虚拟化环境。

    连接资源

    本地部署应用程序与网络资源的连接相当严格,例如网络,安全性,权限和存储。其中许多资源需要进行硬编码,如果移动或更改了任何内容,它们就会中断。

    “网络和存储在云端完全不同。当你听到“重新平台化”一词时,通常是为了适应网络,存储甚至数据库技术的变化,以允许应用程序在云中运行,“Deloitte的Kavis说。

    停止时间

    云中存在比本地部署更大的冗余,因此如果云供应商遭受中断,则另一个冗余区域可以消除中断。

    本地部署应用程序可能已准备好故障转移,但如果服务器出现故障,应用程序可能会崩溃。

    自动化

    云计算的大部分都是自动化的,其中包括应用程序管理。 “云原生交付的好处,特别是速度和敏捷性,依赖于可靠,经过验证和经过审核的已知良好流程的基础,这些流程根据自动化和编排工具的需要而不是通过人工干预重复执行,”Splunk的Mann说。工程师应该考虑自动化是不止一次做的任何事情,以实现可重复性,自助服务,敏捷性,可扩展性以及审计和控制。

    本地部署应用程序必须手动管理。

    模块化设计

    本地部署应用程序往往在设计上是单一的。他们肯定会将一些工作卸载到库中,但最终它是一个包含大量子程序的大应用程序。云原生应用程序更加模块化,许多功能分解为微服务。这允许在不需要时关闭它们,并将更新推广到那个模块,而不是整个应用程序。

    无状态

    云的松耦合特性意味着应用程序与基础架构无关,这意味着它们是无状态的。云原生应用程序将其状态存储在数据库或其他外部实体中,因此实例可以来去,应用程序仍然可以跟踪应用程序在工作单元中的位置。 “这是松耦合的本质。不依赖于基础架构允许和应用程序以高度分布的方式运行,并且仍然保持其状态独立于底层基础架构的弹性性质,“Kavis说。

    大多数本地部署应用程序都是有状态的,这意味着它们会在运行代码的基础架构上存储应用程序的状态。因此,在添加服务器资源时可能会破坏应用程序。

    云原生的挑战

    Mann说,客户犯下的一个重大错误就是试图将旧的本地部署应用程序直接并迁移到云端。 “试图利用现有的应用程序,特别是单一的遗留应用程序 ,并将它们转移到云基础架构上将无法利用必要的云原生功能。”

    相反,你应该以新的方式开展新事物,或者将新的云原生应用程序放入新的云基础架构中,或者通过拆分现有的单块应用来从头开始使用云原生原则重构它们。(译者注:这个观点可能有点绝对,迁移到云,至少可以先开始利用云的一些优势,至少能提高资源利用率。对许多组织来说,重构应用程序也基本是不可能的。)

    你还需要放弃旧的开发方法。瀑布模型当然不会再用,甚至敏捷开发可能还不够。因此,你必须采用新的云原生方法,如最小可行产品(MVP)开发,多变量测试,快速迭代,以及在DevOps模型中跨组织边界密切合作。

    云原生有很多方面,包括基础架构服务,自动化/编排,虚拟化和容器化,微服务架构和可观察性。所有这些都意味着一种新的做事方式,这意味着在学习新方法时打破旧习惯。请以以有节奏的速度做到这一点。

    原文链接

    https://www.infoworld.com/article/3281046/cloud-computing/what-is-cloud-native-the-modern-way-to-develop-software.html

    译者 肖力

    新钛云服技术副总裁,十九年运维经验,曾就职盛大、金山。丰富的私有云和运维管理经验,是国内虚拟化实践先驱者和业内知名的虚拟化专家,主导参与G云、西山居以及多个私有云/专享云的建设运维。开源云联盟WG5工作组组长。云技术社区创始人,《深度实践KVM》等书作者。

    展开全文
  • 云原生是什么

    2020-12-13 12:44:20
    云原生概念 ...云原生不是一个具体的产品,也绝非把原先在传统IT架构中的东西搬上云,而是基于云的一种全新IT理念,必须与之相关的包括应用的架构、应用的开发方式、应用的部署和维护方式都要做出改变,

    云原生概念

    云原生从字面意思上来看可以分成原生两个部分。

    是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。

    原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️云服务的弹性分布式优势。

    云原生不是一个具体的产品,也绝非是把原先在传统IT架构中的东西搬上云,而是基于云的一种全新IT理念,必须是与之相关的包括应用的架构、应用的开发方式、应用的部署和维护方式都要做出改变,这样才能真正发挥出云的价值,包括弹性、动态调度、自动伸缩等,享受新IT技术带来的红利。

    云原生的四要素

    CNCF认为云原生系统应该具备三大特征:

    容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。

    自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。

    面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。

    要充分理解云原生,必须对其每一个板块进行了解。而当前,业界对云原生的看法是非常一致的,那就是四要素:容器、微服务、DevOps、持续交付

    一个一个展开。

    容器,云原生的基石

    容器不是新概念,1979年就出现了。

    很多人会将Docker与容器划等号,其实不然,Docker只是容器理念最普及的一种应用技术。容器的英文单词是Container,有集装箱的含义,而借用集装箱技术会很好理解容器的优势。集装箱的特点,在于标准化,这样可以大量堆叠,装卸也很方便。容器也是这样。

    与容器做比较的是虚拟化技术。早期,大家认为硬件抽象层基于Hypervisor的虚拟化方式能够最大程度实现系统管理的灵活性,因为各种不同操作系统的虚拟机都能通过Hypervisor生成、运行、销毁。但是,随着时间推移发现,Hypervisor没有想象的那么好,因为它的原理是每个虚拟机都要安装一个完整的操作系统和大量的应用,而实际生产环境大家更关心的是自己部署的应用。显然,如果每次都部署一个完整的操作系统和大量关联的开发环境,开发效率、管理效率都会很低下。

    于是有了容器这种方式,简单说,它只把应用代码运行所需相关的环境打包、封装进了一个系统,就像集装箱一样,直接运走就行,不用关心船是什么样,到哪都可以跑起来。

    容器技术有四大特点:

    极其轻量:只打包了必要的Bin/Lib;

    秒级部署:根据镜像的不同,容器的部署大概在毫秒与秒之间(比虚拟机强很多);

    易于移植:一次构建,随处部署;

    弹性伸缩:Kubernetes、Swam、Mesos这类开源、方便、好使的容器管理平台有着非常强大的弹性管理能力。

    换句话说,使用容器,用户可以将微服务及其所需的各种配置、依赖关系和环境变量很方便的移动到全新的服务器节点上,而无需重新配置环境。

    在容器领域,Docker是最受欢迎的容器格式标准。同时,与Docker配合使用的Kubernetes则成为了容器编排和管理工具中的事实标准。

    微服务,改变产品开发方式

    微服务是什么?重点在“微”。它的核心是将单个应用程序作为一组小型服务来开发。原来一个产品的开发可能是拆成几个大的模块,然后由几个团队来做,然后再合,微服务的理念是把一个产品拆的更细,可能一个人、几个人负责一个服务的开发,每个服务之间都是独立的。

    每个服务都在自己的进程中运行,并使用轻量级机制(通常是基于HTTP的API)进行通信。这些服务是围绕业务功能构建,可以通过全自动部署机制独立部署,不需要集中管理,可以用不同的编程语言编写,并使用不同的数据存储技术。

    所以,微服务核心就是服务粒度要小,每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。但是又不能太小,否则易发生“服务爆炸”。通常在工程实践中,如果一个功能被两个或两个以上的服务调用,就可以被封装为服务。

    所以,微服务的优点很明显,小而美、松耦合、灵活、易集成,但是挑战也很明显,最大的问题在于服务如何切分。其实,早在1968年康威就提出了——康威定律,系统的服务划分应该是根据组织架构的功能来划分。这一点用在微服务领域也非常合适。

    这样按照组织架构划分的优势在于:

    1.内聚更强,所有遵循同一种业务准则的人内聚在一起,就容易解决问题。

    2.服务解耦,变更容易,更加敏捷。

    DevOps,内部协作更紧密

    DevOps,如果从字面上来理解,是Dev(开发)+Ops(运维)。

    实际上,可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。DevOps是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    为什么要整合?因为能帮助企业提升效率。

    众所周知,传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。

    每个部门需求都不同,怎么调和?DevOps的价值就体现在这。DevOps的引入能对产品交付、测试、功能开发和维护起到意义深远的影响。其最大的价值在于,透过自动化“软件交付”和“架构变更”的流程,能使得构建、测试、发布软件更加地快捷、频繁和可靠,这是每一个企业都期望的。

    因此,更深层次的理解,DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动。

    持续交付,云原生终极目标

    如何理解持续交付?听着比容器、微服务、DevOps更抽象。简单来说,它是一种状态,一种能力,就像生产线能持续交付产品一样。

    具体而言,持续交付是一种软件工程手法,它能让软件产品的产出过程在一个短周期内完成,保证软件可以稳定、持续的保持在随时可以发布的状况。它的目标在于让软件的构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。

    为什么要有持续交付?这是和曾经的软件开发方式相比的,过去的软件开发周期以月、季度、年来计算,今天呢?一个应用晚上线一个小时造成的损失都可能是巨大的,所以要小步快跑、快速迭代,这就是持续交付的价值所在,不断的交付,不断的修正。

    很显然,如果把云原生的四要素串联起来,持续交付才是最终目标。但要实现持续交付,容器、微服务、DevOps缺一不可。

    总结一下,云时代必须以全新的理念来看待软件架构和基础设施,只有从这个角度理解云原生才能得到正确的答案。未来必然是属于云原生的,所以,企业变革的绝不仅仅是工具,而是从思想到方法,再到工具的一整套理念。只有这样,才能更好迎接云时代的到来。

    展开全文
  • 云原生从字面意思上来看可以分成云和原生两个部分。云和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。原生就是土生土长的意思,我们在开始设计应用的时候...
  • 什么是云原生

    2020-10-10 19:24:08
    云原生从字面意思上来看可以分成云和原生两个部分。 云和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。 原生就是土生土长的意思,我们在开始设计应用的...
  • 什么是云原生?

    2021-02-07 14:09:45
    云原生从字面意思上来看可以分成云和原生两个部分。 云和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。 原生就是土生土长的意思,我们在开始设计应用的...
  • 什么是原生APP首先说明下什么是原生APP?原生APP又称Native App,开发针对苹果IOS封闭、...然而这种APP通常由“服务器数据+APP应用客户端”两部份构成,APP应用所有的UI元素、数据内容、逻辑框架均安装在手机...
  • 云原生从字面意思上来看可以分成云和原生两个部分。 云和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,包含IaaS、PaaS和SaaS。 原生就是土生土长的意思,我们在开始设计应用的时候就...
  • 但是到底这个词是什么意思,它的具体含义是什么,其实却是非常含糊的。云原生指的是一个灵活的工程团队,遵循敏捷的研发原则,使用高度自动化的研发工具,开发专门基于并部署在云基础设施上的应用,以满足快速变化的...
  • 一文带你了解云原生

    2021-02-23 22:45:14
    而今天要给大家带来的便是云原生技术~那么什么是云原生呢?我们将名词拆成两部分—云、原生,这些相对于本地应用来的,云相对于本地而言的,传统的应用运行在本地机房的服务器上,而云的应用运行在云端...
  • CNCF给出了云原生应用的三大特征: 面向微服务:明确服务间的依赖,互相解耦。 容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为...
  • 随着容器技术的快速发展和广泛应用,毫无疑问云原生技术未来发展的必然趋势。作为国内最早布局容器技术的阿里云,无论在技术还是产品上,都取得了极大的成果。阿里云资深技术专家易立通过阿里云容器服务,分享容器...
  • 马上都要1202年了,如果你还没有搞明白“云原生”,那真是OUT啦。按照权威组织CNCF给出的官方定义,云原生是通过一系列的软件、规范和标准,帮助企业和组织在现代的动态环境,如公共云...这是什么意思呢?相信不少企...
  • 云原生开发中, 可能会跨多种基础架构进行部署. 从而一个应用在开发时需要兼顾多种工具和语言和框架, 同时又要敏捷开发. 为了应对复杂情况, 通过中间件来支持 应用的敏捷开发, 并且支持了应用在高度分布式平台上...
  • 此外,基础架构很可能为Kubernetes上运行的云原生应用程序做好了准备。 Yunion OneCloud的构建旨在为这种情况提供云体系结构,从而使它成为基础云基础结构与跨许多云的覆盖kubernetes集群之间的中间层。 许多人...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

云原生应用是什么意思