CloudRun中的Apple SwiftNIO-这可能吗?

时间:2019-06-18 22:57:44

标签: swift google-cloud-functions google-cloud-run swift-nio

我需要实现以下功能。

  1. 客户端:调用网络服务的iOS(和Android)应用
  2. 服务器端:Goolge Cloud上的Web服务。

服务器端应具有HTTP / 2,TLS 1.3

IBM Kitura使得为Android和iOS生成客户端代码以与SwiftNIO服务器对话变得非常容易。

Kitura macOS App是一种功能强大且简便的方法,可用于创建服务定义以及生成客户端和服务器代码。 Kitura服务器是SwiftNIO 2.0服务器,可与最新的Apple iOS完美配合。

我探讨了在IBM Cloud上运行服务器代码的可能性。 IBM Swift Cloud Functions非常轻巧。但是有两个大问题。

1) Using custom domain with LetsEncryt - SSL certificate is not updated automatically. 
Which means every 90 days it must be updated manually. 
Basically - no managed SSL.

2) only ipv4, no ipv6 support with means it cannot pass the 
Apple App Store requirements. 

因此这两个问题排除了IBM Cloud。

对于Google Cloud,这两个不是问题。

现在,我正在探索使用以下其中一种构建RESTful API的选项:

1) Swift
2) Golang

由于Kitura macOS应用程序,选项1)是一个很好的选择。我可以只用一种语言Swift进行开发,这会加快开发时间。 有一个缺点-不支持Google Cloud API的Swift客户端库。

因此基于SwiftNIO的API可以用作前端,并且应从1)调用Google Golang Cloud Functions。

或者如果我使用ColdRun,则可以从Swift调用Golang,因为可以从iOS使用Gomobile。怎么样?

Kitura也可以生成OpenAPI接口。

选项2)-仅使用Golang。缺点-我无法使用Kitura Swift功能。

Google云服务器上有哪些选项:

1) Google Cloud Run (with container for Swift)
2) Google Cloud Functions for Golang
3) Google Appengine for Golang

选项: 1)我没有关于冷启动以及其他参数2)和3)的答案

2)非常好且便宜: 每月2百万次调用(包括后台和HTTP调用) 400,000 GB-秒的内存,200,000 GHz-秒的计算时间 每月5 GB网络出口 最大功能持续时间= 9分钟 冷启动= .5-1.5秒

3)冷启动=秒,但我想2)是此参数上的最佳选择。

我认为ipv4和ipv6以及Apple App Transport Security(ATS)要求在1),2)和3)中都可以,但是我需要确认。

对于HTTP / 2、1),2)和3)上的TLS 1.3,我没有答案。

还有一件事。我需要能够调用BigQuery。目前,唯一支持的即用型客户端库适用于Golang。

所以我认为Cloud Run + Golang CloudFunction上的SwiftNIO应该是最好的可能性。

1 个答案:

答案 0 :(得分:3)

Cloud Run不支持流HTTP / 2。它应该具有最新的密码。

我已经在Cloud Run(使用Protobufs和客户端/服务器swift的here's an example)上运行了Swift。它使用Kitura。

由于并发并且没有计费障碍,运行可能会比GCF和GAE便宜。 Go和Swift的冷启动性能可能会相似,因为它们都在启动二进制文件,但我承认我没有

ATS不会成为问题,因为Run会为您提供SSL(.app域非常整洁,因为我认为它们需要SSL和HSTS)。