被解救的代码 - 代码即服务时代来了!

简介: 人类对自由的追求从未停止,我们用战斗获得民族自由,我们用代码获得双手自由,同时代码作为服务器的奴隶,也开始蠢蠢欲动,革命已经开始,当代码翻身做主,作为开发者的我们又该如何适应新时代的到来?

1.png

作者 | 王铎(都铎)
来源 | Serverless 公众号

人类对自由的追求从未停止,我们用战斗获得民族自由,我们用代码获得双手自由,同时代码作为服务器的奴隶,也开始蠢蠢欲动,革命已经开始,当代码翻身做主,作为开发者的我们又该如何适应新时代的到来?

一、一切皆代码的革命(Everything As Code)

代码一直是服务器中的囚徒,然而革命已来,看代码和如何一步一步掌控环境,走向服务。

2.png

1. 革命:用代码控制编译打包

Pipeline as code:代表技术 Jenkins Pipeline

3.png

2. 革命:用代码控制服务器 

Machine as code:代表技术 Docker

4.png

3. 革命:用代码控制服务器集群

Server cluster as code:代表技术 K8S

5.png

4. 革命:用代码控制基础资源

Infrastructure as code:代表技术 Terraform

6.png

当一切皆代码,A=B 可得 B=A,代码即服务时代就来了。

二、代码即服务时代的到来

1. 传统时代的代码仓库

传统的代码仓库说明中,"运行环境安装向导"文档是必备的,以 SpringBoot 代码为例,自带安装向导文档。

7.png

2. 新时代的代码仓库

参考代码仓库 aws-lamda-spring-boot2,包括 springboot 运行到 aws 的 lamda 需要的全部代码。

8.png

9.png

3. 主流技术对新时代的拥抱

Spring 的发展为例,从 SpringBoot 开始,不断对环境控制进行集成,直到 SpringNative,已经可以直接构建镜像。

10.png

三、代码即服务下的云原生架构

1. 容器服务:用代码控制一切

11.png

2. 微服务引擎:信任标准平台,将部分控制权交给平台

12.png

3. 函数计算:信任标准平台,将大部分控制权交给平台

13.png

四、代码即服务下的研发平台战争

在代码即服务的时代,各大厂商都在建立自己的云上研发闭环,谁做好云上的开发平台,谁就能抓住下一带云原生开发者的心。

14.png

1. 代码托管之战:得代码者的天下

2. 在线开发之战

3. 在线构建 DevOps 之战

4. 研发体系发展

  • 在代码即服务时代,Git 作为代码版本管理软件,加上 WebHook,可以轻松地管理整个代码的运行生命周期,GitOps 应运而生。GitHub 吸 收GitOps 思想,推出 GitHub Actions

15.png

  • AWS 推出产品 Proton,提供全配置代码的服务和环境模板,将平台建设能力和复用能力开放给平台开发人员,让普通开发人员更专注业务实现。

16.png

五、阿里云开发平台

1. 云开发平台,通过整合云原生产品和云效,完成了云原生开发闭环

17.png

2. 云开发平台,构建应用级别的云原生应用,预设标准云架构

18.png

3. 云开发平台,应用共享

19.png

  • 云开发平台和天猫精灵,钉钉团队合作,整合小程序的前后端一起化开发部署,解决小程序云和用户云不能打通问题,给小程序加上用户云能力。
  • 云开发平台应用可以在团队内共享,团队内的技术交流,再也不仅仅是 clone 代码。
  • 云开发平台市场共享,后续可以合作方的技术方案直接在市场上构建,让云服务提供商再也不用现场帮助用户构建和维护云环境。

六、结语

诚挚邀请大家加入云开发平台,一起共建服务百万阿里云开发者阿里云的云上研发平台。

引用:

  1. Performance of running Spring Boot as AWS Lambda functions
本文整理自阿里云技术专家--都铎在【阿里云 Serverless Developer Meetup 上海站】上的分享
ppt 获取方式:关注 Serverless 公众号,后台对话框回复“ppt”即可
直播回放观看地址https://developer.aliyun.com/live/246653
相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
Go 持续交付 开发者
Go语言包与模块(module)的基本使用-《Go语言实战指南》
本章深入讲解Go语言中的包(Package)和模块(Module)概念。包是代码组织的最小单位,每个`.go`文件属于一个包,通过`import`实现复用;主程序包需命名为`main`。模块是Go 1.11引入的依赖管理机制,支持自动版本管理和私有/远程仓库,无需依赖GOPATH。通过实际示例,如自定义包`mathutil`和第三方模块`gin`的引入,展示其使用方法。常用命令包括`go mod init`、`go mod tidy`等,帮助开发者高效管理项目依赖。最后总结,包负责功能划分,模块实现现代化依赖管理,提升团队协作效率。
517 15
|
安全 调度 iOS开发
macOS Ventura 13.7.6 (22H625) 正式版 ISO、IPSW、PKG 下载
macOS Ventura 13.7.6 (22H625) 正式版 ISO、IPSW、PKG 下载
1550 4
macOS Ventura 13.7.6 (22H625) 正式版 ISO、IPSW、PKG 下载
|
Go
Golang注释与godoc详解
这篇文章详细介绍了Go语言中注释的格式、位置以及如何使用godoc工具生成和查看项目代码的注释文档。
601 4
Golang注释与godoc详解
|
存储 安全 程序员
|
SQL 关系型数据库 MySQL
(八)MySQL锁机制:高并发场景下该如何保证数据读写的安全性?
锁!这个词汇在编程中出现的次数尤为频繁,几乎主流的编程语言都会具备完善的锁机制,在数据库中也并不例外,为什么呢?这里牵扯到一个关键词:高并发,由于现在的计算机领域几乎都是多核机器,因此再编写单线程的应用自然无法将机器性能发挥到最大,想要让程序的并发性越高,多线程技术自然就呼之欲出,多线程技术一方面能充分压榨CPU资源,另一方面也能提升程序的并发支持性。
1588 3
GOLANG MAP 查找
GOLANG MAP 查找
349 3
|
Web App开发 缓存 Ubuntu
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
1462 11
|
XML 存储 编译器
Protobuf 详解
Protobuf 详解
|
存储 Go 开发者
Go语言引用类型详解
【2月更文挑战第2天】Go语言中的引用类型是一种非常重要的数据类型,它们允许我们创建和操作复杂的数据结构。本文将详细探讨Go语言中的引用类型,包括数组、切片、映射、通道、函数、接口和结构体,帮助读者深入理解并掌握这些强大的工具。
|
机器学习/深度学习 自然语言处理 计算机视觉
Claude 3系列包含Haiku(低)、Sonnet(中)和Opus(高)三个模型
Claude 3系列包含Haiku(低)、Sonnet(中)和Opus(高)三个模型
2074 7

热门文章

最新文章