乐趣区

关于云服务:云函数场景下的DevOps实践蓝盾

巧匠因为他的工具而出名 —《人月神话》

本文将展现应用云函数 + 蓝盾,开发部署一个 ” 给用户发送揭示短信 ” 的微服务。以这个非常简单的利用,摸索一下 ServerLess 联合 DevOps 所能产生的合力,畅想一下将来轻利用的开发部署模式。

0. 相干资料

  • 腾讯云云函数(ServerLess Cloud Function):

    https://cloud.tencent.com/doc…

  • 蓝盾(蓝鲸):https://bk.tencent.com/(此处为内部版本蓝盾,本文为外部应用版本,略有出入)
  • Serverless 本地开发工具:

    https://cloud.tencent.com/doc…

  • 腾讯云短信 SMS:

    https://cloud.tencent.com/pro…

1. 配置本地开发环境

在本地装置 scf cli 即可:

pip install scf

2. 编码

应用 scf cli 生成一个名称为: scf-send-sms-notification 的云函数模板(demo)。

如上图所示,scf-send-sms-notification/index.py 文件是入口文件,main_handler 是入口函数。入参 event 是用户定义的入参, context 能够看做是值 - 后果模式的参数,记录程序运行时信息,如运行内存,cpu 等运行时信息。

  • 编写利用代码,装置依赖库(搁置到我的项目目录下)

依据腾讯云短信 SMS 文档,开明 SMS 服务,应用 SMS Python SDK 编写发送短信的相干代码。

  • 把敏感信息设置进环境变量,编写 makefile。

  • 把我的项目上传到工蜂(外部代码托管平台,相似于 Github)

3. 配置 DevOps 流水线

3.1 配置构建触发

别离抉择: 手动触发,Git 事件触发。Git 事件触发配置如下: 

依据配置,当利用代码 commit master 分支时,将触发 DevOps 流水线主动执行。

3.2 下载安装 SCF CLI

抉择 拉取 github 插件,如图所示配置插件, 从 github 上拉取 SCF CLI 源码。

抉择: Bash 插件,编写 Bash 脚本如下, 装置 SCF CLI。

3.3 下载利用代码

抉择: 拉取 Git (OA 版),配置利用代码库信息如下图:

3.4 利用代码质量检查

抉择: CodeCC 代码查看,配置要扫描的代码目录,如图:

3.5 本地测试

抉择:Bash 插件, 编写 (或启动) 本地测试脚本

 cd ${WORKSPACE} 可进入当前工作空间目录         cd ${WORKSPACE}/scf-send-sms-notification              cat << EOF    ***************** install requirements ******************    ** pip install -r requirements    EOF    pip install qcloudsms_py              scf --version    echo "************** Testing ***************"    echo    echo     cat << EOF    ***************** set env to function template ******************            EOF    make setFunctionEnv template-file=template.yaml function-name=scf-send-sms-notification sms_sdk_appid=***** sms_sdk_appkey=***** phone_number=***** sms_template_id=*****            cat << EOF    ***************** local invoke function ******************    * python2.7    ** scf native invoke            EOF    scf native invoke --template template.yaml --no-event    

3.6 部署代码到腾讯云

抉择: Bash 插件, 应用 SCF CLI 部署函数 (利用) 到云上

4. 日常变更和公布

配置好流水线后,日常变更和迭代,变更代码 push 到近程仓库,便会触发整个 CI/CD 流水线。进行代码质量检查,测试,公布到腾讯云上。而聪慧的你,就能够用节省下来的工夫领导丑陋实习生工作了…

CodeCC 企业微信音讯告诉:

蓝盾 CI/CD 流水线运行状况告诉:

短信:

5. 总结

所有都应该尽可能简略,但也不能简略过了头。—— 爱因斯坦

蓝盾开箱即用的插件模式,使配置 CI/CD 流水线非常简单,一条 CI/CD 流水线就实现了 Git 上传—> 代码构建 —> 测试—> 部署整个过程。而你须要做的,仅仅是在提交代码之后,去喝杯茶~~~。

云函数使得开发者齐全不必关怀机器环境运维,容器集群配置和机器 (集群) 扩缩容的问题,仅仅关注于业务逻辑自身即可,而且云函数依据申请量主动伸缩(auto scaling),按量计费,这些便当使得开发轻量利用变得非常简单和快捷,使得 bug 修复,性能迭代,验证公布的迭代流程十分迅速。

更重要的是: 那些被诸神恩宠的工程师(没错,就是你们),将从繁琐的测试公布流程、机器环境配置中解脱进去,用贵重的工夫,去发明更加美妙的世界。

6. 瞻望 SeverLess + Devops

乐谱曾经谱成,只是还没有写到纸上。— 莫扎特

软件的实质艰难在于软件自身的复杂性,人类大脑能解决的复杂度十分无限(只能同时关注 5 至 9 件事)。面对复杂度,软件开发的先贤们给我留下的最重要的两件利器便是: 形象,分而治之。

从把应用软件中的数据管理局部抽离成数据库,到分层设计,模块化开发,面向对象开发,MVC, SOA,微服务框架,都是在不同的软件粒度上在做形象和分而治之。把一个功能丰富的软件,抽离成一个个概念残缺的子性能,子性能拆散成一个个封装良好的类,类拆散成一个个各司其职的函数,直到拆散成一片片咱们大脑能齐全掌控的代码片段。而后一行行代码的实现,递归造成了一个功能丰富的软件。

然而,利用性能的分拆和细化,不可避免的引入了分布式和编排、集成、测试、公布上的复杂度。

ServerLess 以云函数 (FaaS, Function as a Service) + 云(后端) 服务 (BaaS, Backend as a Service) 的形式拆分了软件的复杂度。用户特定的利用性能通过编排一个个云函数来实现,用户共性的性能 (数据库,缓存,CDN,大数据处理,AI 等) 借力于云厂商的能力实现。

因为 ServerLess 的虚拟机 (或容器) 对用户齐全通明,因而能通明的为用户解决分布式的一致性、可用性、隔离性、弹性伸缩、安全性等问题,而因为服务拆分所引入的函数代码治理,版本治理、编排、集成、测试、公布、监控上的复杂度,则能够通过用户敌对的 DevOps 流程来解决。

往年三月份,伯克利发表了一篇对 ServerLess 前景预测的论文(2009 年,同样是他们,预言了云计算的崛起),兴许 ServerLess 就是软件开发的银弹,路漫漫其修远兮,但将来可期~~~

举荐浏览

  • 云函数场景下的 DevOps 实际 –CODING 企业版
  • 云函数场景下的 DevOps 实际 –Jenkins 篇

退出移动版