专栏首页Tencent Serverless 官方专栏云函数场景下的DevOps实践--蓝盾

云函数场景下的DevOps实践--蓝盾

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

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

0.相关材料

  • 腾讯云云函数(ServerLess Cloud Function ): https://cloud.tencent.com/document/product/583
  • 蓝盾(蓝鲸):https://bk.tencent.com/(此处为外部版本蓝盾,本文为内部使用版本,略有出入)
  • Serverless本地开发工具: https://cloud.tencent.com/document/product/583/33445
  • 腾讯云短信SMS: https://cloud.tencent.com/product/sms

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就是软件开发的银弹,路漫漫其修远兮,但未来可期~~~

推荐阅读

本文分享自微信公众号 - ServerlessCloudNative(ServerlessGo),作者:陈文科

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 蓝鲸DevOps深度解析系列(1):蓝盾平台总览

    2018年10月,嘉为科技与腾讯云、蓝鲸智云携手,在北京、上海、广州、深圳举办 “研运一体,数据驱动,让运维走向运营”为主题的分享会,来自金融、电力、能源、制造...

    嘉为蓝鲸
  • 云函数场景下的DevOps实践--CODING企业版

    云函数scf init 命令可以进行项目初始化操作。基于Git仓库模板项目可以快速创建出一个简单的模板项目,进行进一步的开发。

    腾讯云serverless团队
  • 国内顶尖水平!腾讯荣获全球首个 DevOps 标准认证 4级 | 独家专访

    2018年11月2日,在深圳召开 DevOps 国际峰会 (DOIS)上,腾讯互动娱乐事业群(IEG)的基础运营 PaaS 平台获得由工信部中国信息通信研究院(...

    DevOps时代
  • 蓝鲸DevOps深度解析系列(2):蓝盾流水线初体验

    前面一篇文章《蓝鲸DevOps深度解析系列(1):蓝盾平台总览》,我们总览了蓝鲸DevOps平台的背景、应用场景、特点和能力;

    嘉为蓝鲸
  • ​深圳 | 首届腾讯运维技术开放日,为你而来

    7x24 小时连轴转已成为运维工程师的常态,故而每年的 7 月 24 日被视为运维日,代表着运维全天候的保障系统稳定、维护业务正常运行、时刻准备着一线工作的召唤...

    CODING
  • 首届腾讯运维技术开放日!对外报名正式启动!

    ? 服务不停歇,运维不休息。 运维的工作长达7*24 小时,故而每年的 7月24日被视为运维日,代表着运维全天候的保障系统稳定、维护业务正常运行、时刻准备着...

    腾讯技术工程官方号
  • #DevOps的前世今生# 3. DevOps 的目标和核心前言

    在#DevOps的前世今生# 2. Dev和Ops矛盾缘何而来 ?一文中,通过Dev和Ops的历史发展总结出了Dev和Ops矛盾的历史渊源,以及 Dev 和 O...

    顾宇
  • DevOps前世今生 | 3. DevOps的目标和手段

    ? 一、前言 在《DevOps的前世今生 | 2. Dev 和 Ops 矛盾缘何而来 ?》一文中,通过 Dev 和 Ops 的历史发展总结出了 Dev 和 O...

    DevOps时代
  • DevOps 的前世今生:DevOps 的目标和核心

    一、前言 在 DevOps 的前世今生:Dev 和 Ops 矛盾缘何而来?一文中,通过 Dev 和 Ops 的历史发展总结出了 Dev 和 Ops 矛盾的历史渊...

    DevOps时代
  • 腾讯云携手信通院启动“云原生开源白皮书”编写,深度解读云原生

    5 月 26 日,由中国信息通信研究院(以下简称“中国信通院”)主办的 2021 年“云原生产业大会”在北京召开。作为中国云原生领域的“风向标”,大会正式发布了...

    CODING
  • SCF场景下的DevOps实现--Jenkins篇

    当前Serverless热度越来越高,越来越多的开发者们开始抛弃传统开发模式基于Serverless来搭建自己的产品服务。在享受腾讯云Serverless产品S...

    腾讯云serverless团队
  • 腾讯云荣获“云原生优秀案例及技术创新案例”两项大奖

    ? ? 导读 5月26日,在由中国信通院主办的“云原生产业大会”上,腾讯云荣获“云原生优秀案例及技术创新案例”两项大奖,腾讯云在云原生领域的探索再进一步! ?...

    腾讯云中间件团队
  • 【运维人的福音】腾讯蓝鲸社区版V6.0全新上线

    【摘要】:腾讯蓝鲸智云,简称蓝鲸,是腾讯互动娱乐事业群的”研发、运维、运营“一体化解决方案,支撑着腾讯内部上千款业务、数十万节点服务器的稳定运行,覆盖CI(持...

    腾讯技术工程官方号
  • 业务上云实践和架构演进思考

    从17年开始,结合公司业务上云专项,在线教育从一开始的云IaaS层迁移,到更开放的开源中间件选型,再到思考云原生的研发模式,做了很多实践和思考,推动后台架构演进...

    王昂
  • 浅谈 DevOps 模式下的性能测试

    DevOps 是一组过程、方法与系统的统称,用于促进开发、运维之间的沟通、协作与整合,通过持续集成与持续交付使得构建、测试、发布能够更加地快捷、频繁和可靠。测试...

    DevOps时代
  • 嘉为科技携手腾讯TAPD,助力企业敏捷开发、小步快跑!

    近日,腾讯TAPD授权嘉为科技成为官方认证服务商,嘉为科技将为腾讯TAPD的企业用户提供相关的技术服务。

    嘉为蓝鲸
  • 2021下半年有哪些不能错过的技术趋势?(下)

    作者:腾讯在线教育技术团队  导语| 腾讯在线教育部后台中心团队,作为在线教育行业的从业者,尝试整理一下2020年后端技术要点,以此窥探后台未来技术的发展...

    腾讯大讲堂
  • 腾讯知文自然语言处理平台上云实践

      笔者自去年年底开始负责腾讯知文自然语言处理平台的公有云研发以及其标准化产品的私有化交付。依托于团队过往在内部业务的NLP沉淀,深度整合公司内部优秀的NLP技...

    zakexu
  • 云+社区技术沙龙第29期回顾-高效智能运维(文末附PPT)

    2019年11月9日,由云+社区主办的第29期云+社区技术沙龙——“高效智能运维”在深圳腾讯大厦成功举行。本期沙龙围绕运维展开了一场技术盛宴,从AIOps、Se...

    云加社区技术沙龙

扫码关注云+社区

领取腾讯云代金券