Contact
Illustration de la compétence Software & System Architecture - Jose DA COSTA
Technical skillArchitecture & Design

Software & System Architecture

From PHP monoliths to cloud-native B2B SaaS platforms. 11 years of architectural practice, Master in Software Engineering, Lead Symfony and Lead Magento roles, now CTO at ACCENSEO.

Personal Confidence
4.2/5· Expert
FoundationalDevelopingProficientAdvancedExpert
How this competency evolved over time

My definition

Software and system architecture, in my practice, is the art of choosing the right boundaries between subsystems, the right contracts between them, and the right operational shape. It is where SOLID, design patterns, REST API design, and DDD meet the realities of cloud, observability, and team topologies. Good architecture makes a codebase grow linearly instead of exponentially; bad architecture turns every new feature into structural debt.

I practise architecture on 4 scales depending on context. Module: SOLID, hexagonal, domain-driven design. System: REST + async + event-driven, inter-service contracts, error handling. Platform: Turborepo monorepo, shared packages, multi-tenant Terraform environments. Ecosystem: B2B integration, external vendors, versioned contracts. 11 years of continuous practice, from PHP monoliths (Joomla, Zend, Symfony 2-7, Magento 1-2) to modern TypeScript SaaS (Next.js 16, Prisma, Payload CMS), with 28 references in the portfolio and the Master ESIEA Expert in Software Engineering as the theoretical foundation.

The four scales of architecture practice: module (SOLID, hexagonal, DDD), system (REST, async, event-driven), platform (Turborepo monorepo, multi-tenant Terraform) and ecosystem (B2B, versioned contracts) — Jose DA COSTA

In 2026, architecture is entering a new phase: regulated vertical SaaS (clinical, defense, energy, accounting) rests on AI-native architectures where workflows are expressed as actions and constraints rather than screens.

The moat is no longer in the stack but in governed data + embedded workflows + deep integrations - exactly what Rob Saker analyses in AI is Eating Enterprise SaaS.

Architecture has become the most defensible technical bet a CTO can make: feature-driven, observability by default, traceable inter-service contracts, and module/core boundaries that survive upgrades.

My evidence

Achievement

Anecdote 1 : Feature-driven architecture for the ACCENSEO accounting SaaS

When I started the ACCENSEO accounting SaaS in early 2025, I knew I would be the only person coding for 14 months on more than 200K lines of code, with a regulated domain that does not forgive shortcuts (PCG, CGI, 2026-2027 e-invoicing). The classic trap on this kind of codebase is to start with a technical-layer split (controllers / services / repositories) that becomes unmanageable past 30 modules. I needed an architecture that would hold for 2 years without structural debt.

I committed to a feature-driven architecture from the very first commit: 42 autonomous modules under `src/features/` (banking, invoicing, accounting, tax, payroll, AI assistant, reporting, legal, OCR...), each with its own components, hooks, services, models, and types. `src/app/` only holds Next.js routing, never business logic. On the data side, 91 Prisma models organised around domain entities (not around SQL tables), with 63 typed enums, and 6 differentiated roles controlled through Better Auth. Cross-feature contracts go through a single `index.ts` per feature that defines the consumable public surface - everything else stays internal to the module.

382 API routes generated, new features added in days rather than weeks, and the module/feature boundaries survived several major refactors (Next.js 16 upgrade, React 19 migration, Teledec Chrome extension addition) without any need to touch the overall structure.

What I validated on this project is that good architecture makes growth linear instead of exponential: at the 30th feature I was as fast as at the 5th. That is exactly the promise I have to keep on the next CTO scale-up role - and I have now stress-tested it solo, which makes the team transposition far more credible.

Achievement

Anecdote 2 : Architecting the v2 of the European Sourcing extranet

The European Sourcing extranet was the central back-office of Europe's largest online tradeshow for promotional products - 15 interconnected sub-projects, a shared MySQL database of 15 GB across 97 tables, 7 languages, 800 suppliers, and some catalogues like SOL's carrying 15,000 variations for a single product. The v1, written in 2008-2013 on a homegrown PHP MVC framework, could not keep up anymore: every business addition cost more and more.

On March 14th, 2016, we started the v2 on Symfony 3.1, with PostgreSQL instead of MySQL, RabbitMQ for async messaging, and most importantly 2 shared bundles - ESCoreBundle (entities, auth, file system) and ESSourcingBundle (business logic) - to consolidate what the 15 sub-projects were duplicating. Core development was co-led with Thomas C. on v2, inside a tight 4-developer crew where I was the principal author of v1 and the Supplier BO. To industrialise the admin screens, I built a generic EntityList system with configurable columns, bulk actions, per-row actions, and pagination. On the form side, I shipped more than 70 Symfony Form Types covering products, variants, static and dynamic markings with profiles, simple/multiple/group attributes, categories, keywords, labels with synonyms, subscriptions, and import/export workflows.

The v2 ran for more than 5 years in production (2016-2021), powering 37 automated supplier connectors, and the pattern library laid down on this project was reused by every downstream app without ever requiring an architectural rewrite.

This project taught me how to share without coupling: the shared bundles stayed stable while each sub-project evolved at its own pace. That is the pattern I now replay on the ACCENSEO Turborepo monorepo and that I will impose on the next scale-up platform - the cost of good factoring is low, the cost of bad factoring is toxic over 10 years.

Achievement

Anecdote 3 : Multi-store Magento Enterprise architecture at Fleurance Nature

On the Fleurance Nature refactor in 2017 at Smile, I inherited a Magento Enterprise Edition 1.10 platform packed to the brim: 1,040 modified PHP files, 60 accumulated custom modules, 3 storefronts (Fleurance Nature France, International, Mincifine) to serve with a shared EAV pricing matrix across 4 customer groups (anonymous, general, loyalty subscribers, works councils) - meaning 12 active pricing combinations. The specs themselves went through 7 versions in 2 months (from 30 to 50 pages) as we discovered the business rules buried in the legacy code.

I refused the big-bang temptation. I drove a clean backend/frontend split across the 3 storefronts, backported ElasticSearch onto Magento EE 1.10 to replace Solr (autocomplete, faceted navigation, virtual categories), and enforced on every custom module the Observer/Strategy patterns to stay PCI-aware without touching the Magento core. To secure releases, I rolled out a full regression suite across the 3 sites before every deployment, because a single module change could ripple through 12 pricing matrices.

The refactored platform held for more than 5 years in production without any further architectural rewrite, zero major security incident during and after the migration, and the Varnish cache stayed operational throughout the process despite the live-site sensitivity.

What I learnt on this project is that module/core boundaries are what makes a codebase survive vendor changes and version upgrades - not the quality of the code itself. On every CTO advisory audit I now run at ACCENSEO, that is the first thing I look at in the customer codebase.

My self-critique

Level Expert. 11 years of architectural practice, from PHP monolith to modern TypeScript SaaS through ESB integration platforms. Master ESIEA as theoretical foundation, 28 portfolio references as practice volume.

Confirmed coverage across the 4 scales:

  • module: SOLID, DDD, hexagonal
  • system: REST, async, event-driven, partial CQRS
  • platform: Turborepo monorepo, shared packages, multi-env Terraform
  • ecosystem: B2B integration

What still needs strengthening: pure event sourcing and large-scale service mesh.

Core to my CTO credibility. Without solid architecture, the product does not hold growth, the team does not scale, and debt becomes existential within 18 months. It is also what distinguishes the operational CTO from the advisory one: knowing how to translate a business intent into technical boundaries, inter-team contracts, and a concrete migration plan.

The CTO as a credibility bridge between business intent and technical architecture: module boundaries, inter-team contracts, migration plan to avoid the 18-month existential debt — Jose DA COSTA

Key milestones along the journey: CTO · Founder · technical director (1999) → Technical Project Manager · Co-founder · Early-Stage Startup (2016) → Project Manager / Product Owner · Flows and Products: PIM & DAM & ESB (2021) → CTO · Founder · technical director (2024). Now at 5/5 (Expert). The continuity of these contexts signals a robust acquisition, battle-tested by repetition and diversity.

My arbitration principles

To myself: write an ADR for every irreversible decision and keep a living system diagram.

To others: prefer simplicity until proven otherwise, refuse the pattern by authority ("we do it like Netflix") and require the business criterion that justifies it. Always simulate the operational cost of a split before validating it - a microservice is also a pipeline, a dashboard, and an on-call rotation.

My evolution in this skill

Architecture is what turns a CTO intuition into a defensible 3-year platform. In the 24-month plan, it makes possible the heavy build vs buy arbitrations, the major migrations without product interruption, and the team discipline (code review, ADRs, inter-service contracts). Without it, the organization may grow but debt eventually kills the cadence.

The goal is the event-driven and service-mesh extension: design and implement a monolith-to-autonomous-modules transition without product interruption, and defend that trajectory in front of a board in business terms (risk, cycle, OPEX). Maintaining Expert mastery without decay is the baseline - the effort goes to the frontiers I have not yet operated in production.

Migration from a monolith to autonomous modules through event-driven and service mesh patterns, defended in business language (risk, cycle, OPEX) — Jose DA COSTA

Continuous reading: Martin Kleppmann Designing Data-Intensive Applications (annual rotation), Neal Ford / Mark Richards Software Architecture: The Hard Parts, Sam Newman Building Microservices. Daily practice on ACCENSEO codebases. Master in Software Engineering active until 2026.

Designing Data-Intensive Applications book cover by Martin Kleppmann (O'Reilly), reference on production data systemsSoftware Architecture: The Hard Parts book cover by Neal Ford and Mark Richards (O'Reilly), trade-offs on distributed architecturesBuilding Microservices book cover by Sam Newman (O'Reilly), reference guide on microservices architecturesArchitecture logicielle book cover by Jacques Printz (Dunod, 3rd edition), French-language reference on application design

QCon Paris 2026, possible advanced Domain-Driven Design program (Vlad Khononov or Eric Evans masterclass) in 2027. AWS Solutions Architect Professional certification considered depending on the target CTO context.

My architect routines

  • systematic production of an ADR pack + C4 diagram on every new project
  • weekly intake of architecture blogs (ThoughtWorks Tech Radar, AWS Architecture Blog, martinfowler.com)
  • quarterly study of a reference open-source system. PostgreSQL internals, Linkerd, Temporal

Circular navigation

Related achievements (12)