Learning from the Ulabox stack

12
Learning from the Ulabox stack

Transcript of Learning from the Ulabox stack

Learning from the Ulabox stack

Introduction

RUBÉN SOSPEDRA

`whoami`

Lead frontend engineer @sospedra_r

`pwd`

Introduction

Working at

Ulabox“El supermercado ha muerto, bienvenido a #elAntisuper”

Ulabox stack

Clients: web & apps

CLIENTSweb & apps

Stack• PHP 7 with Symfony 2 • Twig templates with jQuery • PWA

• Android and Objective-C• WIP: Pods-based React Native

Issues• Wait too much for responsibility

segregation • High availability

Tips• Fix perf issues when you face them • The bottleneck is not the keyboard • Have a single source of truth

Machinery: systems & devops

Machinerysystems & devops

Stack• Hetzner hosted baremetals • Solr & Redis for web • MariaDB for web • PostgreSQL for microservices • Jenkins for pipelines • RabbitMQ and Rundeck for intercom • Docker for dev environment and staging

Issues• Systems management and responsibility

Tips• Follow a single and unique devops

protocol • Invest time into coding instead of

machinery administration

Business: office & integrations

BUSINESSoffice & integrations

Stack• PHP 7 with Symfony 2 • Swagger for the API • Multiple 3rd parties: Datadog, Kibana, et

al.

• Business integrations: Sengrid, Selligent, AECOC, et al.

Issues• Other offices will became IT dependants • Never trust 3rd party APIs

Tips• When working with 3rd party software

use defensive programming • Learn to handle internal expectations

Chango: warehouses

CHANGOwarehouses

Stack• CQRS and ES architecture • PHP 7 with Symfony 2

• Angular webapp

Issues• Not having clear business logics before

coding • Messages versioning

Tips• Never compromise for a date • Be brave, embrace the changes • Have the developers and stakeholders

close to each other

Trucks: routes & delivery

TRUCKSroutes & delivery

Stack• DDD and Hexagonal architecture • Android app with Angular and Ionic

• WIP: Routes are gonna be in-house

Issues• Not knowing the device our technology

will run on • Unclear usability pathways

Tips• Worship the user persona • Solve one problem at a time, then iterate

Focus on slow cooking a unique and high maintainable code

/thanks