本系列文章讲解云服务研发架构的建设,不论研发团队和组织是任何规模,你都应该或已经开始引入敏捷研发实战,在阅读之前建议至少需要熟悉一些涉及到的知识:

  • Linux
  • 容器编排
  • 自动化
  • 发布管理

0x00 Serverless&容器云

从面向机器,到面向环境,面向服务,面向领域
放弃复杂繁琐,迎接简易快速
成本更低

Serverless是比容器云更具效益的解决方案,但团队在有能力自建的情况下,这两者的区别只在于使用场景,而容器云恰恰是全面云原生应用的一个切入点,接下来我们一起来讨论。

暴露问题:

  • 机器长期暴露,不安全
  • 环境交叉,不稳定
  • 人为操作,不可靠
  • 不支持各个维度监控,不实时
  • 不支持弹性调度,不健壮
  • 运维权限分散,无法清晰责任,不明确
  • ...

解决目标:

  • 隔离机器和运维权限,专人专事
  • 隔离环境,采用成熟容器化解决方案,提升移植和稳定性
  • 引入自动化,减少人为操作,提高效率和确定性
  • 引入监控,分派项目(服务)责任人,即时风险预警
  • 引入编排,根据负载弹性伸缩,建立灵活扩展能力
  • ...

Serverless架构的引入就是为了解决管理和效率的问题,集中管理资源,不仅在服务管理上结构更加清晰和能力更加完备。同时也让DevOps的建设更加轻松,一旦基本建设后,整个交付流程会无比通畅,相对于传统方式产出效率会不小的飞跃。

当然,就serverless来说,你只需要理解成任意部署实施,而无需考虑服务器,但这只是敏捷流程的其中一个环节。

如果只是改变服务或应用的部署模式,只不过是工作内容发生了变更,实质上没有什么提升,也就是说需要同时改变人去部署服务这样一个流程。

目前比较成熟的解决方案是只需要提供代码和描述文件,提交代码后触发一系列的事件,包括打包服务镜像,并隔离部署。

具体的说从提交代码后就不需要研发人员关心后面发生的事情了,甚至不需要人介入,至于如何建立代码仓库和各种事件制度,后面的章节展开说明。

如果要建设一整套总体完善的系统架构并且长期运行,就还必须需要建立起专门运维体系,并且保障系统基础设施和资源正常。

解决方案

应用

  • Docker
  • Containerd

容器技术或者应用,其底层是由操作系统支持,例如Linux下由namespace支撑

函数

  • OpenFaas
  • OpenWhisk

代表性的serverless框架,指定函数运行特定逻辑,也可由容器驱动

何时不用

  • 应用持有内部或运行时状态
  • 不允许失败,不鼓励重建

0x01 编排

以下引用一段Redhat的描述:

容器编排是指自动化容器的部署、管理、扩展和联网。容器编排可以为需要部署和管理成百上千个 Linux® 容器和主机的企业提供便利。

容器编排可以在使用容器的任何环境中使用。它可以帮助您在不同环境中部署相同的应用,而无需重新设计。通过将微服务放入容器,就能更加轻松地编排各种服务(包括存储、网络和安全防护)。

容器可为基于微服务的应用提供理想的应用部署单元和独立的执行环境。借助容器,您不仅能以微服务的方式在同一硬件上单独运行一个应用的多个部分,还能更好地控制每个部分及其生命周期。

利用编排来管理容器的生命周期也为将编排集成到 CI/CD 工作流中的 DevOps 团队提供了支持。与应用编程接口(API)和DevOps团队一样,容器化微服务也是云原生应用的重要基础。

解决方案

  • Rancher
  • K8s

0x02 DevOps

下面引用一段维基百科的解释:

DevOps(Development和Operations的组合詞)是一种重视「软件开发人员(Dev)」和「IT运维技术人员(Ops)」之间沟通合作的文化、运动或慣例。 透过自动化「软件交付」和「架构变更」的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

解决目标:

  • 快速交付
  • 质量检测
  • 异常反馈
  • 减少工作
  • 标准流程
  • 自动对其

常用方案:

  • gitlab
  • sonarqube
  • jinkens
  • pipline
  • ...

DevOps的建设通常没有具体的标准,团队通过需求自己加入一些环节。但就一些普遍流程,例如集成代码质量检测,测试,编译,部署等流程,都具有成熟的解决方案可供使用,这里不展开讲。

0x03 期望

以上对传统架构往云架构迁移所涉及的做了一个描述,我会逐步对相关内容展开讨论。如果按照流程一步一步改善基础设施和运作流程,研发团队的幸福感会直线上升,这也是我和我的团队在不断的拥抱变化中,在交付架构这一领域真实的经历和感受,例如你现在停留的这个网站,也只是一个pod的service,希望和你分享,当然,错误之处和不足之处,欢迎意见和建议。