我需要实现以下功能。
服务器端应具有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应该是最好的可能性。
答案 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)。