SlideShare uma empresa Scribd logo
1 de 54
Los reinos de Finizens
Nuestro stark tecnológico
Rodrigo Gómez
finizens.com
Software Engineer en Finizens desde el “git init”
@rodrigm
@rodri_rod
Javier Anaya
finizens.com
Backend, frontend and coffee maker en Finizens
@janayama
@ja_anaya
Agenda
finizens.com
1. Reinos de Finizens
2. Infraestructura
3. API
4. WebApp
5. Apps móviles
finizens.com
Reinos de
Finizens
Infraestructura
API WebApp Web
App
Nativas
...
Infraestructura
¿Qué es importante
para nosotros?
INFRAESTRUCTURA
● Escalable
● Entorno reproducible y actualizable
● CI/CD
● Monitoring
APP NATIVAS
¿Qué usamos para conseguirlo?
@rodri_rod
Escalable
● Autoscaling - Escalado Horizontal
● RDS => Replicable
● S3
@rodri_rod
@rodri_rod
AWS
@rodri_rod
Web
@rodri_rod
WebApp
@rodri_rod
API
Y todo esto multiplicado por 3
Staging Demo Prod
@rodri_rod
Y a su vez por cada B2B
@rodri_rod
?
?
Reproducible y actualizable
● Docker
● Contenedores propios, iguales en desarrollo y producción
● Vagrant (Local)
● Replicamos servicios que nos ofrece Amazon
@rodri_rod
Continuous Integration / Continuous Delivery
● Desde el 1º día
● Usamos Codeship conectado con Github en cada Repo
@rodri_rod
Monitoring
● CloudWatch
● Estado de las máquinas
● Estado de los servicios (RDS, etc.)
● Guardamos todos los logs
@rodri_rod
Monitoring
● NewRelic
● Estado de los contenedores
En nuestro caso, php-fpm, php-cli, nginx
@rodri_rod
Monitoring
● RollBar
● Nos permite guardar todos los
errores y sus ocurrencias.
● Conectado con GitHub
@rodri_rod
Cosas a
mejorar
INFRAESTRUCTURA
● Son muchos entornos y deberíamos de
automatizar
● Bajar el tiempo de deploy
API
¿Qué es importante
para nosotros?
API
● Sea flexible para negocio y entendible para desarrollo
● Sea extensible y nos permita crecer
● Sea mantenible y nos permita contratar
● Sea rápida
APP NATIVAS
¿Qué usamos para conseguirlo?
@rodri_rod
Flexible para negocio
● Nuestro core es nuestro negocio (Focus on business)
● Mantenemos la simplicidad (Esto es duro)
● DDD - Domain Driven Development - Parte estratégica
● Lenguaje ubicuo => Negocio y desarrollo hablamos el
mismo idioma
@rodri_rod
Entendible para desarrollo
● SOLID
● También usamos la parte táctica de DDD
○ Bounded Contexts, Entities, …
○ Arquitectura hexagonal (Ports & Adapters)
○ CQS => Command Query Separation
@rodri_rod
Extensible y mantenible
● Mantenemos el código sano y todo lo que ello conlleva
● Lo tenemos muy actualizado, al día (PHP 7.1, sf 3.3)
● Nos apoyamos en el framework pero no nos acoplamos
@rodri_rod
Extensible y mantenible
● Tenemos una buena bateria de tests que
nos permite refactorizar
● Test de integración para partes críticas
(sqlite)
● Test unitarios (phpunit)
@rodri_rod
Extensible y mantenible
● Tenemos un buen coverage de Test
(principalmente en Domain, nuestro core)
● Nos permite refactorizar, sin miedo
@rodri_rod
Rápida
● No renderizamos
● Workers => Intentamos procesar todo en asíncrono
○ Integraciones con 3s
○ Emails, SMS, generación de documentos
@rodri_rod
Cosas a
mejorar
API
● Alguna abstracción inadecuada (bounded context)
en el pasado
● GraphQL
Webapp
@ja_anaya
¿Qué es una webapp?
Responsive
El contenido se adapta al
dispositivo. La experiencia
debe ser lo más parecida a
una app nativa.
Se comunica por API
No se carga ni compila
desde el servidor. Es una
pieza totalmente
separada. Consume una
api.
Optimizada
Está totalmente optimizada
para dispositivos móviles
reduciendo al máximo
tamaños de JS y CSS para
que funcione sobre redes
3G/4G.
¿Qué es importante
para nosotros?
WEBAPP ● Que no dependa del backend
● Cargue de manera casi instantánea
● Apariencia móvil 100%
¿Qué usamos para conseguirlo?
@ja_anaya
El framework
@ja_anaya
Donde...
no es el problema
@ja_anaya
Repito
El framework
es el problemaNO
@ja_anaya
Error 1
No mantener el código
Invertir tiempo en mantener el código actualizado
¿Cómo?
@ja_anaya
¿Qué estamos haciendo nosotros?
● De GULP a WEBPACK
● DE ES5 a ES6
● De directivas a Componentes
● Uso de hot-reloading
@ja_anaya
Error 2
Programar para el framework
No acoplarte al framework cuando puedes hacerlo tu mismo
¿Cómo?
@ja_anaya
¿Qué estamos haciendo nosotros?
● No poner tu código en los controladores
● Usar servicios
● Tu lógica de negocio
Beneficios
@ja_anaya
● Encapsulación
● Código testable
● Código mantenible
● Flexibilidad
Error 3
Descuidar los estilos
@ja_anaya
Dar una función clara a los elementos
¿Cómo?
@ja_anaya
¿Qué estamos haciendo nosotros?
● Dando significado y propósito semántico
● DRY: Un bloque es reusable y autocontenido
● Desacoplar el CSS del HTML
● SRP: Los elementos solo se preocupan de ellos mismos
● Open/Close: Modificadores solo extienden
BLOCK ELEMENT MODIFIER: BEM
Test
● Test unitarios: Jasmine y Karma
● Test de integración:
En partes fundamentales del negocio
En cada deploy a prod
@ja_anaya
Cosas a
mejorar
WEBAPP
● Más progressive Webapp: Offline y notificaciones
● Más componentes y documentar con Storybook
App nativas
¿Qué es importante
para nosotros?
APP NATIVAS
● Prueba de concepto funcional
● Equilibrio entre negocio y desarrollo ideal
¿Qué usamos para conseguirlo?
@ja_anaya
¿Qué hemos hecho?
@ja_anaya
● Alinear el desarrollo de IOS y Android con React-
Native
● Cargar nuestra Webapp dentro de una webview
nativa
● Comunicar la webview con la app nativa
Cosas a
mejorar
APPS NATIVAS
● Más y mejores test. Corrimos ahora toca mejorar.
● Mejorar integración continua para deploys de
apps en Beta.
● Añadir funcionalidades nativas: Notificaciones,
login con huella dactilar
¡SORPRESA! ¡Estamos contratando!
@ja_anaya
● Backend engineer
● Frontend engineer
Enlace: https://angel.co/finizens/jobs
Gracias :)
@rodri_rod
@ja_anaya
¿Preguntas?

Mais conteúdo relacionado

Mais procurados

T1 trabajo1navarrozuaraelisaramosruizpedropresentacion
T1 trabajo1navarrozuaraelisaramosruizpedropresentacionT1 trabajo1navarrozuaraelisaramosruizpedropresentacion
T1 trabajo1navarrozuaraelisaramosruizpedropresentacion
Pedro Ramos
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en Android
Irontec
 
¡GXportal 5.1 liberado! Conozca lo nuevo de la versión
¡GXportal 5.1 liberado! Conozca lo nuevo de la versión¡GXportal 5.1 liberado! Conozca lo nuevo de la versión
¡GXportal 5.1 liberado! Conozca lo nuevo de la versión
GeneXus
 

Mais procurados (20)

Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...
 
Android apps: un dia sin dex2jar y sin apktool
Android apps: un dia sin dex2jar y sin apktoolAndroid apps: un dia sin dex2jar y sin apktool
Android apps: un dia sin dex2jar y sin apktool
 
Cream code & front performance
Cream code & front performanceCream code & front performance
Cream code & front performance
 
Definiendo Estrategia: Mapas de Wardley
Definiendo Estrategia: Mapas de WardleyDefiniendo Estrategia: Mapas de Wardley
Definiendo Estrategia: Mapas de Wardley
 
Desarrollando KDevelop Ruby
Desarrollando KDevelop RubyDesarrollando KDevelop Ruby
Desarrollando KDevelop Ruby
 
Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!
 
T1 trabajo1navarrozuaraelisaramosruizpedropresentacion
T1 trabajo1navarrozuaraelisaramosruizpedropresentacionT1 trabajo1navarrozuaraelisaramosruizpedropresentacion
T1 trabajo1navarrozuaraelisaramosruizpedropresentacion
 
Timerepublik
TimerepublikTimerepublik
Timerepublik
 
Humanizacion de java script con typescript para d365
Humanizacion de java script con typescript para d365Humanizacion de java script con typescript para d365
Humanizacion de java script con typescript para d365
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en Android
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomla
 
¡GXportal 5.1 liberado! Conozca lo nuevo de la versión
¡GXportal 5.1 liberado! Conozca lo nuevo de la versión¡GXportal 5.1 liberado! Conozca lo nuevo de la versión
¡GXportal 5.1 liberado! Conozca lo nuevo de la versión
 
Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...
 
Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020
 
Introducción a GitFlow
Introducción a GitFlowIntroducción a GitFlow
Introducción a GitFlow
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Cobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBairesCobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBaires
 
.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net
 
JavaScript_cómo funciona este lenguaje de programación
JavaScript_cómo funciona este lenguaje de programaciónJavaScript_cómo funciona este lenguaje de programación
JavaScript_cómo funciona este lenguaje de programación
 
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
Enrique Sánchez. Cómo ser un agile tester (y no morir intentándolo)
 

Semelhante a Los reinos de finizens - Nuestro stark tecnológico

Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_source
Mario IC
 

Semelhante a Los reinos de finizens - Nuestro stark tecnológico (20)

202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
De cero a multinacional con Grails y EC2
De cero a multinacional con Grails y EC2De cero a multinacional con Grails y EC2
De cero a multinacional con Grails y EC2
 
Working with a design system
Working with a design systemWorking with a design system
Working with a design system
 
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_source
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
 
Charla C++
Charla C++Charla C++
Charla C++
 
Entrega contínua en la práctica
Entrega contínua en la prácticaEntrega contínua en la práctica
Entrega contínua en la práctica
 
Effective Network Layer: API lovers and Apps
Effective Network Layer: API lovers and AppsEffective Network Layer: API lovers and Apps
Effective Network Layer: API lovers and Apps
 
Presentación 1 AESS.pptx
Presentación 1 AESS.pptxPresentación 1 AESS.pptx
Presentación 1 AESS.pptx
 
Scrum para uno
Scrum para unoScrum para uno
Scrum para uno
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
[ES] Introducción a Java EE 7 & HTML 5
[ES] Introducción a Java EE 7 & HTML 5[ES] Introducción a Java EE 7 & HTML 5
[ES] Introducción a Java EE 7 & HTML 5
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de OdooJornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
 

Último

analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
Ricardo705519
 
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptxsigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sutti0808
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
nicolascastaneda8
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
BRAYANJOSEPTSANJINEZ
 

Último (20)

analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptxsigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitales
 
Practica PLC MIcrologix 1400 con pantalla HMI y servomotor
Practica PLC MIcrologix 1400 con pantalla HMI y servomotorPractica PLC MIcrologix 1400 con pantalla HMI y servomotor
Practica PLC MIcrologix 1400 con pantalla HMI y servomotor
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 

Los reinos de finizens - Nuestro stark tecnológico