Jess: 一种Serverless和GUI-less应用

banq 16-08-07
         

Jess的作者起初想做一个简单的跟踪自己花费的记账应用,每周开始设置一个预算,每次购买花钱时从预算中减去。

作者是个技术迷,曾经观看了Dockercon 2016的20个视频,每天收听 Kubernetes, Mesos, Spark Streaming, 和 Serverless架构,花费了4个月使用Swift建立过iOS应用,使用Angular2建立过Web应用。有过RethinkDB,Python和Scala经验,还发布过有关使用Docker组合的交互教程的博文。

现在对于这样一个预算应用,他真的不想再重新建立一个应用了,因此,有了基于Serverless的Jess:
这个应用几乎没有GUI页面,只要通过(banq注:类似微信)那种发送信息即可,可以发送四种命令:Set,Get,Add或Subtract,只要你的消息中包括这四种命令和金额,jess会根据命令自动进行预算方面运算,比如:
你发消息:请设置预算为100;
jess:你的预算是100;
你发消息:刚才我订了批萨,请减去9元;
jess:你的预算是91元。
你说:今天我幸运,地上捡到20元,把它加到预算吧。
jess:你的预算是111。


jess是一个Twilio 电话号码,这个应用是无GUI也就是GUI-less的,无需设计界面,后端serverless架构基于 IBM API Connect 和OpenWhis,这样不需要定制web服务器(banq:类似现在阿里云那种云主机),也不需要容器,这个应用只有接受到文本消息才会允许,这里是工作原理:

1.用户发送文本消息给Twilio
2.Twilio 进行HTTP调用IBM API Connect,包括用户电话号码和文本内容。
3.API Connect转换HTTP请求参数为一个JSON文档,这样定制的OpenWhisk action能够进行处理。
4.API Connect发送JSON文本到OpeWhisk action的REST端点。
5的OpenWhisk action处理请求,存储用户预算和消息在IBM Cloudant中。
6.OpenWhisk返回消息包括用户当前的预算余额给API Connect。
7.API Connect转换JSON响应为TwiML消息。
8.API Connect返回TwiML消息给Twilio

大概流程:
User -> Twilio -> API Connect -> OpenWhisk -> API Connect -> Twilo -> User

为什么使用这种Serverless架构?只需支付API调用费用,每个月50k,以及OpenWhisk action执行时间的费用。其他不必再关心扩展性等问题。

Jess: A Serverless and GUI-less App

         

2