SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
INTELYGENZ !2
DANIEL COELLO
TEAM LEAD IOS
ÁLEX RUPÉREZ
IOS ARCHITECT
Iterando
arquitecturas,
creando
herramientas
CASO DE ÉXITOINTELYGENZ
www.intelygenz.com
INTELYGENZ !4
Antes
de
ARCHIT
www.intelygenz.com
Photo by CEphoto, Uwe Aranas
!5
• MVC
• Sin convenciones de estilo
• Sin inyección de dependencias
• Sin ATDD
ANTES DE
ARCHIT
INTELYGENZ
www.intelygenz.com
CAOS
Scream S2 MTV by TomyyT is licensed by CC BY-SA 4.0
INTELYGENZ !7
ARCHIT
1.0
www.intelygenz.com
!8
• VIP (ViewController. Interactor. Presenter)

• Inyección de dependencias con Swinject

• Gestión de tareas con Kommander

• Gestión de llamadas a red con Net

• ATDD con HonestCode
ARCHIT 1.0
INTELYGENZ
www.intelygenz.com
!9
Modelo
VIP
VIEWCONTROLLER
INTERACTOR
PRESENTER
INTELYGENZ
P
Modelo de Vista
Modelo de Aplicación
Coordina la comunicación entre las otras capas.
I
V
www.intelygenz.com
!10
• Framework para inyección de dependencias en Swift.
• Tipado a través de protocolo.
• Uso de SwinjectStoryboard para la instanciación segura de
Storyboards.

SWINJECT
INTELYGENZ
www.intelygenz.com
!11
• Librería para la gestión de tareas
• Maneja la ejecución de tareas en diferentes hilos.

• Librería interna desarrollada en intelygenz



KOMMANDER
INTELYGENZ
www.intelygenz.com
!12
• Crear uno o varios Kommands
• Ejecutar uno o varios Kommands
• Cancelar uno o varios Kommands
• Reintentar uno o varios Kommands
• Bloque de éxito de un Kommand
• Bloque de error de un Kommand
• Dispatcher de hilo principal
• Dispatcher de hilo actual
KOMMANDER
INTELYGENZ
www.intelygenz.com
!13
• Dispatcher con OperationQueue personalizada
• Ejecutar una o varias Operations
• Ejecución concurrente o secuencial
• Ejecutar DispatchWorkItem
• Estado de un Kommand
• Compatible con iOS, macOS, watchOS y tvOS
• Versiones compatibles con Swift 4, Swift 3, Swift 2 y Objective-C

KOMMANDER
INTELYGENZ
www.intelygenz.com
!14
• Librería de red HTTP versátil y multipropósito.
• Librería interna creada en intelygenz.

• Nació como una capa de abstracción de AFNetworking adaptada a
nuestras necesidades.

NET
INTELYGENZ
www.intelygenz.com
!15
Definimos varios modelos
• Request
• Response
• Error
• Protocolo Net



NET
INTELYGENZ
www.intelygenz.com
!16
• Antes no teníamos una política de tests clara.
• Apostamos por el ATDD.
• Usamos HonestCode para implicar al cliente en todo el proceso.
HONESTCODE
INTELYGENZ
www.intelygenz.com
I N T E LY G E N Z
HONEST CODE
www.HonestCode.io
ENTORNO REAL
PROBLEMAS
!19
• Swinject como inyector de dependencias
• Los Presenters en el modelo VIP 

PROBLEMAS
DE
ARCHIT 1.0
INTELYGENZ
www.intelygenz.com
TODO
PROBLEMA
SIEMPRE TIENE
UNA SOLUCIÓN
INTELYGENZ !21
ARCHIT
2.0
www.intelygenz.com
!22
• Eliminamos Swinject
• Nuevo modelo de aplicación VCI (View. Controller. Interactor)
• Nueva versión de Kommander
• Implementamos Net desde cero

ARCHIT 2.0
INTELYGENZ
www.intelygenz.com
!23
Modelo
VCI
VIEW
CONTROLLER
INTERACTOR
INTELYGENZ
I
Renderizado
Orquestador
Modelo de Aplicación
C
V
www.intelygenz.com
!24
• Codificación de parámetros en URL, JSON o Property List
• Subida de ficheros, datos binarios, stream y Multipart Form Data
• Descarga de ficheros usando Request o datos parciales de
una descarga anterior
• Autentificación con URLCredential

• Autorización Basic, Bearer y personalizada
• Controles de caché por defecto y personalizados

• Métricas sobre peticiones
NUEVO NET
INTELYGENZ
www.intelygenz.com
!25
• Tipos de contenido por defecto y personalizados
• Bloques de progreso de descarga o subida con Progress en
tiempo real
• Salida por consola de comando cURL para depurar
• Interceptores de petición y de respuesta
• Ejecución asíncrona y síncrona de las peticiones
• Inferencia automática del objeto de respuesta
• Gestor de conexión disponible

NUEVO NET
INTELYGENZ
www.intelygenz.com
!26
• Certificado TLS y fijado de clave pública
• Política de reintentos
• Compatible con protocolos Codable, Decodable y Encodable para
JSON y Property List
• Compatible con iOS, macOS, watchOS y tvOS
• Implementación alternativa usando Alamofire
• Compatible con Moya, Kommander
• Implementación con Stubs

NUEVO NET
INTELYGENZ
www.intelygenz.com
INTELYGENZ !27
ARCHIT
3.0
www.intelygenz.com
Firmenzentrale Kaffee Partner - Corporate architecture by 3deluxeDesign is licensed by CC BY-SA 3.0
!28
• Introducción de SwiftLint
• Nuevas versiones Open Source de Kommander y Net
ARCHIT 3.0
INTELYGENZ
www.intelygenz.com
INTELYGENZ !29
¿Y ahora
qué?
www.intelygenz.com
!30
Funcionalidades en desarrollo
• Programación reactiva basada en estados con RxSwift
• Eliminar el Xcodeproj del repositorio con XcodeGen
Intercambio de conocimientos
• Equipo de Android se ha incorporado para dar un nuevo punto de
vista y unificar nuestras arquitecturas.
¿Y AHORA
QUÉ?
INTELYGENZ
www.intelygenz.com
INTELYGENZ !31
En
Resumen
www.intelygenz.com
!32
En
Resumen
CALIDAD
ESTANDARIZACIÓN
DELIVERY
INTELYGENZ
Código testado y robusto
Procesos y herramientas comunes
Mayor agilidad en el desarrollo y las entregas
www.intelygenz.com
INTELYGENZ !33
Show
me the
Code!
www.intelygenz.com
INTELYGENZ
github.com/intelygenz/Archit-iOS/
ARCHIT Net
github.com/intelygenz/NetClient-iOS/
Kommander
github.com/intelygenz/Kommander-iOS
Gracias
Preguntas
info@intelygenz.com
t: +34 915 359 612
Plaza Santa María Soledad TorresAcosta 2, 5ª planta puerta C.
28004. Madrid, Spain.

Contenu connexe

Similaire à Iterando arquitecturas, creando herramientas | T3chFest

Docker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdfDocker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdfLeonardo Micheloni
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsErnesto Anaya
 
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...Irontec
 
Commit conf arquitectura-microservicios_v1.0
Commit conf  arquitectura-microservicios_v1.0Commit conf  arquitectura-microservicios_v1.0
Commit conf arquitectura-microservicios_v1.0Alfredo García Lavilla
 
Alta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginxAlta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginxPlain Concepts
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Restorando
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Eduardo Castro
 
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsSofia2 Smart Platform
 
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012Rodolfo Finochietti
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
 
Cloudino workshopcpmx7
Cloudino workshopcpmx7Cloudino workshopcpmx7
Cloudino workshopcpmx7superserch
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael Gallego
 

Similaire à Iterando arquitecturas, creando herramientas | T3chFest (20)

Autobuses de Madrid en tiempo real con Azure Relay
Autobuses de Madrid en tiempo real con Azure RelayAutobuses de Madrid en tiempo real con Azure Relay
Autobuses de Madrid en tiempo real con Azure Relay
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdfDocker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdf
 
Iot (3)
Iot (3)Iot (3)
Iot (3)
 
WebDom
WebDomWebDom
WebDom
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
 
Commit conf arquitectura-microservicios_v1.0
Commit conf  arquitectura-microservicios_v1.0Commit conf  arquitectura-microservicios_v1.0
Commit conf arquitectura-microservicios_v1.0
 
Alta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginxAlta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginx
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
 
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
Desarrollo de aplicaciones Windows 8 Modern UI con Visual Studio 2012
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
 
Cloudino workshopcpmx7
Cloudino workshopcpmx7Cloudino workshopcpmx7
Cloudino workshopcpmx7
 
Mantenimiento Servidores de-web
Mantenimiento Servidores de-webMantenimiento Servidores de-web
Mantenimiento Servidores de-web
 
Ionic 2
Ionic 2 Ionic 2
Ionic 2
 
Principios de cloud native
Principios de cloud nativePrincipios de cloud native
Principios de cloud native
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 

Plus de Alex Rupérez

Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?
Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?
Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?Alex Rupérez
 
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)Alex Rupérez
 
Gigigo Workshop - iOS Extensions
Gigigo Workshop - iOS ExtensionsGigigo Workshop - iOS Extensions
Gigigo Workshop - iOS ExtensionsAlex Rupérez
 
Gigigo Rails Workshop
Gigigo Rails WorkshopGigigo Rails Workshop
Gigigo Rails WorkshopAlex Rupérez
 
Gigigo Ruby Workshop
Gigigo Ruby WorkshopGigigo Ruby Workshop
Gigigo Ruby WorkshopAlex Rupérez
 
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Gigigo Workshop - Create an iOS Framework, document it and not die tryingGigigo Workshop - Create an iOS Framework, document it and not die trying
Gigigo Workshop - Create an iOS Framework, document it and not die tryingAlex Rupérez
 
NSCoder Keynote - Multipeer Connectivity Framework
NSCoder Keynote - Multipeer Connectivity FrameworkNSCoder Keynote - Multipeer Connectivity Framework
NSCoder Keynote - Multipeer Connectivity FrameworkAlex Rupérez
 
Magister of Entrepreneurship - Social Development
Magister of Entrepreneurship - Social DevelopmentMagister of Entrepreneurship - Social Development
Magister of Entrepreneurship - Social DevelopmentAlex Rupérez
 
Gigigo Keynote - Geofences & iBeacons
Gigigo Keynote - Geofences & iBeaconsGigigo Keynote - Geofences & iBeacons
Gigigo Keynote - Geofences & iBeaconsAlex Rupérez
 

Plus de Alex Rupérez (10)

Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?
Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?
Desarrollando mogollón de apps a la vez... ¿en qué lío me he metido?
 
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
MADBike – Destapando la seguridad de BiciMAD (T3chFest 2017)
 
Gigigo Workshop - iOS Extensions
Gigigo Workshop - iOS ExtensionsGigigo Workshop - iOS Extensions
Gigigo Workshop - iOS Extensions
 
Gigigo Rails Workshop
Gigigo Rails WorkshopGigigo Rails Workshop
Gigigo Rails Workshop
 
Gigigo Ruby Workshop
Gigigo Ruby WorkshopGigigo Ruby Workshop
Gigigo Ruby Workshop
 
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Gigigo Workshop - Create an iOS Framework, document it and not die tryingGigigo Workshop - Create an iOS Framework, document it and not die trying
Gigigo Workshop - Create an iOS Framework, document it and not die trying
 
iOS Sync Libraries
iOS Sync LibrariesiOS Sync Libraries
iOS Sync Libraries
 
NSCoder Keynote - Multipeer Connectivity Framework
NSCoder Keynote - Multipeer Connectivity FrameworkNSCoder Keynote - Multipeer Connectivity Framework
NSCoder Keynote - Multipeer Connectivity Framework
 
Magister of Entrepreneurship - Social Development
Magister of Entrepreneurship - Social DevelopmentMagister of Entrepreneurship - Social Development
Magister of Entrepreneurship - Social Development
 
Gigigo Keynote - Geofences & iBeacons
Gigigo Keynote - Geofences & iBeaconsGigigo Keynote - Geofences & iBeacons
Gigigo Keynote - Geofences & iBeacons
 

Dernier

MANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocxMANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocxjulio315057
 
Presentaciones Matriz del Marco Logico.pdf
Presentaciones Matriz del Marco  Logico.pdfPresentaciones Matriz del Marco  Logico.pdf
Presentaciones Matriz del Marco Logico.pdfLeningNajera
 
Aprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptx
Aprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptxAprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptx
Aprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptxgppm13
 
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad ModernaS.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad ModernaRodrigoReynaldo1
 
Presentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptxPresentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptxProduvisaCursos
 
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdfPRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdfRubenBrayanVQ
 

Dernier (6)

MANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocxMANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocx
 
Presentaciones Matriz del Marco Logico.pdf
Presentaciones Matriz del Marco  Logico.pdfPresentaciones Matriz del Marco  Logico.pdf
Presentaciones Matriz del Marco Logico.pdf
 
Aprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptx
Aprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptxAprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptx
Aprobación del Registro de Ejecución del POI Mensual en Aplic. CEPLAN v.01.pptx
 
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad ModernaS.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
S.3 El debate Impacto de la Inteligencia Artificial en la Sociedad Moderna
 
Presentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptxPresentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptx
 
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdfPRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
PRESENTACION GESTION DE PROYECTOS GRUPO 4 INVIERTE PE.pdf
 

Iterando arquitecturas, creando herramientas | T3chFest