精华内容
下载资源
问答
  • CloudOS——云原生应用开发平台在工业互联网中的实践
    千次阅读
    2021-11-08 11:45:56

    前言
    工业互联网不是互联网在工业的简单应用,而是具有更为丰富的内涵和外延。它以网络为基础、平台为中枢、数据为要素、安全为保障,既是工业数字化、网络化、智能化转型的基础设施,也是互联网、大数据、人工智能与实体经济深度融合的应用模式,同时也是一种新业态、新产业,将重塑企业形态、供应链和产业链。
    CloudOS,一站式云原生应用开发平台,全隔离底层IT、容器、K8s,100%聚焦应用。接下来通过两个制造业龙头企业案例,为大家展示讲述CloudOS(云原生应用开发平台)在工业互联网中的实践。

    CloudOS,一站式云原生开发平台>

    在这里插入图片描述

    CloudOS应用于某著名空调制造商工业互联网开发平台
    企业研发现状:
    1.该制造商目前拥有多套数据中心,主数据中心、各大云计算厂商分布在全球各地的云平台等。
    2.多数据中心下,客户当前应用的开发、业务的部署工作量大,没有统一的工业互联网平台,各研发能力无法聚焦;
    3.多数据中心下,客户当前的运维压力大。

    企业诉求:
    1.行业能力标准化:制造商期望把工业互联网行业内分散的能力统一起来,形成统一的行业规范,做到标准化,成为行业的标杆,同时能够连通上下游企业务持续治理,进而服务整个行业。
    2.支撑平台统一化、规范化:建设统一的工业互联网平台,为开发者提供一个标准统一的研发支撑平台,规范研发生产环境,并将此平台开放给上下游企业。

    基于CloudOS建设高效工业互联网开发平台:
    1.应用架构标准化:统一技术架构,促进应用标准化,规范化服务接入,服务持续治理。
    2.应用与技术解耦:提供应用开发框架与工具,支撑快速开发和上线,降低开发门槛。
    3.集成运行一体化:丰富的预集成服务,打造应用分布式架构,支撑应用的云化部署。
    4.业务服务化:通过对核心业务对象和处理逻辑的聚合和解耦,构建通用的业务服务能力,实现业务服务化,并逐步沉淀为全局共享的业务服务平台。
    5.智能化运维:通过多维度实时监控系统链路的每个节点和每个环节,提供自动化的监控手段,提升系统智能化运维能力。
    6.服务生态系统:通过服务化及服务开放构建服务生态系统,盘活企业内部各域的业务能力,支撑向工业互联网转型。
    7.部署集群:将于AWS公有云,主数据中心及DMZ等多个环境,各部署一套生产及测试平台。

    CloudOS应用于国内某龙头家电制造商工业互联网开发平台
    企业现状:
    1.客户为国内家电龙头行业,已建设工业互联网PaaS容器平台。期望将互联工厂模式知识化,同时集成各类资源,搭建一个集成化、数字化和智能化的服务平台,让用户可以全流程参与产品设计研发、生产制造、物流配送、迭代升级等环节,以“用户驱动”作为企业不断创新、提供产品解决方案的源动力,把以往“企业和用户之间只是生产和消费关系”的传统模式转化为“创造用户终身价值”的新模式。
    2.机理模型等非传统开发人员对底层IT技术接触少,缺少简单易用的开发环境;资料记录落后,无法了解业务模块间关系;业务逻辑(机理模型公式),缺乏共享复用机制。

    企业诉求:
    建设一套面向工业互联网机理模型的简单易用开发平台:
    1.一站式开发平台:实现机理模型的架构设计、开发、测试和发布。
    2.资产在线保存:将业务模块之间的关系保存在平台上【架构资产】,降低避免对特定人员的依赖,便于后续接手维护。
    3.资产共享复用:实现机理模型在开发团队之间的共享,避免重复开发。
    4.多集群发布:开发完成的机理模型发布到多套容器集群环境。

    基于CloudOS建设高效工业互联网开发平台:
    建设内容:
    1.可视化架构设计平台:实现机理模型的“拖拉拽”式快速设计。
    2.DevOps开发平台:实现敏捷高效开发支撑,包括开发、测试、部署、CICD。
    3.应用商店平台:实现机理模型的分享复用。
    4.多云应用部署平台。实现应用的可视化一键部署到多集群生产环境。
    带来的效果:
    1.整体开发效率提升了25%以上。整个页面上没有出现Docker、K8s、YAML文件等技术术语,极大的方便了开发人员快速开展开发工作。图形化架构编排产品方便保存机理模型模块间的架构关系;一键发布到测试环境,测试环境随需而建,免去了开发测试人员申请并搭建测试环境等一系列开销。
    2.开发平台支持22种开发语言,集成了300+个开发工具,支撑团队完成2000+个机理模型的开发。
    在这里插入图片描述

    结语
    在工业互联网当中,CloudOS(www.cloudtogo.cn)聚焦于工业应用的敏捷创新和工业应用的灵活管理,帮助企业构建自主可控、敏捷可靠的工业数字化创新平台,实现数字化应用创新的敏捷化和能力共享化,为企业数字化应用创新和转型提供一体化能力支撑,加快企业数字化转型。
    CloudOS,一站式云原生开发平台>

    更多相关内容
  • 2018 红帽论坛,超过500位客户亲临现场。演讲人 Alan Liu 高级解决方案架构师。
  • 自 2018 年 Knative 项目开源后,就得到了广大开发者的密切关注...Knative 在 Kubernetes 之上提供了一套完整的应用 Serverless 编排服务,让应用开发者可以不用为底层的基础设施分心,把更多的精力投入到业务逻辑上。
  • Rainbond 是云原生且易用的云原生应用管理平台云原生应用交付的最佳实践,简单易用。专注于以应用为中心的理念。赋能企业搭建云原生开发云、云原生交付云。 对于企业: Rainbond 是开箱即用的云原生平台,借助 ...
  • 《Knative 云原生应用开发指南》
  • 阿里云原生技术+云原生架构+云原生实践等资料合集,13份。 2021阿里巴巴DevOps实践手册 2021云原生开发者洞察白皮书 ...Knative 云原生应用开发指南 Serverless入门与实战 Spring Cloud Alibabab 从入门到实战
  • 云原生AI开发平台融合了成熟的人工智能开发框架以及云原生工具灵活调用云资源、高效部署云应用的能力,一方面帮助企业开发者提高算法模型的开发效率,另一方面提升交付、部署、运维环节的效率并降低TCO。本报告针对...
  • 云原生技术应用产生了新的云安全需求,CISO 要在竞争激烈的云原生市场中确保业务安全。传统的防火墙、反病毒、服务器监控、终端检测响应和SIEM等安全产品,与云原生的适配性较好,容易部署上云。但工作负载安全、...

    文作者:安全内参社区研究员 安未然

     

    一、前言

    云计算、大数据和人工智能的来临,上云已经成为组织数字化转型的必由之路。云原生作为云计算的下一个阶段,相关的开发和部署模式已经成为业界趋势,技术、产品、标准和解决方案的生态系统也在同步扩张之中,决策者面临着跟进这些复杂设计的挑战。

    云原生技术应用产生了新的云安全需求,CISO 要在竞争激烈的云原生市场中确保业务安全。传统的防火墙、反病毒、服务器监控、终端检测响应和SIEM等安全产品,与云原生的适配性较好,容易部署上云。但工作负载安全、威胁检测、用户行为监控、合规与风险管理等安全产品,无法适应云原生技术的新安全需求,需要进行专门的重新设计。

    过去的几年,诞生了云工作负载保护平台CWPP(Cloud Workload Protection Platform)、云安全态势管理CSPM(Cloud Security Posture Management)等云安全产品,对云原生安全的保护发挥了重要作用。但是,随着新应用场景的出现、技术的演化和市场的变化趋势,云原生应用保护平台(Cloud-Native Application Protection Platform, CNAPP)的概念诞生,渐有统一CWPP和CSPM之势。本文将对CNAPP的发展演进脉络进行分析。

     

    二、传统主机保护平台

     

    01 终端保护平台

    云原生应用程序保护平台最初起源于终端保护平台(Endpoint Protection Platform,EPP)。虽然一些企业现在仍在使用EPP产品作为保护服务器工作负载的安全产品,但是EPP是面向物理终端设备(台式机、笔记本电脑和平板电脑等)的解决方案,不适合企业混合云场景下的工作负载保护的要求。

    在这种场景下,基础架构是由本地服务器、虚拟服务器以及公有云环境共同组成,主要的保护目标是服务器的工作负载。EPP产品的继续使用会使企业的数据和应用程序处在巨大的安全风险之中。传统的以数据中心、网络和终端为主要保护对象的安全理念和产品,需要向混合云场景进行演进。

     

    02 混合云场景下的云工作负载保护平台

    混合云的部署架构逐渐被市场接受。为了满足混合云场景下的工作负载保护,云工作负载保护平台(Cloud Workload Protection Platform, CWPP)随之产生。CWPP最初(2016年)基于主机安全的解决方案进行定义,区别于EPP的PC维度,CWPP主要解决的问题在于数据中心维度。CWPP强调了混合数据中心架构需要统一的管理、Linux系统的重点支持、杀毒软件的无效、定价灵活性以及跟云平台的对接和API与DevSecOps的结合等等。

    从技术角度来看,最核心的是跟云平台原生的对接,利用AWS或者Azure提供的接口来进行相关安全措施的处理。比如说通过VPC接口可以做到相关业务的微隔离,也可以通过网络流量日志来进行流量的安全分析。

    2017年,CWPP增加了外部场景的云工作负载安全服务(WAF、Firewall和IPS等),进一步增强云工作负载的保护。并且,开始采用控制面的安全措施(IAM配置、网络配置以及管理员访问等)。

    此外,容器的出现,使得用户无法对线上系统进行处理,安全措施需要前移到开发环节,并且运行时的应用控制和容器的锁定需要作为新的防御手段,云工作负载保护架构随之发生了变化。新架构要求对SDL流程的支持,与自动化CI/CD工具的结合,要求API可以灵活调用,将安全检查前移。

     

    03 混合多云场景下的云工作负载保护平台

    2018年,大部分组织开始在使用至少两个厂商的云计算服务。混合多云的部署架构成为市场的主流。为了满足混合多云场景下云工作负载保护,CWPP需要提供统一的安全策略管理,以减少企业的知识鸿沟。

    同时,CWPP的管理需要自动化,从而更好地与DevSecOps相结合。例如,在自动化生成工作负载时,自动化安装和配置相关的软件或安全策略。

    此外,CWPP开始注重机器学习技术对产品能力金字塔各个层面的加强作用。例如,对于微隔离层面,机器学习可以先学习和观察正常的情况,然后建立白名单,随着时间的推移不断更新和修正策略以达到不用人工介入就可设置安全策略的状态。

    然而,CWPP并不能解决Serverless计算方式所带来的安全问题,势必需要对工作负载的定义进行重新和全面审视。因而,Gartner在2019年对工作负载的外延和内涵进行细粒度解释,根据抽象度的不同分为物理机、虚拟机、容器和Serverless。

    这几种工作负载从虚拟化水平到单位的计量再到生命周期都有很大的区别。能力金字塔因而发生了重大变化。从原来的11个能力删减到8个能力,并且将最底层的“运维习惯”与“加固、配置与漏洞管理”进行了整合。删掉了“欺骗防御”能力,因为欺骗/蜜罐系统是单独产品提供。同时数据的静态加密大部分情况下都有云厂商提供,比如AWS的EBS加密和Azure的磁盘加密,因此“静态加密IaaS数据”这个能力也从能力金字塔中删掉了。但是加强了对威胁检测和响应的要求,相当于要学习EDR的能力。

    图片

    图1:工作负载抽象

     

    2020年,CWPP能力金字塔进一步精简,文件加密和防病毒从其中移除。目前的能力,从最核心的开始,按照重要性逐渐递减的排序,包括八层:加固、配置和漏洞管理,基于身份的隔离和网络可视化,系统完整性保证,应用控制/白名单,预防漏洞利用和内存管理,服务器工作负载行为监测、威胁检测和响应,主机防入侵和漏洞屏蔽,扫描恶意软件。

     

    图片

    图2:基于风险的工作负载保护控制层次结构

     

     

    三、云原生应用保护平台

     

    01 云原生应用保护平台的产生背景

    首先,从安全市场角度来看,云原生技术持续深入发展和广泛普及势必带来新的网络安全发展机遇,产生庞大的网络安全需求,并推动云安全业务向纵深发展。

    其次,从安全生态角度来看,安全产品的融合发展成为必然选择。CWPP在数据面对云工作负载进行保护,CSPM在控制面对云工作负载进行保护。

    值得注意的是,当前大多数的云安全事件都是配置错误和管控失当引起的,凸显正确配置和合规的重要性,控制面的安全变得越加重要。数据面和控制面的云安全产品通过相互融合组成统一的解决方案,能够更好地保护多云和多租户,云原生应用保护平台(CNAPP)由此产生。

    最后,从云安全实际需求角度来看,混合多云仍将是组织和机构未来一段时期的基础架构

     

    但是,工作负载的粒度、生命周期以及创建方式发生了显著变化,云安全保护需求势必也会发生变化。

    首先,组织正在越来越多地采用容器和Serverless等技术进行云原生应用开发,工作负载的粒度越来越来越细,云原生安全保护需要适应工作负载粒度的变化。

    其次,容器和Serverless等形式的云原生开发的流行,工作负载的生命周期越来越短,部署在这些工作负载上的恶意软件也呈现出快速变化的特点。传统的基于签名文件加载或反恶意软件扫描的方式无法及时响应,基于行为建模的方案也因无法收集足够案例变得失效。云原生安全保护需要适应工作负载的生命周期越来越短的变化。

    最后,工作负载越来越通过镜像构建和替换,正在向不变的基础设施转变。云原生安全保护同样需要适应这种变化。

     

    02 云原生应用程序保护平台的主要特点

    总的来说,CNAPP将会吸收CWPP和CSPM的能力,不仅需要把不同的安全解决方案集成在一起,跨越不同技术边界实施一致的安全策略,提供统一的云原生保护,还需要采用面向安全的架构设计(例如,零信任),识别动态工作负载中的属性和元数据,自动化地保护开发、发布、部署和运营等整个生命周期。

    首先,CNAPP无疑仍将聚焦动态混合、异构多云架构场景下的工作负载保护,重点是跨不同技术边界实施一致的安全策略。

    其次,CNAPP需要具备对所有粒度的工作负载进行保护的能力。云原生应用需要虚拟机、容器和无服务器PaaS组合起来提供服务,单一的工作负载保护无法保证应用的整体安全。并且,随着工作负载的粒度和动态变化,CNAPP策略和产品也许必须动态适应、弹性伸缩。

    第三,CNAPP需要对开发、发布、部署和运营等整个生命周期进行保护。现在的CWPP主要关注工作负载运营阶段的保护,缺乏对其他阶段的保护。CNAPP需要注重基于基础设施的不变性进行保护。在开发阶段,使用安全测试来识别合规和配置的相关问题,为持续改进提供快速、可操作的反馈流程。在发布阶段,持续地对工作负载镜像(例如容器镜像)进行自动扫描和更新,避免遭受漏洞、恶意软件、危险代码以及其它不当行为的侵害,确保所依赖的开源软件和第三方应用等软件供应链的安全。在部署时,对工作负载镜像的属性进行的验证(例如,签名、安全策略等)。

    第四,CNAPP需要适应云原生开发的快速迭代,基于CI/CD 实现自动化。云原生追求的本质目标是效率,CI/CD作为效率提升的重要手段,是云原生的关键特性。云原生时代,不满足CI/CD自动化的安全产品,将摧毁云原生的价值,也就不能算作云原生安全保护。

    第五,CNAPP需要重点加强配置保护和合规性检查能力云计算基础设施错误配置带来的安全风险要比攻破工作负载带来的安全风险更大。CSPM能够对云计算技术设施的配置和合规性进行持续评估和改进,CNAPP需要充分吸收CSPM的这种能力。        

    第六,CNAPP需具备对云原生应用程序进行威胁检测和响应的能力CWPP主要依赖于预防性控制,而CNAPP需要采用CARTA战略框架和自适应安全架构,对云原生应用程序以及相关工作负载的行为进行监控。

     

    参考资料:

    [1]CWPP产品市场演进.安全内参.https://www.secrss.com/articles/9984

    [2]CASB、CSPM、CWPP三大云安全工具应用场景详解 .安全内参. https://www.secrss.com/articles/15597

    [3]Gartner 2020年十大安全项目详解 .安全内参. https://www.secrss.com/articles/26342

    [4]云原生带来的云安全机遇.安全内参.https://www.secrss.com/articles/23726

     

     

    本文来源:安全内参

     

    图片

    努力打造“有特色、高水平、国际化”的网络安全思想高地。

     

    图片

    展开全文
  • 2022阿里云原生应用交付与管理论坛资料汇总,共5份。 集群镜像重塑分布式应用交付 政采云私有化业务交付实践 Nacos2.0的k8s服务发现生态应用及规划 Open Cluster Management 开放模块化多集群管理平台 OpenKruise...
  • 开发难度高产品上市周期长(2)日趋复杂的边缘业务的部署,对高度分布和大规模可扩展性缺乏考虑(3)缺少和云的协同以及边缘和边缘的协同,构建分布式系统难度高(4)OT和IT世界技术割裂,协同门槛高那么,云原生和边缘计算...
  • 开启云原生时代Serverless之门,教你Knative 云原生应用开发从入门到精通,结合云原生开发实战进行讲解,很不错,快来下载吧。
  • 第二届CNTC云原生技术大会PPT关于讲解云原生技术架构思维ppt 谐云丁轶群—从云到边缘,边缘计算的机遇与挑战 微服务助力企业数字化转型.pdf ...陈屹力——云原生应用标准体系建设 阿里谷朴—2018浙大云原生会议
  • 初识Knative:跨平台的Serverless编排框架 在阿里上一键安装 Knative 手动安装 Knative Serving Hello World Eventing Hello World Tekton Hello World Serving 进阶 自动扩缩容 - Autoscaler Serving 健康检查机制...
  • 编者按:阿里云云效发布云原生应用交付平台,加速企业云原生DevOps规模化落地10月21日,2021云栖大会云效BizDevOps分论坛上,阿里云云效技术负责人陈鑫正式发布云效云原生应用交付平台AppStack,旨在进一步加速企业...

    编者按:阿里云云效发布云原生应用交付平台,加速企业云原生DevOps规模化落地10月21日,2021云栖大会云效BizDevOps分论坛上,阿里云云效技术负责人陈鑫正式发布云效云原生应用交付平台AppStack,旨在进一步加速企业云原生DevOps规模化落地。

    为什么企业需要云原生应用交付平台?云效云原生应用交付平台有何特色?本文将为你详细道来。
    在这里插入图片描述
    云原生时代需要以应用为中心的DevOps平台

    随着Docker、K8s、微服务架构等云原生技术的成熟与普及,企业采纳云原生成为必然趋势。据Gartner预测,到2022年,将有75%的企业应用云原生技术。

    然而,现状是大部分企业仍然只是在测试环境或者小范围中应用云原生。这是因为云原生在给企业带来了更低的成本和更高效的软件开发的同时,也带来了新的技术门槛——企业需要全新的运维方式和研发流程、以及大量一线开发人员的培训成本。

    要想规模化落地云原生,离不开DevOps工具平台的支持。那么,什么是适合云原生时代的DevOps平台呢?答案是以应用为中心。

    所谓的应用是线上提供给用户的一个服务,一个应用可以关联代码库、多个环境如开发、测试、线上环境等,以及CICD流程和各种资源如容器、数据库等。

    **相比于K8s的资源视角,应用视角可以让开发者更方便地去设计部署架构、申请资源、规范上线流程、分配人员权限等。**而企业要落地云原生,核心就是让众多开发人员可以自运维。

    总结来看,以应用为中心对企业有3大好处:

    **1、方便组织资产和交付过程。**企业可以以应用为中心来聚合代码、交付流程、制品、测试、环境资源等,在一个平台来统一管理。

    2、**多角色协同开发运维。**落地DevOps的关键是丰富的自动化工具和运维兜底策略可以让每个开发高效工作而无需担心线上风险,在以应用为中心的DevOps平台上,运维工程师可以围绕应用去配置流程和规则,将部署和运维过程自动化。而开发可以成为操作者,专注代码编写和功能验证。这才是真正的DevOps。

    3、**关注点分离和安全合规。**应用将研发视角和K8S资源视角做了分离,运维工程师将应用的交付运维工作交给开发以后,可以专注于基础设施运维和高可用保障。企业管理者也可以通过对应用交付流程的统一管控来达到安全合规的目的,比如可以在重大节日禁止变更,或者统一设置上线审批流程等等。

    云效AppStack——以应用为中心的云原生应用交付平台

    本次阿里云云效发布的应用交付平台AppStack,就是这样一款以应用为中心的云原生应用交付平台。
    在这里插入图片描述
    如上图所示,云效应用交付平台AppStack的能力分为上下两层:下层提供的是应用交付运维的基本能力,如应用编排、构建、环境管理、测试、发布等。上层是将多环境串联起来的完整CICD工作流,我们称为应用变更工作流。软件需求从左侧不断输入,与代码变更进行连接,而代码按照规则进入变更工作流,通过逐个环境的验证最终完成线上发布。团队管理者可以通过不断地优化和完善这个流程,让开发效率越来越高。

    相比传统软件交付运维工具,云效应用交付平台AppStack的核心优势有4点:

    1、天然云原生,无平台绑定

    云效应用交付平台AppStack在设计之初就全面支持原生K8S、HelmChart、OAM等业界标准,对应用部署架构无绑定、无侵入,企业不用担心迁移以及技术改造成本。
    在这里插入图片描述
    2、高效,支持开发者自运维

    企业的开发人员可以在云效应用交付平台AppStack自助发布,整个的应用发布过程可观察、可干预,支持一键暂停、回滚。同时,在云效AppStack内就可以直接进行环境观察与环境运维,问题的排查和应急处理也非常方便。
    在这里插入图片描述
    3、安全,方便研发运维策略集中管控

    在云效应用交付平台AppStack内,运维和测试人员可以集中定义应用编排的规则和部署策略,达到风险集中兜底的目的。运维也可以从日常繁琐、低效的工作中解放出来,将精力聚焦运维规则的制定。
    在这里插入图片描述
    4、规范,标准化应用交付流程

    通过模板化能力,和基于应用多角色权限管理能力,研发管理者可以借助云效AppStack将研发流程沉淀到工具内,并在团队批量推广,降低管理负担。
    在这里插入图片描述
    目前,云效AppStack正在免费公测中,点击文末链接即可参与

    阿里云云效发布云原生应用交付平台,加速了企业云原生DevOps规模化落地,10月21日,2021云栖大会云效BizDevOps分论坛上,阿里云云效技术负责人陈鑫正式发布云效云原生应用交付平台AppStack,旨在进一步加速企业云原生DevOps规模化落地。为什么企业需要云原生应用交付平台?云效云原生应用交付平台有何特色?相信你在这篇文章中能够找到你的答案。

    点击下方链接立即体验

    云效应用交付平台AppStack_云原生应用交付平台_应用持续交付_开发与运维-阿里云 (aliyun.com)

    展开全文
  • 什么是云原生应用

    2020-03-19 16:34:24
    作者:成富,资深架构师,拥有多年一线开发经验,曾就职于IBM,后移居海外创业,现任公司首席软件工程师,负责基于微服务架构的云原生产品研发。...顾名思义,云原生应用的概念由云和原生两个部分组成...

     

    作者:成富,资深架构师,拥有多年一线开发经验,曾就职于IBM,后移居海外创业,现任公司首席软件工程师,负责基于微服务架构的云原生产品研发。资深技术作家,著有多部中英文技术书籍:《深入理解 Java7 》《Exploring Java9》等。

    *本文经作者授权整理发布,内容选自《云原生微服务架构实战精讲》

     

    云原生应用的概念

     

    顾名思义,云原生应用的概念由云和原生两个部分组成,云在这里指的是云平台,也就是平台即服务(Platform as a Service,PaaS);原生应用指的是专门针对云平台而设计和实现的,充分利用了云平台的特性。应用的微服务可以专注于实现业务逻辑,而把微服务架构的复杂度交给云平台来解决。

     

    原生这个词在软件开发中有它独特的含义。原生通常意味着高效和难以移植,也意味着针对特定的平台而设计,可以充分利用平台的特性,因此运行起来非常高效;同样意味着与特定平台的深度绑定,很难移植到其他平台。云原生应用同样具有这两个特征,对于云原生应用来说,难移植并不是一个问题,毕竟迁移到云平台之后,不会再想迁移回去。

     

    云原生应用的特征

    与其他应用相比,总结起来,云原生应用有如下 15 个特征:

     

    1、单一代码库

    云原生应用必须有单一的代码库,并在版本管理系统中进行追踪。单一代码库可以是一个版本库,也可以是共享同一根目录的多个版本库,其重要性在于每一个代码提交(Commit)都会对应一个不可变的构建版本。在每次代码提交之后,持续集成流程会被触发,最终产生一系列的应用容器镜像,这就在代码提交和构建版本之间建立了一对一的对应关系,这种一对一的关系保证了每个构建版本都是可追踪的,可以比较不同版本之间的代码变化。

     

    对于微服务架构的应用来说,每个应用由多个服务组成,这些服务应该由单一的代码库进行管理,这保证了构建版本的稳定性。如果一个改动涉及到多个服务,则这个改动应该在一次代码提交中完成对所有相关服务的修改;如果服务的代码分散在多个代码库中,则一个改动会被分成多个代码提交,每个代码提交都会触发一次持续集成流程,产生对应服务的构建版本,这些服务的构建版本只包含了部分改动,是不完整的。在应用部署时,有的服务可能包含了部分改动,而有的服务则没有,这使得部署的应用实际上是不能工作的。因此,微服务架构的应用应该使用单一代码库。

     

    2、API 优先

    云原生应用应该采用 API 优先的设计策略。微服务架构的应用使用公开 API 来作为服务的对外接口,API 屏蔽了服务的内部实现细节。API 优先的设计策略指的是在设计阶段,应该首先设计 API 并确定 API 的细节。API 的设计过程需要多个团队的参与,包括 API 的实现者和可能的使用者,这些团队在充分讨论中最终完成了 API 的定义。API 可以使用 OpenAPI 规范描述,从该规范中可以生成 API 文档和模拟服务器。

     

    API 优先的策略保证了 API 的稳定性,同时可以减少不必要的后期修改。因为 API 是服务之间的接口,修改 API 就意味着相关的内部实现、测试用例和 API 的使用者都需要进行修改,如果在应用开发中出现了必须修改 API 的情况,那造成的影响是很大的。API 优先确保了尽可能减少在开发中对 API 进行修改。

     

    API 优先的另外一个好处是可以提高开发效率。API 确定之后,可以利用工具生成文档和模拟服务器,API 的使用者可以根据文档来编写使用 API 的代码。测试人员可以编写 API 相关的测试用例,并用模拟服务器运行测试。不同的团队可以并行工作,从而提高效率。

     

    3、依赖管理

    云原生应用应该管理自己的依赖,Java 开发人员对依赖管理应该并不陌生,常用的 Java 构建工具 Maven 和 Gradle 都提供了依赖管理的支持。在开发过程中,只需要利用构建工具的支持即可;在管理依赖时,则需要区分应用自带的依赖和运行环境提供的依赖。云原生应用通常会包含全部所需的依赖,尤其是以容器形式运行的应用,典型的例子是微服务的 REST API。云原生应用会自带嵌入式的 Tomcat 这样的服务器来提供 HTTP 服务。

     

    4、设计、构建、发布和运行

    云原生应用应该有完整的设计、构建、发布和运行流程,如下图所示。

     

     

    设计

    设计在云原生应用的开发中必不可少。传统应用通常采用瀑布式的开发流程,瀑布式的开发流程中会分配足够的时间进行设计。云原生应用一般采用敏捷软件开发流程,但是这并不意味着设计变得不再重要,只不过设计过程变成了一个迭代的过程,而且每次设计的范围较小,通常只需要对某些新特性进行设计。

     

    构建

    构建阶段从单一代码库中创建出带版本号的二进制工件,构建过程通常由持续集成服务器来完成,每个构建都必须有唯一不变的版本号,构建出来的二进制工件也是不可变的。这就保证了同一个构建版本在经过测试之后,被部署的版本与测试过的版本保持一致。

     

    发布

    把构建出来的工件推送到云平台之上,就得到了一个发布版本,发布版本中包含与部署环境相关的配置信息。云原生应用在部署时,通常有开发、测试和生产 3 个环境,在每个环境上的配置信息都不尽相同。发布版本也是不可变的,有唯一的发布号,每一个构建版本都可能对应多个发布版本。

     

    运行

    运行阶段在云平台之上运行应用,运行的方式取决于云平台,可以是虚拟机或容器。云平台负责管理应用的运行,包括监控应用运行状态、处理失败的情况和动态水平扩展等。

     

    5、代码、配置和凭据

    代码、配置和凭据是云原生应用开发中创建的三种不同类型的实体。代码包括源代码和相关资源文件;配置是与部署环境相关的配置信息,通常以 XML、YAML、JSON 或属性文件的形式出现,配置中包含的信息包括第三方服务的连接方式、数据库连接信息和应用自身的配置属性等;凭据指的是密码、私钥和 API 密钥等敏感信息。

     

    代码和配置的区别在于,代码不会随着部署环境而变化,而配置则相反。在实践中,应该尽可能把配置从应用中分离出来,进行外部化管理,构建出来的二进制工件中不包含任何配置信息,实际的配置值在部署时根据环境来确定。在运行时,一般使用环境变量来传递配置值,还可以使用类似 Spring Cloud Config 这样的专门配置服务器来管理配置值,凭据都应该从源代码仓库中删除。

     

    6、日志

    日志是应用开发中不可或缺的部分。与传统应用不同的是,云原生应用并不需要对日志的输出方式进行很多配置,只是简单地把日志写到标准输出流(stdout)和标准错误流(stderr)。日志的收集和处理由云平台上的其他服务来提供,这把应用开发人员从日志管理相关的任务中解放出来。云平台上的日志管理服务非常多,开源的典型实现包括 Elastic 技术栈(ElasticSearch + LogStash + Kibana)和 Fluentd。

     

    7、随时可丢弃

    云原生应用的生命周期可能是短暂的,随时可能被终止。云平台可能会随时启动和停止应用的实例,这就要求云原生应用的启动和停止速度都要非常快。当应用的负载突然增大时,可以快速地启动新的实例来处理请求;当应用的实例出现问题时,可以快速启动一个新的实例作为替代。快速停止应用和快速启动应用一样重要,快速停止应用保证了资源可以被及时释放。

     

    8、支撑服务

    云原生应用的运行离不开支撑服务。支撑服务是一个宽泛的概念,包括数据库、消息中间件、缓存、用户认证和授权、存储等。连接这些支撑服务的配置信息应该被抽离出来,在运行时根据部署环境提供实际值。

     

    9、环境等同

    云原生应用的不同部署环境是等同的。开发、测试和生产环境之间不应该有差异,环境的等同性保证了云原生应用可以快速的进行部署,这一特征与构建工件的不变性是相辅相成的,两者缺一不可。有了这两个特征之后,每一个唯一版本的构建工件可以被依次部署到不同的环境,在测试环境上经过测试的版本,可以直接部署到生产环境。我们可以确定应用在生产环境上的行为与测试环境中一样。

     

    10、管理任务

    云原生应用运行中可能会需要执行一些管理任务,比如生成报表或者执行一次性的数据查询等,这些任务通常并不属于业务流程的一部分,更多的是为了管理和运维的需要。这些任务在执行中会用到云原生应用所依赖的支撑服务,对于这些任务,应该创建独立的应用,并在同样的云平台上运行。对于定期执行的任务,可以充分利用云平台的支持,比如,Kubernetes 提供了对定时任务(CronJob)的支持。

     

    以生成报表为例,可以创建一个独立的应用来读取数据库并生成报表,该应用可以有自己独立的容器镜像。如果报表生成是手动触发的,该应用应该独立运行,并提供一个 API 接口来允许外部触发。如果报表生成是定期的,应用部署时可以创建相应的定时任务来运行容器,在容器启动时自动生成报表,生成完毕之后,容器运行结束。下图说明了这两种触发方式的区别,圆角矩形的边框表示应用的边界。

     

     

    11、端口绑定

    云原生应用在运行时并不负责管理实际的端口绑定,而是由云平台统一管理。比如,一个基于 Spring Boot 的微服务应用通常在 8080 端口运行 HTTP 服务,当应用运行在云平台上时,这个端口只是虚拟机或容器内的端口,并不是外部用户或其他服务访问时的实际端口。云平台对网络进行统一管理,负责分配实际的端口,云平台同时提供了相应的机制来发现访问服务的实际地址和端口。

     

    12、无状态进程

    云原生应用应该是无状态的。所有的状态信息都应该从应用中抽离出来,并保存在支撑服务中,比如数据库中。正因为应用是无状态的,才可以由云平台快速的启动和停止,并进行垂直或水平扩展。

     

    13、并发性

    云原生应用使用水平扩展来并发运行多个实例,使用负载均衡来把请求分配到某个实例进行处理。

     

    14、遥测数据

    云原生应用需要收集一系列遥测数据,包括应用性能指标、运行状态和日志等,这些遥测数据,对于云平台和应用来说同等重要。云平台可以用性能指标来进行自动水平扩展,比如,Kubernetes 支持 Pod 的自动水平扩展,当 CPU 的利用率超过预定的阈值时,会自动启动新的 Pod 来处理请求。性能指标分成两类:一类是业务无关的,比如请求的数量、请求的处理速度、以及平均的请求处理时间等;第二类是业务相关的,需要应用根据业务需求进行收集,比如处理的订单数量和不同商品的销售情况等。云原生应用通常会创建仪表盘来实时展示整体的运行状态,方便运维人员进行监控。

     

    15、认证和授权

    云原生应用应该是安全的,安全应该在应用的设计阶段就充分考虑。在实现中,可以使用基于角色的访问控制(RBAC)来保护 API,已经有大量的开源框架来帮助实现认证和授权。

     

    在理想情况下,云原生应用应该具备上述全部 15 个特征,但是在实际的开发中,不一定能够做到。开发团队可以根据需要,选择对应用最重要的特征来实现。

     

    关于微服务架构云原生应用的开发,在我的专栏《云原生微服务实战架构精讲》中,有更详细的阐述。在这个专栏中,我将借助一个类似优步、滴滴打车的后台服务,一步一步实践一个微服务云原生应用的开发、部署和上线,过程中涉及的实战进阶内容,都会做详细解读,比如微服务之间的异步消息传递、使用 Saga 模式进行跨服务的协作、基于 Istio 的服务网格实现等,另外,重要功能的详细示例代码,我也会发布在 GitHub 上提供更新。

     

    如果你对微服务架构在云平台的落地有兴趣,欢迎你来收听我的课程:《云原生微服务实战架构精讲》

     

    展开全文
  • 云原生应用的12要素

    2021-02-23 22:40:04
    在云的时代,应用会更多的迁移到云端,基于云的架构设计和开发模式需要一套全新的理念去承载,于是云原生思想应运而生,而针对云原生应用开发的最佳实践原则,12-Factor脱颖而出,同时也带来了新的解读。12-Factor,...
  • 云原生应用

    2022-02-21 10:43:52
    相比于传统应用,云原生应用意味着统一: 统一的技术标准:通常以微服务架构进行服务开发,服务之间使用标准的API契约进行通信。松耦合的架构方式会减轻因需求变更导致的系统迭代成本,并加快交付速度。 微服务倡
  • 云原生应用的十大设计原则

    万次阅读 2021-03-10 22:19:12
    越来越多的企业选择上云,在上构建自己公司的核心应用程序,通过云来大大减少公司的IT运维成本,提高应用的弹性能力,并把一些新兴的技术能力,例如:人工智能,物联网,区块连等引入到应用程序中,来增强企业的...
  • 基于 Kubernetes 与 OAM 构建统一而强大的云原生应用引擎 分布式追踪不是银弹 从架构设计到代码 三、微服务开源专场 Sentinel 微服务高可用容错最佳实践 Dubbo3.0-开启下一代云原生微服务 云原生微服务下混沌工程...
  • KubeVela多云交付的云原生应用交付系统 使用IAST构建高效的DevSecOps流程 欢迎来到云原生社区深圳站 Envoy腾讯游戏云原生平台的应用 云原生场景下的开发和调试 08-上海 新一代开源 HCI 底层原理剖析 云原生分布式...
  • 简化K8s开发 OAM和DAPR云原生应用的全流程研发实战 Microsoft Online Tech Forum 白海石 - OAM创始人DAPR合作创始人 日程 OAM与DAPR的来龙去脉 OAM DAPR 自我介绍 居住在美国大西北的中国东北人 33年编程 8本云计算...
  • 从本质上讲,所有能够提高云上资源利用率和应用交付效率的行为或方法都是云原生的。 云计算的历史就是云原生的历史。 Kubernetes 拉开了云原生 1.0 的序幕。 服务网格 Istio 的出现导致了后 Kubernetes 时代的...
  • 云原生致力于打造世界上最先进、稳定的云原生基础设施,是阿里云最核心的部门之一。 我们的目标是让云成为成本最低,效率最高,稳定性最强的应用运行环境。在这里,我们设计超大规模容器与调度系统,发挥出云的极致...
  • 云计算的拐点已至,进入成熟期,云原生成为驱动云计算发展的新动力引擎,致力于成为新型基础设施,不仅是企业数字化转型的最佳技术路径,同时也成为新兴领域,人工智能、大数据、边缘计算、5G 等底层基础平台
  • 微软最有价值专家(MVP)/腾讯最有价值专家(TVP) 在技术领域拥有超过18年的经验 技术作者和演讲者 运营微信公众号dotnet跨平台 和移动开发和机器学习 ;Docker 容器 容器化的困境 K8s 协调器 Core 容器化实例 ;Docker...
  • Web-Service),将程序设计成细粒度的服务(GranularServices),以作为Microsoft下一阶段的软件架构,其核心思想是让服务由类似Unix管道的存取方式使用,而且复杂的服务背后是使用简单URI来开放界面,任何服务都能...
  • 2021 ECIC第四届企业云原生创新大会PPT汇总,共12份。 2021第四届企业云原生创新大会(ECIC)是全球领先的企业...10、云原生应用的高性能持久化存储 11、SUSE+Edge+重新定义边缘基础架构 12、奥鹏教育的容器化转型之路
  • 什么是 云原生应用

    千次阅读 2021-02-02 09:28:35
    云原生意味着应用程序原生就被设计为在云上以最佳方式运行。 云原生是一种专门针对云上应用而设计的方法,用于构建和部署应用,以充分发挥云计算的优势。这些应用的特点是可以实现快速和频繁的构建、发布、部署,...
  • 支撑15分钟上线高品质专属音视频平台

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,868
精华内容 29,947
关键字:

云原生应用开发平台

友情链接: ADC+DMA.zip