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
CLIENTS
web & 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
Machinery
systems & 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
BUSINESS
office & 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
CHANGO
warehouses
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
TRUCKS
routes & 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

Learning from the Ulabox stack

  • 1.
  • 2.
  • 3.
    `pwd` Introduction Working at Ulabox “El supermercadoha muerto, bienvenido a #elAntisuper”
  • 5.
  • 6.
    Clients: web &apps CLIENTS web & 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
  • 7.
    Machinery: systems &devops Machinery systems & 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
  • 8.
    Business: office &integrations BUSINESS office & 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
  • 9.
    Chango: warehouses CHANGO warehouses Stack • CQRSand 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
  • 10.
    Trucks: routes &delivery TRUCKS routes & 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
  • 11.
    Focus on slowcooking a unique and high maintainable code
  • 12.