CloudRun 中的 Apple SwiftNIO - 这可能吗?

Apple SwiftNIO in CloudRun - is this possible?

我需要实现以下功能。

  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

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

所以基于SwiftNIO的API可以用作前端,GoogleGolang Cloud Functions应该从1)开始调用。

或者,如果我使用 Cold运行,则可以从 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)物美价廉的一款: 每月 200 万次调用(包括后台和 HTTP 调用) 400,000 GB 秒内存,200,000 GHz 秒计算时间 每月 5 GB 网络出口 最大功能持续时间 = 9 分钟 冷启动 = .5-1.5 秒

3) 冷启动 = 秒,但我认为 2) 是该参数的最佳参数。

我认为 ipv4 和 ipv6 以及 Apple 应用程序传输安全 (ATS) 要求适用于 1)、2) 和 3),但我需要确认。

关于 HTTP/2、TLS 1.3 on 1)、2) 和 3).

,我没有答案。

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

所以我想 SwiftNIO on Cloud 运行 + Golang CloudFunction 应该是最好的选择。

云 运行 不支持流式传输 HTTP/2。它应该有最新的密码。

我在云 运行 上有 运行 Swift(here's an example 使用 Protobufs 和 client/server swift)。它使用 Kitura。

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

A​​TS 应该不是问题,因为 运行 为您提供 SSL(而且 .app 域非常整洁,我相信它们需要 SSL 和 HSTS)。