要不要来试试使用OpenFaaS轻松开启无服务器架构?
对于不想阅读太长的人
有一个OpenFaaS的日本语版本的研讨会。即使是初学者,也可以使用最新的无服务器架构在GitHub上为Bot创建OpenFaaS,并亲自体验OpenFaaS的使用感。请务必尝试一下。
简而言之
你有听说过OpenFaaS吗?如果你一直在关注容器领域的信息,可能会稍微听说过。
OpenFaaS是一个使用容器技术实现FaaS(函数即服务)的框架。虽然这样说可能比较抽象,所以大致来说,它可以被理解为一个”使用Docker实现类似AWS的API Gateway和Lambda”的框架。
“为什么要特意用容器做,不用Lambda就可以了吧?”
这个问题我经常听到,并且从某种角度来看,我可以理解这个疑问(甚至可以说是正确的)。
我认为对于“为什么要使用OpenFaaS?”这个问题有很多种答案,但我在其中特别认为“这里好”的点有以下几个:
-
- (厳密にはDockerじゃなくてもいいけど)DockerがあればノートPCでもすぐに始められる
-
- ノートPCで開発したものは、違うクラスタ上でもそのまま動く(環境にほとんど依存しない)
-
- プライベートネットワークでも問題なく動く(クラウド側に依存が無い。オンプレでもOK)
-
- 軽量でRaspberryPiでも動く
-
- 複数Orchestratorで動く(Kubernetes, Swarm, Nomad, ECSなど)
-
- 仕組みはいたって簡単で、専用のSDKを使う必要もない
-
- Developer Experienceを大事にしている(開発者が気持ちよく使える)
-
- Production事例がちょくちょく増えてきている
- コミュニティが活発(GitHubもSlackも)
等等。
云供应商的解决方案非常简单,而且很低成本(有时甚至免费),但由于在开始之前需要繁琐的注册手续,有些人可能会感到麻烦,即使是免费的,也会对注册信用卡感到犹豫。由于人们在不同的情况下面临各种各样的困境,所以我认为OpenFaaS是一种可以轻松开始并进行扩展的服务,在这方面应该存在着一定的需求。
我认为,对于了解OpenFaaS来说,最容易入手的方式是参加日语版的工作坊。这个工作坊分为10个实验室,你可以亲身体验OpenFaaS的能力。
我希望能够在这个工作坊中介绍一下我们将要做什么。
开放式函数即服务工作坊
实验1 – 准备OpenFaaS
首先,我们要做一些准备工作来开始使用OpenFaaS。虽然OpenFaaS可以在各种编排器上运行,但在这个研讨会中,我们将使用Swarm,因此需要准备Swarm集群。一旦集群准备好了,我们就可以快速部署OpenFaaS。

实验2 – 尝试使用OpenFaaS
在OpenFaaS准备好之后,我们立即在实验2中尝试使用OpenFaaS。OpenFaaS提供了一个简单的用户界面,可以轻松进行试用。我们可以使用它来快速部署函数并试用一下。同时,我们还可以尝试使用Grafana+Prometheus来实现一种炫酷的监控方式。

实验三 – 第一次的函数
在Playground的试用结束后,现在我们终于可以自己动手创建function了。在Lab3中,我们将从头开始创建实际的function。

Lab4 – 再深入探索一下function
既然我们已经理解了如何构建函数,那么让我们更深入地探究一下吧。在实验室4中,我们将:
-
- function内で使う設定値はどうするべきか?
-
- functionのログはどうすればいいの?
- functionを連鎖させたい場合はどうするの?
我将回答这个问题。
实验五 – 尝试创建GitHub的机器人
在掌握了基本的使用方法后,现在我们将利用之前所学的知识来创建一个GitHub的机器人。我们将制作一个相当实用的机器人。

实验6 – 尝试创建一个动态Web页面
有时候我们想要从函数中传送动态的Web页面。让我们来看看在Lab6中如何实现这个功能。

-
- 调用HTML函数
-
- 获取HTML页面
-
- 从HTML 页面中调用函数
- 将返回的结果反映到HTML 中
实验7 – 尝试使用function进行异步调用
在Lab7中,您可以异步调用函数。对于函数,您只需发送一个请求“よろしく!”然后学习如何以异步方式处理。

实验8 – 函数的超时
在OpenFaaS中,我们可以自行决定函数的超时时间。是的,不是由提供者来限制,而是我们自己来决定。让我们在Lab8中学习有关超时的类型。

参考:https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/
实验室9 – 函数的自动缩放
当出现忙碌的函数时,自动扩展是一种分散负载的方法。在OpenFaaS中,默认情况下,Prometheus会监视函数的负载,并触发自动扩展功能。让我们尝试施加压力并观察自动扩展的效果。

实验室10 – Secret的使用方法
将API密钥暴露在外是危险的。与其通过注入到环境变量中,并暴露给所有人,不如采取使用Secret机制来保护机密信息的方式更安全。让我们在Lab10中学习如何在函数中使用Secret。

总结
谢谢您读到这里。参加这个工作坊不仅能学到无服务器架构,也会对您的学习有所帮助。如果您觉得有趣的话,欢迎再次使用!同时,不妨进一步为OpenFaaS做出贡献,迈出更大的一步吧!