前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“The Twelve-Factor App”展开去 - SaaS, App, CI/CD等

“The Twelve-Factor App”展开去 - SaaS, App, CI/CD等

原创
作者头像
数智圈
修改2022-03-30 10:43:58
6410
修改2022-03-30 10:43:58
举报
文章被收录于专栏:水滴

leanix在它的官网上对SaaS(Software as a Service)给出了一个很明了的图示。简单一点理解的话就是,SaaS是让使用者能通过网络, 比如基于浏览器,就能使用软件的各种功能。这个软件,通常是基于云架构运行着。所有和软件相关的服务,比如硬件及网络环境,服务器,数据储存等, 都由云的提供商管理。

Source: leanix - THE DEFINITIVE GUIDE TO SaaS vs. Cloud
Source: leanix - THE DEFINITIVE GUIDE TO SaaS vs. Cloud

"The Twelve-Factor App"是一篇关于SaaS设计的方法论文章,该文作者基于在Heroku平台的经验,撰写了此文。其总结了12个重要的因素, 并做了一些相关注解。

I. 基准代码

II. 依赖

III. 配置

IV. 后端服务

V. 构建,发布,运行

VI. 进程

VII. 端口绑定

VIII. 并发

IX. 易处理

X. 开发环境与线上环境等价

XI. 日志

XII. 管理进程

本文并不是来分析这些内容,而是基于这些内容,聊聊相关的话题。这些话题其实都是之前不定期以微头条的方式发出,这里只是做个总结和整理。

这一部分主要介绍:

  • 软件平台的使用情况问卷调查
  • App开发语言问卷调查 - Statista, Google I/O
  • 发布流水线支持测试和验证AI模型 - Google Cloud
  • Git, CI/CD 运行机制

软件平台的使用情况问卷调查

Stackoverflow对5万多开发人员问卷调查,对16种软件平台进行了排名,包括移动端,桌面端,云平台,容器以及开发板等。貌似是以海外使用情况为主,所以国内的几大云平台没有列出。

Source: Stackoverflow
Source: Stackoverflow

App开发语言问卷调查 - Statista, Google I/O

Statista为2019到2021年,开发移动App的跨平台框架使用情况进行了调查。这里特指既支持iOS又支持安卓的开发框架。据问卷显示,开发者中,约1/3的人使用这些跨平台框架,其他约2/3的人使用Native开发。跨平台框架使用数量排名前三的是: Flutter, React Native以及 Cordova.

值得一提的是,Native开发是指开发出的APP专门针对某一特定的移动平台。比如用Java或Kotlin开发针对安卓的App,用Swift 或 Objective-C开发针对iOS的App。根据2021年Google I/O大会数据,Kotlin是安卓系统Native开发中使用最多的语言,排名前1000的Apps中,有80%的Apps是用Kotlin开发的。

Source: Statista
Source: Statista

发布流水线支持测试和验证AI模型 - Google Cloud

软件开发中,人工智能的模块在整个软件系统通常只占一小部分,当然,也是核心的一部分。如何扩展既有的软件持续交付和自动化流水线CD/CI,让发布流水线支持测试和验证AI模型,部署模型预测服务等呢? Google Cloud介绍了一个解决方案。

Source: Google Cloud
Source: Google Cloud
Source: Google Cloud
Source: Google Cloud

Git, CI/CD 运行机制

编程比较有意思的地方是: 作为劳动成果的源代码,通常是会由多人一起在同一时间编写和维护,这是借助不同的版本控制系统来实现,当前主流当属github。其工作原理,简单点说就是一份初始代码,在本地创建后上传到云端,作为一个代码源。不同人可以把它拷贝到各自的机器,同时每个人可以基于拷贝再生成新的拷贝。每个人可以将自己修改后的各种拷贝再上传到远程。上传的过程中,有时会出现本地的拷贝和远程的拷贝有冲突,因为别的人提前修改和上传了拷贝。在经过手动修改后,最后通过成功上传,则可以再次更新代码的状态。当大家把远程的代码再下载到本地后,则可以查看到,每一行代码是由谁在何时修改的,以及每行代码每次被修改的记录。

但这一切都是一个基础。基于这种代码协同的能力,人们可以再通过其他工具,一起实现所谓的CI/CD。也就是说,当任何人修改了代码的任何地方,只要上传代码后,代码会在脚本及工具的帮助下,自动进行编译,测试和发布。整个流程完全自动化后,甚至可以对用户生产环境中的软件,随时进行自动化更新。其中CI/CD是指Continous integration, Continous delivery, Continous deployment, 对应自动化流程的程度。

Source: Atlassian
Source: Atlassian
Source: Atlassian
Source: Atlassian
Source: Atlassian
Source: Atlassian
Source: devmountain
Source: devmountain

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档