Netflix App Studio para Android e iOS, ahora con tecnología multiplataforma de Kotlin | de Tayo | Noviembre de 2020

En los últimos años Netflix ha desarrollado una aplicación móvil llamada Prodicle para innovar en pagproducción física de programas de televisión y películas. El mundo de la fabricación física es acelerado y las necesidades varían significativamente entre países, regiones e incluso de una producción a otra. La naturaleza del trabajo significa que estamos desarrollando software de escritura, en un entorno distribuido, en dispositivos donde menos de la cuarta parte de nuestros usuarios tienen una conectividad muy confiable mientras están en el set y con un margen de error limitado. Por estas razones, como un pequeño equipo de ingenieros, hemos descubierto que la optimización de la confiabilidad del producto y la velocidad de entrega es necesaria para satisfacer con éxito las necesidades de nuestros clientes en constante cambio.

https://escandalosos-peliculas-21.tumblr.com/
https://freaky-full-hd-21.tumblr.com/
https://spu.instructure.com/eportfolios/4945/Home/VER_We_Bare_Bears__Escandalosos_Pelcula_Completa_Online_Sub_Espaol_LatinoDescargar_Full__HD_
https://spu.instructure.com/eportfolios/4946/Home/VER_Made_in_Abyss_Dawn_of_the_Deep_Soul_Pelcula_Online_Completa_Sub_Espaol_Latino_2020__Descargar_Full__HD_
https://spu.instructure.com/eportfolios/4947/Home/VER_Stand_by_Me_Doraemon_2___2_Pelcula_Online_Completa_Sub_Espaol_Latino_2020__Descargar_Full__HD_
https://spu.instructure.com/eportfolios/4948/Home/VER_Raya_y_el_ltimo_dragn__Raya_and_the_Last_Dragon_Pelcula_Online_Completa_Sub_Espaol_Latino_2021__Descargar_Full__HD_
https://spu.instructure.com/eportfolios/4950/Home/VER_Croods_2_Pelcula_Online_Completa_Sub_Espaol_Latino_2021__Descargar_Full__HD_
https://spu.instructure.com/eportfolios/4953/Home/VER_Monster_Hunter_Pelcula_Online_Completa_Sub_Espaol_Latino_2021__Descargar_Full__HD_
https://spu.instructure.com/eportfolios/4954/Home/VER_Sin_tiempo_para_morir__No_Time_to_Die_Pelcula_Online_Completa_Sub_Espaol_Latino_007__Descargar_Full__HD_
https://spu.instructure.com/eportfolios/4956/Home/Kimetsu_no_Yaiba__Tanjiro_Kamado___

La alta probabilidad de una conectividad de red poco confiable nos ha llevado a confiar en soluciones móviles para una sólida persistencia del lado del cliente y soporte fuera de línea. La necesidad de una entrega rápida del producto nos llevó a experimentar con una arquitectura multiplataforma. Ahora vamos un paso más allá utilizando Kotlin Multiplatform para escribir una lógica empresarial independiente de la plataforma una vez en Kotlin y compilar una biblioteca Kotlin para Android y un marco universal nativo para iOS a través de Kotlin / Native.
Imagen para publicación
Multiplataforma Kotlin
Kotlin Multiplatform le permite utilizar una única base de código para la lógica empresarial de las aplicaciones de iOS y Android. Solo necesita escribir código específico de la plataforma donde sea necesario, por ejemplo, para implementar una interfaz de usuario nativa o cuando trabaje con API específicas de la plataforma.
Kotlin Multiplatform aborda el desarrollo móvil multiplataforma de manera diferente a algunas tecnologías conocidas en el espacio. Donde otras tecnologías abstraen o reemplazan por completo el desarrollo de aplicaciones específicas de la plataforma, Kotlin Multiplatform complementa las tecnologías específicas de la plataforma existentes y está orientado a reemplazar la lógica empresarial independiente de la plataforma. Es una nueva herramienta en la caja de herramientas en lugar de reemplazar la caja de herramientas.
Este enfoque funciona bien para nosotros por varias razones:
Nuestras aplicaciones de estudio de Android e iOS tienen una arquitectura compartida con una lógica empresarial similar o, en algunos casos, idéntica escrita en ambas plataformas.
Casi el 50% del código de producción en nuestras aplicaciones de Android e iOS está desacoplado de la plataforma subyacente.
Nuestro apetito por explorar las últimas tecnologías ofrecidas por las respectivas plataformas (Android Jetpack Compose, Swift UI, etc.) no se ve obstaculizado de ninguna manera.
Entonces, ¿qué estamos haciendo con él?
Gestión de experiencias
Como se señaló anteriormente, las necesidades de nuestros usuarios varían mucho de una producción a otra. Esto da como resultado una gran cantidad de configuraciones de aplicaciones para habilitar / deshabilitar la disponibilidad de funciones y optimizar la experiencia en la aplicación para cada producción. Desacoplar el código que administra estas configuraciones de las propias aplicaciones ayuda a reducir la complejidad a medida que las aplicaciones crecen. Nuestra primera exploración con el uso compartido de código implica la implementación de un SDK móvil para nuestra herramienta de gestión de experiencia interna, Hendrix.
Básicamente, Hendrix es un lenguaje interpretado simple que expresa cómo se calculan los valores de configuración. Estas expresiones se evalúan en el contexto de la sesión actual de la aplicación y pueden acceder a datos como asignaciones de pruebas A / B, ubicación, atributos del dispositivo, etc. Para nuestro caso de uso, estamos configurando la disponibilidad de la producción, la versión y el conjunto de características específicas de la región de la aplicación.
La conectividad de red deficiente junto con los valores de configuración que cambian con frecuencia en respuesta a la actividad del usuario significa que la evaluación de reglas en el dispositivo es preferible a la evaluación del lado del servidor.
Esto nos llevó a crear un SDK móvil ligero de Hendrix, que es un gran candidato para Kotlin Multiplatform, ya que requiere una lógica empresarial significativa y es completamente independiente de la plataforma.
Implementación
En aras de la brevedad, dejemos de lado los detalles específicos de Hendrix y mencionemos algunas de las diferencias involucradas en el uso de Kotlin Multiplatform en lugar de Kotlin / Swift.
Construir
Para Android, es como de costumbre. Hendrix Multiplatform SDK se importa a través de gradle como una dependencia del proyecto de la biblioteca de Android de la misma manera que cualquier otra dependencia. En el lado de iOS, el binario nativo está incluido en el proyecto Xcode como marco universal.
Ergonomía del desarrollador
El código fuente de Kotlin Multiplatform se puede editar, recompilar y puede tener un depurador vinculado con puntos de interrupción en Android Studio y Xcode (incluida la compatibilidad con lldb). Android Studio funciona de inmediato, la compatibilidad con Xcode se logra a través del complemento xcode-kotlin de TouchLabs.
Imagen para publicación
Depurando el código fuente de Kotlin desde Xcode.
Redes
Hendrix interpreta conjuntos de reglas: archivos configurables de forma remota que se descargan en el dispositivo. Estamos utilizando HttpClient multiplataforma de Ktor para incrustar nuestro código de red en el SDK.
Caché de disco
Por supuesto, es posible que la conectividad de red no siempre esté disponible, por lo que los conjuntos de reglas descargados deben almacenarse en caché en el disco. Para ello, estamos utilizando SQLDelight junto con sus controladores de base de datos nativa y Android para la persistencia multiplataforma.
Pensamientos finales
Hemos seguido de cerca la evolución de Kotlin Multiplatform durante los últimos años y creemos que la tecnología ha alcanzado un punto de inflexión. Las herramientas de construcción del sistema y las integraciones para Xcode han mejorado significativamente, de modo que las complejidades involucradas en la integración y el mantenimiento se ven superadas por el beneficio de no tener que escribir y mantener múltiples implementaciones específicas de la plataforma.
Las oportunidades para compartir código adicional entre nuestras aplicaciones de Android e iOS Studio son abundantes. Las posibles aplicaciones futuras de la tecnología se vuelven aún más interesantes considerando que la transpilación de Javascript también es posible.
Estamos encantados de poder evolucionar nuestras aplicaciones de estudio móvil en capas sutiles de interfaz de usuario con lógica empresarial compartida y seguiremos compartiendo nuestro conocimiento con usted en este viaje.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *