本书从云计算理论基础知识、历史发展过程与现阶段状态、国内外云厂商的特色等入手介绍云平台。在此基础上,站在企业的视角,介绍云应用程序在开发、测试、部署、运维等各个软件开发周期中涉及的主流技术。
全书共9章,通过一个Java?语言编写的?Web?应用程序案例,按开发顺序由浅至深、循序渐进地讲述了云端Web应用涉及的基础开发技术,包括版本控制、自动化测试、容器(Docker)、持续集成/持续交付/持续部署、DevOps以及云平台等内容。本书结构合理、条理清晰、内容丰富。在每一章后面都配有一定数量的习题,在附录中还提供了VisualBox的相关知识,便于读者参考。
本书既可以作为高等院校计算机及软件相关专业本科生的课程教材,也可以作为软件培训机构的培训教材,还可以作为软件工程师、广大软件爱好者的自学读物和参考用书。
关于本书书名《云应用系统开发技术》的解释:
(1) 应用系统——针对某个明确的商业目的开发的应用软件系统,可能包含多个子软件或功能模块,与第三方软件模块(如数据库、网络存储、负载均衡、消息中间件、高速缓存等)共同集成以提供具体的商业服务,例如电子商务网站、企业客户关系管理系统等。
(2) 云——应用系统部署在云端,是应用系统的载体。云服务提供商有很多个,国外知名的如亚马逊、微软、谷歌等,国内知名的如阿里云、腾讯云等。云服务包括各厂商都能够提供的、标准化且同质化的服务,如虚拟服务器;也有厂商私有的、独特的服务,如微软Office 365,谷歌的 AppEngine、Salesforce.com 等。
(3) 开发技术——不同于传统的自建机房的开发技术,基于公有云平台的流行而伴生的新的开发技术,它们形成了一套生态系统,包括开发、测试、部署、运维等各个软件开发生命周期涉及的技术。
从书名中可以看出,本书的侧重点是“开发技术”,而开发出的“应用系统”将最终部署在“云”平台上。
本书不会纵向深入探讨具体的开发技术细节,而是侧重于横向给读者建立一个高层次的、概要性的思维框架,即云应用系统包含哪些云平台,如何选择,有哪些相关的主流开发技术及未来的发展趋势,并通过一个云应用实例的实现串起这些开发技术。
因此,本书总体将分为以下几部分:
(1) 概要性地介绍云理论基础、历史发展过程与现阶段的状态,对比它与传统开发技术的不同之处与特点,以及未来的发展趋势。
(2) 列举和对比国内外云厂商各自的特色,并挑选亚马逊(国外)和阿里云(国内)两个云厂商做以简要介绍。
(3) 基于云的应用系统开发技术的生态系统,是本书内容的重心所在。本书讲解了在开发、测试、部署、运维等各个软件开发生命周期中涉及的主流技术,例如分布式版本控制系统Git、自动化测试、持续集成/持续交付/持续部署、容器(Docker)、DevOps(运维)等。
(4) 站在企业的视角,模拟从一个业务需求开始,到具体实施上线的全过程,以此串起本课程的全部知识点。
本书的示例代码托管在 GitLab 上,是开放的,读者可以自行下载,地址:https://?gitlab.com/bobyuan/20190224_cloudappdev_code。
限于作者的水平和学识,书中难免存在疏漏和不妥之处,诚望读者不吝赐教,以便修正,让更多读者受益。
最后,谨向关心和支持本书编写工作的各方面人士表示感谢!
第1章 概述 1
1.1 什么是云计算 1
1.2 云计算的优点 5
1.3 云计算对传统软件工程的影响 6
1.4 云计算的历史、现状与趋势 8
1.5 云计算核心技术 10
1.6 云应用系统开发技术综述 13
习题 13
第2章 VirtualBox虚拟机 14
2.1 安装Oracle VirtualBox 14
2.2 安装Ubuntu Server虚拟机 15
2.3 安装OpenJDK 19
2.4 安装Apache Maven 23
2.5 安装Jenkins 25
2.6 安装Apache Tomcat 29
习题 32
第3章 云应用示例 33
3.1 简单的Web应用程序 34
3.2 运行Web应用程序 52
习题 55
第4章 分布式版本控制系统 Git 56
4.1 Git快速入门 56
4.2 安装Git客户端 82
4.3 Git分支模型 84
习题 89
第5章 自动化测试 90
5.1 单元测试 94
5.2 集成测试 105
5.3 测试驱动开发 106
习题 107
第6章 容器(Docker) 109
6.1 Docker原理 110
6.2 安装Docker 113
6.3 使用Docker 116
6.4 运行Docker 121
6.5 生成Docker镜像 124
习题 131
第7章 持续集成/持续交付/持续部署 132
7.1 持续集成 132
7.2 持续交付 133
7.3 持续部署 134
7.4 实现持续部署 134
习题 142
第8章 DevOps 143
8.1 DevOps原理 144
8.2 DevOps实践 145
8.3 DevOps实践经验 147
习题 148
第9章 云平台 149
9.1 云平台的选择 150
9.2 亚马逊云 151
9.3 微软Azure 175
9.4 阿里云 179
9.5 其他 182
习题 191
附录 VirtualBox 193