文档章节

数字化企业云平台的Cloud Native12原则

 普元云计算
发布于 2016/11/14 10:13
字数 1958
阅读 14
收藏 0
点赞 0
评论 0

转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究。如需加入云计算架构设计群或联系作者交流请添加微信号:elaineyuan928。


Uber、滴滴、小米、红领、Airbnb等软件服务给我们日常生活带来革命性的颠覆,互联网给我们带来生活极大的便利。未来会有更多的传统企业以互联网思维模式进行业务创新,在实现自身数字化转型的同时,为我们带来更优的生活体验。所有的这一切需要强大的IT能力支撑,需要企业IT的精益运营,让软件的生产、交付、获取、升级、遥测是简单的。


在以云计算、容器技术(以Docker为代表)、微服务架构、DevOps等相关概念和实施的成熟发展,支撑企业IT敏捷、快速、协作的交付应用成为可能,在软件行业同样需要软件交付的自动化生产线,交付出个性化、可定制的软件。


最近有幸参加公司新一代云平台的研发(数字化企业云平台The Platform)工作,深度体验到新的技术变革带来的软件交付变革的便捷性。通过企业云平台能够支撑秒级服务无缝切换、分钟级的应用交付(从代码到交付出一套可访问环境)。对于企业云平台,在版本研发中同样采用了微服务架构、容器、DevOps生产线的技术支撑能力,20分钟(后续小伙伴已经有了优化,提升到12分钟内可以搞定)时间内可以从源代码,经历编译、打包、配置、部署、启动等系列操作交付出两套可访问环境,一套部署在公有云上,一套部署在公司内部私有云。


目前整个平台有十六大领域系统(参加下图红色部分)支撑,部署节点30余个,开发环境、测试环境、预发环境在私有云上发布;生产环境在阿里云(仅使用阿里云上的虚拟机)上交付。


数字化企业云平台支撑云原生应用的快速交付,同时在平台自身建设过程中(所有的微服务建设过程中)严格遵守了12-Factor原则(HeroKu提出的12原则,原文可以访问:http://12factor.net/zh_cn/),12-Factor原则提供了未来云原生应用建设的方法论,是开发Cloud Native App的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,避免软件污染,无缝交付云上云下。


正确的理解12-Factory原则非常关键:我们的理解是,12-Factor本质是站在运维的角度,给开发提出的要求,未来更多的应该由平台提供12-Factor能力支撑,让工程师更关注在业务应用的交付;把复杂的、重复的、无价值的事情交给DevOps+平台来做,彻底让软件工程师从码农变为知识创造者。

平台建设过程中我们对12-Factor了大量落地工作,在此分享给大家,如有更好的落地实践也欢迎讨论。本次会和大家分享12要素宣言的前6个原则,后续为大家分享后6个原则。


原则一:基准代码(一份基准代码,多分部署)

    我们的实践:

          1、每个微服务对应一个Git库

          2、每个发布版本为一个Codebase(发布后会对该发布版本的代码打一个Release Branch)

          3、使用TBD(Trunk Based Development)版本管理模式 (TBD是基于主干的开发模式,详细可以参见“宋会计”的博客:http://blog.csdn.net/xn_sung/article/details/51427075,更多版本开发模式可以参考:http://www.alwaysagileconsulting.com/articles/version-control-strategies/


          4、模块间不允许代码依赖(必须依赖三方库、或者二方库)


原则二:依赖(显式声明依赖关系)

    我们的实践:

          1、所有依赖必须显式声明

          2、微服务之间的依赖(Rest API)纳入依赖管理

          3、反模式:禁止使用反射依赖注入

          4、Native Lib的依赖需要纳入管理(不仅开发期的依赖需要严格管理,对于运行期依赖的服务组件需要打包在一个可执行的环境中)


原则三:配置(在环境中存储配置)

     我们的实践:

          1、配置针对环境的配置,即“环境配置”,不涉及业务配置

          2、环境配置与代码严格分离

          3、环境配置不能做热更新(遵循“不可变基础设施”原则),如要变更只能重新部署(谁让微服务现在能秒级交付那)

          4、环境配置项要细化到最小粒度,不要做“套餐”模式的配置

          5、配置与部署环境关联(提供不同环境的部署包、在编译打包后通过注入的方式形成不同环境的可部署包)


原则四:后端服务(把后端服务当做附加资源)

     我们的实践:

          1、不要在应用内部嵌入后端资源(如自带嵌入式数据库)

          2、留出扩展点以方便后端资源的快速更换

          3、在技术和成本允许的情况下尽量使用云服务能力,并通过留出扩展点以降低耦合


原则五:构建、发布、运行(严格分离构建和运行)

     我们的实践:

          1、构建、发布、运行三个阶段要严格分离

          2、不要直接更改运行环境(如直接对运行环境中的应用打补丁、直接修改运行环境中的配置文件操作,需要严格禁止)

          3、编译产物、配置和运行环境(镜像)需要纳入版本管理

          4、建立发布失败后的回退机制


原则六:进程(以一个或多个无状态进程运行应用)

     我们的实践:

          1、应用容器内不允许保存状态数据(所有微服务均是无状态的,便于后续的扩展、伸缩、漂移等能力)

          2、应用容器之间不允许直接共享数据(通过后端服务来提供)

          3、需要提供Session集中管理(托管在Redis中)

          4、不允许使用粘滞Session

          5、提供缓存服务保存Session状态信息


本文对12要素宣言的实践,先为大家分享前六个,之后会继续为大家分享后六个在数字化企业云平台上的实践结合。


近期EAII研究院(微信号:eaworld)会发布作者刘相“数字化企业云平台的Cloud Native12原则(下)”,敬请关注。


关于作者:

刘相

EAII-企业架构创新研究院 专家委员

计算机应用技术硕士,现任普元软件产品部副总兼SOA产品线总经理。十年IT行业经验,专注于企业软件平台,在SOA、分布式计算、企业架构设计等领域。先后主导公司EOS7、Portal、云PAAS平台、云流程平台、BPM等系列产品的开发和设计工作。著有国内首本解析SpringBatch的中文原创图书《SpringBatch批处理框架》。个人爱好:阅读,慢跑。



关于EAII

EAII(Enterprise Architecture Innovation Institute)企业架构创新研究院,致力于软件架构创新与实践,加速企业数字化转型。


eaworld项目(微信号:eaworld,长按二维码关注)


eaworld是EAII的官方微信账号。

本文转载自:http://blog.csdn.net/bruceblue/article/details/52440185

共有 人打赏支持
粉丝 1
博文 23
码字总数 18356
作品 0
海淀
应用驱动 新华三云解决方案为行业赋能

  【IT168 资讯】据IDC报告,到2020年企业IT基础设施和软件有67%将由“云”来提供。借助其灵活、敏捷的特性,“云”将成为新业务的创新平台、新商业模式的实验平台。在企业数字化转型战略中...

it168网站 ⋅ 2017/11/28 ⋅ 0

深耕混合云市场 FIT2CLOUD并购Jumpserver

  【IT168 云计算】混合云正在成为企业IT应用的重要趋势之一。   据Gartner的研究报告显示,传统数据中心外包(DCO)市场的衰落意味着混合基础设施服务的巨大转变,到2020年,云、托管服务...

it168网站 ⋅ 2017/11/23 ⋅ 0

Pivotal助力中国企业以硅谷速度实现创新

  【IT168 资讯】11月23日 中国北京――旨在帮助企业加速数字化转型的Pivotal公司,将赋予中国企业提供创新产品和服务的能力,同时使他们能以硅谷初创企业的敏捷度进行运营。因此,众多中国...

it168网站 ⋅ 2017/12/07 ⋅ 0

超云将成为数据中心演化的下一个阶段

如今,各行业组织的数字化转型基本上都是由创新、自动化和差异化的需求驱动的。云计算和存储已经在基础设施现代化中发挥了核心作用,但引入和支持新兴应用和服务的市场竞争并没有放缓的迹象。...

技术小能手 ⋅ 05/23 ⋅ 0

投资5亿美金提升能力 华为服务营收创新高

  序言:IT服务可以为企业节省IT运营成本,使IT系统的能力和质量提升,能够让企业集中资源确立核心竞争优势,同时,随着云计算市场不断成熟,得到了越来越多企业用户认可,企业运营云化转型...

it168网站 ⋅ 2017/09/13 ⋅ 0

腾讯云战略投资灵雀云(Alauda),领跑容器PaaS市场

摘要:灵雀云(Alauda)获B轮融资,腾讯云战略领投,之前轮次投资方高榕资本、宽带资本跟投,其他战略投资者持续跟进,B轮融资总额超亿元人民币。融资后,腾讯云与灵雀云双方将在容器及企业级...

智, 多趣 ⋅ 2017/11/08 ⋅ 0

数字化重塑,IBM凭什么?

IBM是最早全面向人工智能和认知计算转型的超大型科技企业。2015年,IBM推出了认知商业愿景,这是IBM公司105年的历史上第三个品牌愿景。早在1995年,IBM就描绘了“电子商务”的愿景;2008年,...

云科技时代 ⋅ 2017/11/15 ⋅ 0

浪潮发布PS Cloud 开源+云ERP会给中小企业带来哪些红利?

-------- 作者:刘学习 开源系统的星星之火,经过20多年的发展,已经燎原到了几乎所有的IT应用领域,不仅包括操作系统、数据库、中间件、办公软件等方向,而且还在大数据、云计算、区块链、A...

z1y492vn3zyd9et3b06 ⋅ 04/26 ⋅ 0

Veeam推出颠覆性Veeam混合云可用性平台

为企业级业务永续(Always-On Enterprise)提供新一代支持虚拟、实体及云端工作的可用性方案 Availability for the Always-On Enterprise(企业级业务永续的可用性)解决方案的创新公司Veeam...

玄学酱 ⋅ 05/17 ⋅ 0

飞天技术汇“2018云栖大会·上海峰会”专场,等你加入

智能制造是中国传统企业面临的重大课题,如何正确处理企业智能转型过程中出现的各种问题,如何顺利完成传统制造业的数字化革命,云计算的智能化解决方案将为观众提供全新的思路。 在飞天技术...

云攻略小攻 ⋅ 05/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

C++内存映射文件居然是这样?!

内存映射文件大家都时不时听过,但它到底是个什么?赶紧来看看吧 内存映射文件到底是干嘛的呢?让我们先来思考下面几个问题: 如果您想读的内容大于系统分配的内存块怎么办?如果您想搜索的字...

柳猫 ⋅ 29分钟前 ⋅ 0

MySQL 数据库设计总结

规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节...

OSC_cnhwTY ⋅ 今天 ⋅ 0

多线程(四)

线程池和Exector框架 什么是线程池? 降低资源的消耗 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池没有或者减少T1和T3 提高线程的可管理性。 线程池要做些什...

这很耳东先生 ⋅ 今天 ⋅ 0

使用SpringMVC的@Validated注解验证

1、SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 [java] view plain copy edit.userna...

瑟青豆 ⋅ 今天 ⋅ 0

19.压缩工具gzip bzip2 xz

6月22日任务 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 6.1 压缩打包介绍: linux中常见的一些压缩文件 .zip .gz .bz2 .xz .tar .gz .tar .bz2 .tar.xz 建立一些文...

王鑫linux ⋅ 今天 ⋅ 0

6. Shell 函数 和 定向输出

Shell 常用函数 简洁:目前没怎么在Shell 脚本中使用过函数,哈哈,不过,以后可能会用。就像java8的函数式编程,以后获取会用吧,行吧,那咱们简单的看一下具体的使用 Shell函数格式 linux ...

AHUSKY ⋅ 今天 ⋅ 0

单片机软件定时器

之前写了一个软件定时器,发现不够优化,和友好,现在重写了 soft_timer.h #ifndef _SOFT_TIMER_H_#define _SOFT_TIMER_H_#include "sys.h"typedef void (*timer_callback_function)(vo...

猎人嘻嘻哈哈的 ⋅ 今天 ⋅ 0

好的资料搜说引擎

鸠摩搜书 简介:鸠摩搜书是一个电子书搜索引擎。它汇集了多个网盘和电子书平台的资源,真所谓大而全。而且它还支持筛选txt,pdf,mobi,epub、azw3格式文件。还显示来自不同网站的资源。对了,...

乔三爷 ⋅ 今天 ⋅ 0

Debian下安装PostgreSQL的表分区插件pg_pathman

先安装基础的编译环境 apt-get install build-essential libssl1.0-dev libkrb5-dev 将pg的bin目录加入环境变量,主要是要使用 pg_config export PATH=$PATH:/usr/lib/postgresql/10/bin 进......

玛雅牛 ⋅ 今天 ⋅ 0

inno安装

#define MyAppName "HoldChipEngin" #define MyAppVersion "1.0" #define MyAppPublisher "Hold Chip, Inc." #define MyAppURL "http://www.holdchip.com/" #define MyAppExeName "HoldChipE......

backtrackx ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部