本课程从云原生时代大背景下分析应用上云带来的的优势与对业务开发人员带来的挑战,从而说明
构建业务-应用服务上云知识库的重要性与必要性;主要根据知识库建设的通用性原理,从知识生产到消
费再到知识再生产的完整闭环阐述知识库的核心建设过程,并根据上云知识库的特点围绕上云前、上云
中和上云后,提出上云内容分类建议与技术实现建议供企业参考。
1 云原生概述
云原生即Cloud Native,它是一个思想的集合,包括DevOps、持续交付(Continuous
Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways
Law)等,以及根据商业能力对公司进行重组;云原生既包含技术(微服务,敏捷基础设施),也包含管
理(DevOps,持续交付,康威定律,重组等)。云原生不是一种特定的技术,而是一系列技术、企业
管理方法的集合,云原生具有可移植、自动化、效率提升、降低成本等特点。
事物的发展并不是一蹴而就的,云原生也不是今天才有的,2010年WSO2的技术总监
PaulFremantle一直想用一个词来描述某个架构,在这种架构下,应用程序和中间件等能够在云环境中
有良好运行状态,这个词就是云原生;2013年Netflix云架构师Adrian Cockcroft介绍了Netflix在AWS上
基于云原生的成功应用,Netflix在AWS上有上万个实例,每天都有数以万计的实例被创建或者删除;
2015年Pivotal公司的架构师Matt Stine发表电子书《迁移到云原生应用架构》,书中将云原生描述为最
佳实践;同年为了统一云计算机接口和相关标准,Google联合其他20家公司成立开源组织云原生基金会
CNCF(Cloud Native Computing Foundation),它是一个非盈利组织,隶属于Linux基金会,CNCF对
云原生的定义包含了应用容器化、面向微服务架构和应用支持容器的编排调度三个方面。
经过这么多年的发展,云原生的价值逐渐被人们所肯定,传统应用也将面临向云原生应用的转变,
俗称上云,传统应用上云的过程也面临着诸多挑战,这需要开发者从思维方式进行转变。
1.1 业务-应用上云现状
前面提到,传统应用上云的过程中面临诸多挑战(此处的传统应用可以理解为运行在物理机中或者
虚拟机中的应用),例如,应用是运行在容器中而不是虚拟机中、业务配置文件在云里被抽象成一种资
源等等。
那么从一个传统应用开发者的角度来讲,应用上云首先要理解云原生的一些基本概念,包括
Kubernetes(云原生应用的操作系统)中和应用上云息息相关的五大核心概念:Pod、Deployment、
Service、Volume、Namespace;需要了解云是什么,怎么上云,在云上应用以什么形式运行,高可
用、负载均衡怎么做,各应用之间或对外部网络怎么打通等问题。
在应用层面,开发者需要了解现有的应用架构是否能够满足云原生的特点,是否能够低成本的迁入
或者部分迁移,需要确定上云的规划,是整体上云还是部分上云,是逐步上云还是一次性上云,还要确
定上云的步骤,哪些系统可以先迁移,哪些后迁移,并解决迁移后和周边的系统怎么协同等问题。
在资源层面,开发者需要了解云原生资源“共享”模式和传统应用“烟囱”模式的区别,还需要评估资源
共享带来的风险;不同于云原生的资源共享,传统应用运行在物理机或虚拟机中,服务器之间资源独
立,就像一个个“烟囱”。
在运行时层面,开发者需要了解容器与传统虚拟机的区别(容器是云原生的基石),其核心是要了
解容器和主机共享内核,其他资源通过namespace隔离;应用是否依赖一些内核参数等问题。
1.2 构建业务-应用上云知识库的必要性