Apple SwiftNIO в CloudRun - это возможно?

Мне нужно реализовать следующую функциональность.

  1. Клиентская сторона: приложение для iOS (и Android), вызывающее веб-сервис
  2. Серверная сторона: веб-сервис в Goolge Cloud.

На стороне сервера должен быть HTTP/2, TLS 1.3

IBM Kitura позволяет очень просто сгенерировать клиентский код для Android и iOS для связи с сервером SwiftNIO.

Приложение MacOS Kitura - действительно мощный и простой способ создания определения службы и генерации кода клиента и сервера. Сервер Kitura - это сервер SwiftNIO 2.0, который прекрасно работает с последней версией Apple iOS.

Я исследовал возможность запуска серверного кода в IBM Cloud. Облачные функции IBM Swift очень легкие. Но есть две большие проблемы с этим.

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) хорош из-за приложения MacOS Kitura. Я могу разрабатывать только с одним языком Swift, который ускорит время разработки. Есть недостаток - нет поддержки клиентских библиотек Swift для Google Cloud API.

Таким образом, API на основе SwiftNIO можно использовать в качестве внешнего интерфейса, а облачные функции Google Golang следует вызывать с 1).

Или, если я использую ColdRun, можно позвонить в Golang из Swift, как можно использовать Gomobile из iOS. Как?

Также Kitura может генерировать интерфейсы OpenAPI.

Вариант 2) - использовать исключительно Голанг. Недостаток - я не могу использовать функциональность Kitura Swift.

Какие варианты на сервере Google Cloud:

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

Варианты: 1) У меня нет ответов о Cold Start и других параметрах, таких как 2) и 3)

2) очень хороший и недорогой: 2 миллиона вызовов в месяц (включая фоновые вызовы и вызовы HTTP) 400000 ГБ-секунд памяти, 
200000 ГГц-секунд вычислительного времени 5 ГБ выход в сеть в месяц Макс. Длительность функции = 9 минут Холодный запуск = 5-1,5 секунды

3) Холодный старт = секунды, но я полагаю, 2) является лучшим по этому параметру.

Я полагаю, что требования ipv4 и ipv6 и Apple App Transport Security (ATS) соответствуют 1), 2) и 3), но мне нужно подтверждение.

У меня нет ответов о том, что нужно сделать с HTTP/2, TLS 1.3 на 1), 2) и 3).

Еще кое-что. Мне нужно иметь возможность позвонить в BigQuery. На данный момент единственная поддерживаемая готовая к использованию клиентская библиотека предназначена для Golang.

Поэтому я полагаю, что SwiftNIO для Cloud Run + Golang CloudFunction должна быть наилучшей возможностью.

1 ответ

Решение

Cloud Run не поддерживает потоковую передачу HTTP/2. Он должен иметь современные шифры.

Я запустил Swift на Cloud Run ( вот пример использования Protobufs и клиент / сервер swift). Это использует Kitura.

Запуск будет, вероятно, дешевле, чем GCF и GAE, из-за параллелизма и отсутствия обрыва счета. Производительность холодного запуска, скорее всего, будет одинаковой для Go и Swift, потому что они оба запускают двоичные файлы, но я признаю, что не

ATS не должен быть проблемой, так как Run делает SSL для вас (и .app домены довольно аккуратны, так как я считаю, что они требуют SSL и HSTS).

Другие вопросы по тегам