Sant Pere de Ribes (Barcelona)
AKO Group · Head of Software
AKO designs and manufactures electronic controls for commercial refrigeration and the cold chain. When I joined, it was shifting from selling hardware to selling connected services through its IoT platform.
My role
I owned the end-to-end architecture and the technical decisions for all the company’s software; the team implemented them. Hands-on where it helped: data-processing scripts and working with developers at critical moments.
Scope
All software development in the company was under my responsibility.
- The IoT cloud platform: device communication, backend, data, client APIs and web frontend.
- The edge gateway software.
- Mobile apps: a field app to manage devices through a Bluetooth dongle, with a backend that let an installer connect remotely through the end user’s app to configure equipment on site; and an app to configure alarm systems through SMS commands.
- Legacy edge products, such as the standalone “Web Server” device, whose courtesy email relay for alarm notifications kept causing trouble: bursts of alarms from many customers went out through our account and hit sending limits. After several iterations, the final design held up well: sending moved behind an API with per-IP rate limiting, which smoothed out the peaks, and email ran from a separate AWS account, so a sending block could never affect the email of the main systems.
The platform
- Microservices on Node.js and Express, with Angular frontends built on a shared design system of reusable components.
- Device communication over MQTT with an in-house application protocol, and REST APIs.
- Traffic layer: introduced AWS WAF and an Elastic Load Balancer in front of nginx, which acts as reverse proxy to internal services, to secure the public endpoints by filtering malicious requests and balancing the load; and a CDN to cache selected content.
- Integration: a public API with webhooks so clients could extract data and receive alerts in their own systems; GraphQL piloted.
- Messaging: RabbitMQ queues between services, for example for pending reports and incoming metrics.
- Serverless where it fit: introduced AWS Lambda and API Gateway for coordination tasks and an in-house URL shortener that started as a proof of concept and reached production.
- Observability: introduced end-to-end tracing and metrics with OpenTelemetry and a self-hosted Grafana.
- Data: MongoDB for operational data and TimescaleDB for high-volume time series.
- Security by default: every API authenticated and validated against the user’s permissions, and database queries scoped to what the user is allowed to see.
Engineering practices
- Created the SRE function and built CI/CD from scratch with GitHub Actions and GitLab CI, with QA gates, Git workflows and Kanban.
- Introduced Architecture Decision Records (ADRs) and a technical roadmap.
- Introduced JMeter load testing to validate a service migration.
Stakeholders
- Product Managers for each electronic product family, each with their own requirements, later joined by business-oriented Product Managers focused on services. Balancing their competing priorities in a single platform roadmap was a core part of the role.
- Electronics and product design: mainly the firmware team, and the product designers who turned requirements into the specifications that reached electronics. Many decisions were made jointly and affected both sides.
- Manufacturing: I led an initial mapping of the business domain with strategic Domain-Driven Design. It was never completed, but along the way it led manufacturing to change industrialization processes and improve product traceability.
- An external software factory, which extended the internal team.
Responsibilities and results
- Platform architecture and technical roadmap; technology and vendor decisions.
- Scaled the platform from 15k to 32k+ connected devices.
- Technical lead for the software side of the €7M PERTE project: coordinating technical decisions across teams and bridging business and engineering.
- Grew the team from 2 to 5 internal engineers, and up to 14 people across development, systems and QA, including an external software factory.