热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

FONK:一个面向K8S的无服务器LAMP技术栈

正文

关于无服务器,有一种说法我听过很多次:“无服务器是一种自找麻烦的解决方案”。

当一项新技术破坏了人们习惯的工作流程时,就会出现类似的防御性声明。这种声明也是在告诉无服务器社区里的所有人,无服务器的学习曲线有多陡峭。

如果人们理解了无服务器,他们就不会说出这么负面的话。因此,我提出了一个问题:如何驯服无服务器的学习曲线?

我给出的答案是一个Web应用程序。让我来解释一下。

Guestbook:一个无服务器Web应用示例

去年春天,我第四次听到开头那句话。所以我问自己,“你能用无服务器构建的最简单的东西是什么?人们可以把它与自己已经知道的东西联系起来。”

我认为,我可以向人们展示他们可以如何做他们现在正在做的事情,只是以更简单的方式,以此来展示无服务器的价值。

因此,我构建了一个Web应用示例,称之为Guestbook。

使用Web应用降低无服务器学习曲线

就是每个人都知道的LAMP技术栈。

FONK:一个面向K8S的无服务器LAMP技术栈

它很简单,并且提供了可选的组件,这可以说明它为什么在过去20多年里如此流行。我们甚至在Kubernetes(K8S)的学习曲线中看到了它的影响:

FONK:一个面向K8S的无服务器LAMP技术栈

Guestbook是大多数人在第一次学习Kubernetes时最先部署的应用程序之一,尽管它使用NoSQL服务器代替了MySQL,但仍然是基本的LAMP结构。

对于无服务器而言这是指什么?

有鉴于此,降低无服务器学习曲线的一种方法是向人们展示如何用更少的代码和配置构建同样复杂的Web应用程序。

使用AWS构建,则该Web应用程序如下所示:

FONK:一个面向K8S的无服务器LAMP技术栈

虽然这只需要大约一半的代码和配置,但它也把你锁定在AWS中。

如果你可以创建一个类似LAMP的设计模式,但使用K8S上的无服务器概念来确保可移植性,那会怎么样?

FONK:一个面向K8S的无服务器LAMP技术栈

FONK:一个面向K8S的无服务器LAMP技术栈

AWS体系结构的组件分别是函数即服务(FaaS)运行时、对象存储和NoSQL服务器。

如果你在任何超过3000 star的GitHub项目或其他流行开源组件上使用了五个FaaS运行时之一,那么整个技术栈就可以像下面这样安装在K8S上:

FONK:一个面向K8S的无服务器LAMP技术栈

把它们都放在一起,就可以得到一个简洁的无服务器设计模式缩写:

FONK:一个面向K8S的无服务器LAMP技术栈

(我把这个动物图标归功于我的女儿,她说:“FONK听起来就像是鹅说的话。”)

基于FONK实现Guestbook

今年9月,我和一些朋友试着推出了fonk-apps.io,这是一个开源项目,目标是降低人们的无服务器学习曲线。它提供了各种语言的简单Web应用程序示例。

为了让人们更容易地从本地K8S过渡,这些Web应用程序中的第一个示例就是Guestbook。以下是我们的早期进展:

FONK:一个面向K8S的无服务器LAMP技术栈

只有Create和List函数的Guestbook是自然而然的第一选择,不过,我们的计划是让这个应用程序变得更加复杂。我们希望添加待办(完整CRUDL操作)、博客(经过身份验证的CUD、公共RL)和论坛(经过身份验证的CRUDL)。

更长远来看,内置一些CI/CD功能,包括列测试自动化或跨行性能基准测试,这会很酷。

FaaS运行时比较

在构建第一组示例的过程中,我们学到了很多比较FaaS运行时的知识。

从开发人员体验的角度来看,以下是一些早期研究结果:

FONK:一个面向K8S的无服务器LAMP技术栈

基于K8S运行时上的某些FaaS开发,其体验和本地K8S开发类似;它公开了函数将在其上运行的镜像的一些内部结构。其他的则更接近于屏蔽了镜像细节的AWS Lambda模型。

在这个领域,谷歌的Knative是那只重达800磅的大猩猩,它在GitHub上还没有达到3000星的门槛,过了这个门槛,我们就提供Guestbook示例。但是,我们正密切关注它的进展,因为它很可能会实现这一目标。

来,一起玩!

一旦开始实施这个想法,我们认为最好有一个以它为中心的社区。所以,我们试着让整件事成为成为一件有吸引力的事。

虽然并不是所有基于K8S运行时的FaaS都支持无服务器框架,但是Kubeless和OpenWhisk做得非常好。一个简单的入门方法是从头到尾做一个完整的示例:

  • FONK Guestbook/OpenWhisk/Node.js
  • FONK Guestbook/Kubeless/Node.js

我们很感激您的GitHub之星,但是,我们更希望看到一个新的FaaS运行时/语言组合PR。

你可以检出我们在GitHub上的FONK项目,自己尝试一些例子。或者,你可以提出任何FaaS/语言组合请求,我们会构建所有可能的Guestbook!

查看英文原文:https://serverless.com/blog/introducing-fonk/


推荐阅读
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
  • Python技巧:利用Cookie实现自动登录绕过验证码
    本文详细介绍了如何通过Python和Selenium库利用浏览器Cookie实现自动登录,从而绕过验证码验证。文章提供了具体的操作步骤,并附有代码示例,帮助读者理解和实践。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
author-avatar
牧羊人2602903895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有