首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP Kyma on top of Kubernetes的会议台词

SAP Kyma on top of Kubernetes的会议台词

作者头像
Jerry Wang
发布2019-05-31 11:18:42
4220
发布2019-05-31 11:18:42
举报

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1439847

  1. Target audience: 基于微服务架构进行云原生应用开发的developer,仍然在on premise环境下开发的同事,了解概念
  2. 为什么要这样安排?如果直接讲Kyma,大家完了只知道概念,没有办法了解到技术发展的历史,比如为什么容器技术会流行,为什么会诞生docker,Kubernetes,sap为什么会开发Kyma等等。

2013年容器技术兴起 twelve-factor app – 方法论,或者说最佳实践

容器技术能帮助应用开发人员以更小的代价确保开发出的应用fulfill 12factor定义的规范。

有些大家已经耳熟能详了,比如第二条dependency-依赖显式申明:maven pom.xml, cf app yaml, nodejs package.json

第五条, build, release和run应该严格区分开。

构建阶段 是指将代码仓库转化为可执行包的过程。构建时根据代码仓库里显式指定的依赖,获取和打包 依赖项,编译成二进制文件和资源文件。

发布阶段 会将构建的结果和部署所需的配置环境相结合,其output就是一个ready for use的app

运行阶段 (或者说“运行时”):app通过进程启动。启动之后呢?第六条,在一系列无状态,彼此隔离的进程中运行

第八条:通过进程模型实现水平扩展。这些要求,通过容器技术,app developer无需付出编程的代码即可实现。

字面意思:装东西的集装箱

装什么东西?:应用程序本身之外,还包括这个应用要能正常运行所需的运行环境和库文件等外部依赖

对比现实世界的集装箱。

汽车-应用

集装箱-容器

装入-运输-从开发环境部署到生产环境 – convenient package to ship things

其他特点:

Open specification: OCI (Open Container Initiative)组织 – 2015年,Google,Docker, IBM、微软、Redhat, 开放容器标准,旨在避免容器技术的碎片化。该标准主要分为运行时标准和容器镜像标准。

Isolated:容器隔离。这个很好理解,容器里运行的应用彼此之间是隔离的,一个应用出故障不会影响到其他容器。可以独立分别进行水平扩展。

Portable: 容器技术宣传的”build once, run anywhere”, 一个容器镜像既能在windows系统下运行,也能在Linux系统下运行,开发,测试,生产。笔记本电脑,云服务提供商数据中心的服务器。

Lightweight:轻量级,就一定要有一个比较对象,和谁比更轻量?当然是虚拟机技术。虚拟机和容器的目的类似,都致力于对应用程序及其关联性进行隔离,从而构建起一套能够不依赖于具体物理环境和硬件设备而运行的应用单元。虚拟机技术的核心是一个叫做Hypervisor的中间层,位于宿主机操作系统和虚拟操作系统中间。当宿主操作系统启动虚拟机时,会通过hypervisor向虚拟机操作系统分配CPU,内存,磁盘和网络等系统资源,虚拟出的是一个完整的操作系统,因而比容器技术会消耗更多的宿主机系统资源。

而一台宿主机上运行的多个容器化应用,共享这台宿主机操作系统的内核,因而不需要虚拟机技术的hypervisor中间层,因而同虚拟机技术相比,更加轻量化,启动速度更快。

Docker只是基于开放容器标准的一种比较受欢迎的实现。Docker之于容器,相当于React,Angular和Vue之于UI开发框架。

我们接下来简单提一下容器技术的实现原理。王垠-97年四川大学计算机专业毕业,保送去了清华大学硕博连读,退学,考GRE计算机系,康奈尔大学计算机系全美排名第六名

Chroot: change root directory, 更改子进程的根目录为指定目录,容器技术里实现文件目录的访问隔离

CGroups 全称control group,限定一个进程的资源使用,比如cpu,内存,磁盘和网络IO,是Linux container技术的物理基础。

Namespace:另一个维度的资源隔离技术,大家可以把这个概念和我们熟悉的C++和Java里的namespace相对照。

如果CGroup设计出来的目的是为了隔离上面描述的物理资源,那么namespace则用来隔离PID(进程ID)等系统资源。

广告

尽管介绍了容器技术这么多好处,但是无论Docker容器,还是虚拟机,都有一些问题没有解决。

我们只拥有一个个割裂的容器镜像,充其量里面只能放一个个微服务。而不是一个端到端的应用。

我们只能在单机上用命令行docker run一个镜像一个镜像的人工启动,没有办法实现在大型分布式集群上的自动部署。

同时,微服务应用中的容器管理和协同,自动地水平扩展,自动修复和弹性伸缩等等。

容器技术存在的这些问题正是Kubernetes大显身手的地方。诞生于2015年7月的Kubernetes,是Google内部多年使用的容器集群管理和编排系统Borg的开源版本。由于凝聚了Google在容器编排领域多年的深厚功力,发布之后很快就一飞冲天,如今已经成为事实上的容器集群管理领域的标准和霸主。

Kubernetes源自古希腊语,意为“舵手”。有人调侃说,Google选择Kubernetes这个单词,暗示了自己想在容器编排管理这个领域里扮演舵手和领导者的角色。

Kubernetes和Docker容器的关系?下面这张图片是SAP Kubernetes培训课程slide里的一张,用来说明Kubernetes和docker容器的关系,我觉得很形象。

运行了各种微服务应用的容器就好比图中使用各种乐器演奏的音乐家,而站在中间的指挥家,和使用乐器演奏的音乐家站立的台阶,就相当于Kubernetes。

如果更准确的说,Kubernetes管理的不是容器,而是pod。Pod是一个或者多个容器组成的集合。

至此,我们终于完成了了解Kyma必须的前置知识的介绍。

什么是Kyma?去年6月份,SAP C/4HANA正式announce时,我的朋友圈被这张图刷屏了。

C/4HANA:商务软件套件

SCP Extension Factory和Kyma的关系就像Fiori和Open UI5的关系。

Open UI5是SAP推出的一个开源UI开发框架和UI控件库,而Fiori是SAP 基于Open UI5这个技术框架开发出来的商业化产品(当然现在Fiori也代表SAP推荐的一种UI风格)。类似的,SAP Cloud Platform Extension Factory是SAP基于Kyma这个开源项目,再针对企业应用所必须满足的一些标准(比如SAP产品标准,区域特殊需求)而添加进额外的附加功能和实现的商用产品。

Kyma对C/4HANA意味着什么?我们CX部门的CTO Moritz Zimmermann, 在他的linkedin上发表过一篇博客,里面也提到了Kyma。Kyma(SAP Cloud Platform Extension Factory)将来会成为SAP C/4HANA套件里所有基于微服务架构产品的统一扩展工具。

我们就来看看Kyma的工作原理。今天这个session讲的所有内容,全部都在我的公众号文章里记载了下来。Kyma的工作模式,简单的说就是一个观察者-发布者模式。

  1. 通过Application Connector,可以使Kyma同SAP C/4HANA的产品建立连接,然后进行事件注册。
  2. 事件注册好之后,使用微服务架构实现事件的监听者(消费者)。这也是Kyma官网里提到的"开发者可以使用任何技术栈进行扩展开发“的含义。举个例子,我们在SAP Commerce Cloud里创建一个订单后,客户提出了基于该企业流程的一些特殊校验逻辑。Commerce Cloud发布一个"Order Create"的事件,事件payload包含创建订单的字段。我们开发并部署在Kyma上的微服务监听这个事件,微服务内部实现可以采取任何技术栈,Commerce Cloud通过HTTP调用包含了企业自定义订单校验逻辑的微服务,根据其返回的校验结果进行后续处理。

我们来看一个具体的demo,看看SAP Commerce Cloud里订单编排功能是如何用Kyma去增强的。

图中蓝色流程是我们通过Kyma对Commerce Cloud的标准流程进行的增强,主要是在下单过程中增加了一些Validation校验。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年01月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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