001 云开发基础
学习目标:
1. 了解传统业务的特点
2. 了解传统应用的开发模式
3. 了解云计算的基本概念
4. 了解云时代的业务特点和开发模式
目录:
1. 传统应用开发
1.1 传统IT架构的特点
1.2 业务驱动下的IT架构变革
1.3 “互联网+”带来的挑战
2. 云端应用开发
2.1 云计算简介
2.2 云计算解决的问题
3.3 云时代的开发模式
[A] 传统IT架构的特点
1. 在传统的IT架构下,企业进行内部的信息化建设,用于加快企业发展,提高工作效率。
企业信息化建设:
OA管理系统
ERP管理系统
CRM管理系统
学生档案管理系统
资产管理系统
。。。。。。
2. 传统IT结构下的信息化建设的特点:
1. 在企业内部应用
2. 需求变化慢
3. 用户规模小
4. 需求变化慢
5. 技术复杂度低
6. 迭代升级缓
3. 传统应用的开发模式
软件开发模式:
瀑布开发模型:标准化,阶段清晰,环环相扣
软件架构开发模式:
单体架构:开发速度快,成本低
[B] 业务驱动下的IT架构变革
1. 业务发展带来的挑战:
1. 不同语言开发的应用之间如何通信
2. 易产生数据孤岛
3. 代码复用度差
4. 用户规模变大
5. 的服务器压力大
。。。。。。
2. IT架构如何支撑业务发展
1. 硬件基础设施方面
问题:随着用户增多,服务器的集群规模也需要不断扩大,需要能够快速响应业务的变化,所以此时对于硬件设施的建设要求会更高。
解决方案1:自建机房,拓展服务器集群
所需要承担的工作如:
规划建设类:机房设计,土建。。。。。。
部署类:服务器,存储。。。。。。
运维类:监控,告警,安全运维。。。。。。
业务不熟,安全运维,可用性,可靠性
缺点:成本太高,周期太长
解决办法2:租用服务器IDC
IDC是互联网数据中心(Internet Data Center)的简称。传统IDC分为实体服务器托管和租用两种类型。
实体服务器托管:用户自行购买硬件发往运营商机房进行托管,期间设备的监控和管理工作均由用户单方独立完成,IDC数据中心提供IP接入,宽带接入,电力供应和网络维护等
租用:由IDC数据中心租用实体设备给客户使用,同时负责环境的稳定,用户无需购买买硬件设备。
特点:大大降低了成本
2. 软件架构
问题:传统的单体应用架构造成大量的信息孤岛,各个业务部门软件之间不能互通,代码的复用度比较低,所以必须要有新的架构来改善现有状况
解决办法:面向服务的框架(Service-Oriented Architecture,SOA)
SOA架构思想是将重复公用的功能抽成组件,以服务的方式给更系统提供服务
ESB企业服务总线作为项目和服务之间的桥梁
特点:部分解决传统软件架构下的问题
[C] “互联网+”带来的挑战
1. “互联网+”时代的业务特点:
1. 用户规模大,接入方式多
2. 集中式访问,流量突增
3. 大数据
4. 市场需求变化很大
。。。。。。
2. 在应对“互联网+”时代到来时,传统技术设施建设的局限性:
1. 服务器设备,机房专人维护,前期投入成本高
2. 倍数部署,资源利用率差,资源浪费
3. 流量突增难以应对,不够灵活
3. 是否可以按需付费,弹性伸缩?
of course ——> 云开发
[D] 云计算的简介
1. 云计算定义
云计算是一种新的提供资源按需租用的服务模式
云计算是一种新型的互联网数据中业务
2. 传统IDC与云计算的区别
传统IDC:
1. 自己购买硬件发往机房,业务系统自己维护,成本高;
2. 简单的集约化管理,无法快速大规模资源交付;
3. 交付周期长;
云计算:
将规模化的硬件服务器整合虚拟到云端,为用户提供从基础设施(IaaS)到业务基础平台(PaaS)再到应用的层(SaaS)的连续的整体的全套的服务
3. 云计算的特征
4. 云计算的服务模式
1. SaaS
(Software as a Service) 软件即服务,SaaS侧重于服务,通过网络提供软件程序服务
类似于:在饺子店吃饺子 ——> 用户只需要付费即可,商家提供一切服务
2. PaaS
(Platfrom as a Service) 平台即服务,PaaS侧重于平台,以服务器平台或者开发环境提供服务
类似于:煮好的饺子 ——> 用户只需要提供餐桌,餐具即可享用
3. IaaS
· (Infrastructure as a Service) 基础设施即服务,IaaS注重计算资源的共享,消费者通过Internet从资源池中获取IT相关基础设施资源
类似于:超市的速冻饺子 ——> 用户不必从和面开始工作
[E] 云计算解决的问题
1. 规模大,按需付费
√ 成本大大降低
2. 弹性
√ 优雅的应对流量突增,灵活拓展
3. 可靠,快速故障恢复
√ 保证应用高可用
4. 极速,安全,易用
√ 几分钟时间即可轻松获取一个,数百个甚至数千个服务器实例,用户可一键购买,配置,扩展,管理自己的服务,全方位保证应用
有了云计算,使用者所需要关注的点大大减少:
云计算仍存在的问题:
1. 有拓展能力,但不够灵活
2. 迭代,更新困难
3. 代码有一定的复用能力,大那是复用度比较低
4. 各个业务系统数据部分开始打通,但是数据孤岛仍然存在
[F] 云时代开发模式
1. 特点:基于与特性进行开发,开发出来的软件具有水平拓展,低门槛准入和高解耦复用等云计算特性
云时代开发变革:
开发模式:理论支撑
软件架构:实践指导
2. 开发模式的转变
传统开发模式转变为敏捷开发
敏捷开发是一种应对需求快速变化的软件开发能力
敏捷开发特点:
1. 迭代快,开发周期短;
2. 面对面交流,只写必要文档;
3. 每天都输出成果,客户能看得到
4. 沟通多,容易发现问题
3. DevOps
DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程是的软件构建,测试,发布更加快捷,频繁和可靠。
DevOps其实包含了三个部分:
1. 开发
2. 测试
3. 运维
4. 软件架构的演变——微服务架构
在云开发时代,传统的单体架构转变为微服务架构,即把一个庞大的application拆分成几个小的独立的服务,再把独立的服务穿起来的一个架构设计。
微服务架构特性:
1. 日日可更新
基于DevOps和微服务架构,通过灰度发布,金丝雀等方法,让变更不再头疼
2. 时时可更新
面对双十一流量洪峰,记性弹性扩缩容,基于不同的仓库数据,实时更新,热生效
3. 能力可积累
开发的代码或者接口,都可以进行服用,达到越来越快的效果
4. 技术可共存
基于微服务的spring cloud或者service mesh可以进行跨语言,跨系统的对话,不排他
传统应用和云端应用的区别:
技术栈区别:
云时代开发的分类:
1. 本地应用迁移到云端
已有应用使用云计算资源,实现弹性伸缩,减少成本以及维护工作,适合旧系统迁移,无需系统重构
2. 基于云端特性开发
基于云计算资源,运输局库等进行开发工作,负载能力有一定的提升,但还不足以应对高并发,市场快速变化需求
3. 云原生应用开发
基于微服务架构,容器,持续继承,devops等;适合新业务,需求快速变化,高并发等互联网应用场景
4. 无服务器Serviceless
业务代码委托给平台,通过事件触发,使用简单,高效,大幅降低开销