View on GitHub

Sevice Computing

Principle, Technology and Architecture for building effitive, elastic and solid services on cloud

服务计算 - 云应用开发方法、技术与架构

1、概述

云计算技术的飞速发展,越来越多企业借助“云”提供创新服务或改进企业生产力,云服务创新企业不断涌现,形成万亿级别的企业云服务应用开发市场。云提供商、云应用企业大量渴求了解云计算知识,能够在云上快速开发“高性能、高可靠、高可用、可伸缩”的企业级原生应用的人才,以满足日益增长的云服务管理、云应用开发与运维的需要。

面向服务是云应用软件的基本特征。云计算平台管理服务、零售在线服务、第三方认证服务、移动应用服务端、在线编程服务、到超算云服务 、IoT云服务、AI云服务等等,它们通常以 web service 的形式提供。以 Docker 为代表的容器技术出现,面向服务的方法正在逐步改变软件的开发过程与开发方法。 pivotal 提出“云原生应用/cloud-native Apps” 的概念,逐步将“容器”、“微服务”、“持续集成与交付”、“DevOps”等概念串联起来。 Adam Wiggins 提出 12 factor App 企业云应用宣言【中文】,并创建了 Heroku 云应用开发管理平台。Martin Fowler 在 2014 给出了“微服务”架构(microservice archtecture)定义【中文】,给出云应用构建的架构方法与准则。2015年,Google 发起了云原生计算基金(CNCF),围绕“云原生”服务云计算,服务于云服务计算社区生态与技术框架【注1】,推动相关开源项目的发展与演化,支持编排容器化微服务架构应用。

本课程关注面向服务软件的开发、部署与运维技术,紧随 CNCF 技术框架,培养云原生应用生态需要的开发技能。云基础设施与管理软件的核心多数采用 go 语言,课程包含 go 语言初中级知识、微服务应用架构、服务开发流水线、服务运行平台等内容,帮助学员尽快融入云开发生态环境。

【注1】该领域技术与工具变化太快,CNCF 技术栈和内容是动态变化的。

2、课程的定位与目标

2.1 课程的定位

2.2 课程目标

3、课程组织与内容

3.1 课程组织

Part I: Golang 基础

本部分学习 Go 语言编程相关的基础知识,设计模式,以及命令行程序编程技巧。由于系统工程师的工作环境需要,课程的设定都是Linux操作系统,尽管在Windows下一切都能完美工作。包括内容:Go语言基本语法、函数、结构体与接口,并发、异常处理,面向对象程序编程、工作空间与包,CLI 程序开发等。

Part II: Web 服务编程与框架

Web 服务端的工作原理与程序结构。web 静态文件服务、模板输出、输入路由、表单处理、过滤器框架与设计等 Request 和 Response 相关的处理。 database/sql 包的工作原理、mysql 服务器访问、 基于 entity - dao - service 三层结构层次模型、 sql template 的设计、 xorm 简介。 CI/CD?客户端的编程模型?

Part III: 微服务架构与服务管理

微服务架构;应用在容器云(Docker Swarm 或 kubernetes)中的部署;云服务的运维与优化

3.2 课程内容

周/次 课程内容 课后阅读 与 作业
1 云计算与服务计算 阅读:《云计算 概念、技术与架构》
实验:安装配置你的私有云
2 服务计算与Go语言 阅读:服务面向的架构
了解:访问 AWS 产品页面,了解你感兴趣的一些产品,它们属于 IaaS,PaaS or SaaS?
阅读:2019 全球编程语言高薪排行榜
3 Go 语言基础 - 语法、控制、函数、包、结构、集合、工作空间组织
Go 在线之旅
阅读:《学习GO语言》中文版
实验:安装 Golang 开发环境
4-5 Go 语言基础 - 方法、接口、go程、Posix Cli 作业:开发简单 CLI 程序
工具:利用 sourcegraph 阅读源码 Tick 函数实现
验证:使用接口与接口断言会产生性能损失吗?
6 面向对象编程 - 接口抽象与多态,Corba 实现原理 阅读:Interfaces / OOP
7 面向对象编程 - IO包流抽象及应用,包设计 作业:CLI 命令行实用程序开发实战 - Agenda
8 web 技术 - HTTP 协议 与 golang web 应用服务 阅读:《Golang web 应用开发》
了解:context 包,Go语言并发模型:使用 context,注:现在已是正式库 context
9 web 技术 - 处理 Request 与 Response 验证:Go HTTP Router Benchmark
作业: 选择一个任务作为web开发练习:
写一个简单 web 程序 或 原代码阅读与分析 或 写一个中间件
作业提示1 作业提示2
10 web 服务 - RESTful 基础与基于资源的 API 实践 规范:REST API 设计 Github API v3 overview微软
作业:模仿 Github,设计一个博客网站的 API
11 web 服务 - go RESTful 服务端与客户端开发  
12 web 服务 - 基于 RPC、REST、GraphQL 的服务 作业:服务构建与前后端分离的开发,具体要求
13 云应用 - 微服务基本概念与云原生应用实践 实验:选做 部署Kubernetes(与TA咨询)。提交要求:博客;
最新Kuberadm安装教程
16 云应用 - 基础设施,容器作为服务(CaaS) 参考:玩转 Docker 容器技术:1-6章 简明,易懂;生态不符合 CNCF 描述
作业:按课件内容实践,并给出实验报告
  云应用 - 容器化实践、云原生应用开发与过程 作业:应用容器化
17-18 云应用 - 架构与模式 实践:容器云实验环境
作业:【可选】cncf 技术栈自由实践博客 cncf landscape
19 云应用 - 服务管理与治理综述  

3.3 大作业要求

无!

4、课程其他信息

4.1 必备知识

前置或并行学习知识:

建议后续学习课程:

4.2 教材与参考书

参考书:

行业实践:

4.3 课程支持

5、作业提交与考核方法

5.1 作业提交

Github 和 博客(务必设置分类,以便于检查和批改)

什么内容可以写博客?

  1. 帮助小白类。系统操作指南、个人经验分享、技术科普。 例如:
  2. 框架设计类。介绍自己的设计与实现(必须有Github实现链接)。例如:
  3. 技术研究类及其他。例如:

5.2 考核内容

项目 分数 备注
平时作业 80 见作业栏
博客分享 20 按博客贡献度。贡献度标准质量+访问量

 

Markdown 语法演示页.