Cómo implementar un back-end de Flask para la aplicación Swift (iOS) en un servidor en la nube

A2A .

Bueno, Flask es un marco de Python para sistemas de back-end, por lo que prácticamente lo implementa como implementa cualquier código de Python.

Dado que Flask admite una API RESTful (Transferencia de estado representativa), puede optar por front-end con una página web, aplicaciones de dispositivos móviles o programas de escritorio completos (muchos juegos basados ​​en web con requisitos de descarga del cliente usan tales API).

Por lo general, transfiere fragmentos de datos que representan el estado del objeto entre la aplicación y el sistema de fondo, utilizando cifrado integrado e interfaces de inicio de sesión a través de HTTPS.

Entonces, por ejemplo, si quisieras interactuar con la API Graph de Facebook o la API de Twitter, lo harías a través de una API RESTful. Por lo general, esto se realiza lanzando objetos Jinja2 o JSON (en capas sobre la API RESTful), como un mecanismo de transporte. A Flask le gusta Jinja2, mientras que a Facebook le gusta JSON (que puede rellenar desde una plantilla Jinja2, por lo que son compatibles).

No usarás Swift en el back-end: no va a suceder . Si bien puede ser divertido contemplarlo, y tal vez, incluso trabajar en adaptar el idioma al backend, todavía no hay forma de que esté allí, y tampoco hay mucho interés de Apple para lograrlo.

Si está interesado, hay un tutorial OK sobre el uso de JSON de Swift disponible aquí: Tutorial de Swift: Trabajar con JSON.

Tenga en cuenta que no es lo más natural del mundo usar JSON de Jinja2, ya que es probable que tenga que lidiar con la recursividad para hacer las cosas en el servidor. Esto va a tener dos inconvenientes principales:

  1. La recursividad aumenta la profundidad de la pila y tiende a tomar tiempo lineal; no habrá un acceso directo acelerado, y la profundidad de la pila equivale a la utilización de la memoria en el servidor
  2. Debido a que es Python, terminará teniendo que lanzar más hardware en la parte posterior para escalar; Si bien está bien comenzar, por ejemplo, Amazon admite la implementación de una aplicación de frasco en AWS Elastic Beanstalk, para escalar realmente, realmente tendrá que cambiar a un idioma compilado.

Ese último punto es clave: Facebook pudo salirse con la suya usando muchos menos servidores, lo que significa menos gasto en el backend al escalar (usan una tecnología llamada HipHop para PHP para traducir el código a C ++; Facebook prefiere PHP a Python).

Aquí hay un punto de referencia que muestra que PHP 7.0 es aproximadamente 3 veces más rápido que Python, pero el código compilado de C ++ es aproximadamente 7 veces más rápido que PHP 7.0, o aproximadamente 21 veces más rápido que Python.

Obviamente, su kilometraje puede variar, pero tenga en cuenta que si necesita escalar rápidamente, su billetera se derramará sobre las máquinas en su centro de datos, o se desbordará por el costo de crear un traductor de Python a C ++, tal como decidió Facebook tuvieron que crear un traductor de PHP a C ++.

Así que le advertiré que está sacrificando la escalabilidad de un solo servidor por la velocidad de implementación, al elegir Flask, y tendrá un trabajo interesante por delante para lograr que el protocolo se rompa a través del límite de transferencia de datos JSON, en lugar de donde Jinja2 quiere romper EL limite.

No sé de qué se trata su aplicación móvil, pero podría probar con Google App Engine. Hace un tiempo escribí una respuesta con enlaces / tutoriales sobre cómo implementar Flask en GAE: la respuesta de Zdenko Hrcek a ¿Cómo implemento un sitio web de Flask en Google App Engine?

¿Por qué Google App Engine?

Es escalable, fácil de implementar código, base de datos NoSQL integrada, SDK con el que puede desarrollar / probar localmente, paga por lo que usa, con generosa cuota diaria gratuita, servicios útiles como memcache o tareas en segundo plano. Pero es una pregunta si esto se adapta a sus necesidades.

Si desea utilizar un servidor virtual clásico y ocuparse de todo, no importa mucho si es AWS o GCE, aunque estoy predispuesto hacia GCE.

More Interesting

¿Existe una reacción violenta de iOS-ification de OS X?

Cómo diseñar múltiples subsecciones (más de 5 secciones) para iOS sin usar control segmentado

¿La eliminación de un Certificado de Distribución en el Portal de Aprovisionamiento iOS de Apple afectará las aplicaciones en vivo que ya se encuentren en la App Store?

¿Hay alguna diferencia significativa en el rendimiento y el tamaño del archivo al programar un juego de iOS en Unity y Swift?

¿Por qué el Gobierno de Japón (primer ministro y otros funcionarios gubernamentales de alto nivel) rinde homenaje a los criminales de guerra en el Santuario Yasukuni cuando el emperador en ese momento, Hirohito, y ahora Akihito lo boicotearon?

¿Cómo iOS 7 arruinó la experiencia del iPhone?

Cómo enviar notificaciones push en iOS sin Parse

¿Quiénes son los desarrolladores de aplicaciones iOS independientes en Quora?

¿Por qué Google Talk no está integrado en la aplicación G + iOS?

¿Por qué la demanda de ingenieros de Android es menor que la de los ingenieros de iOS en Nueva York?

¿Por qué el impactador Cydia no funciona para iOS 11 beta?

¿Cómo sabe Passbook la ubicación de un usuario?

¿Por qué las personas (incluidos los propietarios de iPhone) odian el nuevo iPhone X? Soy un gran fanático de Samsung y odiaba todos los iPhones, excepto este.

Si Apple usa sus propios chips de la serie A en sus computadoras portátiles, reemplazando los chips de Intel, ¿qué tipo de efectos personalizados en iOS podríamos esperar ver en Mac OS X?

¿Cuál es el ciclo de desarrollo de iOS y la aplicación de taxi de Android?