Home/Services/Software architecture
Technical design to scale

Software architecture

We define the structural decisions that prevent early rewrites. Explicit trade-offs, not dogma. The architecture document we deliver must stand up to any technical question.

ADRC4 Level 1 & 2Explicit trade-offsMonolith or microservices
Use cases

When do you need architecture?

You're starting a product and don't want to make technical decisions that will be costly in 12 months.

Your current system can't handle projected growth and you need a plan before investing in infrastructure.

You have a monolith you'd like to split but don't know if it makes sense or how to do it without breaking everything.

You're integrating multiple systems and the contracts between services aren't clear.

Infrastructure costs are growing faster than the product and you don't know why.

Your team is growing and technical decisions aren't documented β€” each dev makes different choices.

Scope

What we define

High-level design

  • System partitioning: modular monolith vs microservices vs serverless
  • Domain boundaries and bounded contexts (DDD)
  • Communication strategy: sync vs async, REST vs gRPC vs events
  • C4 diagram level 1 (context) and level 2 (containers)

Data strategy

  • Data model and database design
  • Consistency strategy: distributed transactions, sagas, outbox
  • Cache: what, where and when
  • Migrations and schema evolution without downtime

Observability and operations

  • Logging, metrics and tracing strategy
  • Alerts and SLOs defined from the design
  • Environment configuration and secrets management
  • Disaster recovery and backup plan

Platform decisions

  • Technology stack with justification and trade-offs
  • Infrastructure: cloud provider, containers, serverless
  • CI/CD and deploy strategy (blue-green, canary, feature flags)
  • Security: authentication, authorization, exposure limits
Deliverable

The architecture document (ADR)

A technical document that can stand up to any question. Not a slide deck β€” it's a reference the team will consult for months.

  • 01

    Context and drivers β€” what problem it solves and what constraints exist (technical, business, team).

  • 02

    Recorded decisions β€” each important decision with its context, evaluated alternatives and justification.

  • 03

    C4 diagrams level 1 and 2 β€” system context and containers with their interactions.

  • 04

    Explicit trade-offs β€” what we gain and what we lose with each decision. No dogma.

  • 05

    Phased implementation plan β€” how to get from where you are to where you need to be, in executable steps.

  • 06

    Identified risks β€” what can go wrong and how to mitigate it.

Technical judgment

Monolith or microservices: how we decide

The answer is not universal. It depends on team size, domain maturity, scale requirements and operational budget.

FactorModular monolithMicroservices
Team sizeIdeal for teams < 10 devsNeeded with teams > 15 devs with per-service ownership
Domain maturityDomain in exploration or frequent changeStable domain with clear boundaries
Scale requirementsUniform scale β€” the whole system scales togetherDifferentiated scale per service
Operational costLow β€” one deploy, one process, one logHigh β€” orchestration, service mesh, distributed observability
Time to marketFaster in early stagesSlower at start, more flexible later
FAQ

Frequently asked questions

How long does an architecture engagement take?

Between 1 and 3 weeks depending on complexity. First week is discovery and interviews. Second is design and documentation. Third is review with the client's team.

Can you work with our existing technical team?

Yes. We run at least one architecture session with the client's technical team. Decisions must have buy-in from the team that will implement them.

Is the ADR enough for our team to implement?

Yes. The ADR includes enough detail for a competent technical team to implement. If you need implementation support, we can do that as a retainer.

Do you do architecture for existing systems?

Yes. Often the work is documenting and improving the architecture of an existing system, not designing from scratch. We start with an audit of the current architecture.

What if in 6 months the architecture you defined no longer applies?

The ADR documents the context in which decisions were made. If context changes, decisions are revisited. This is normal and expected β€” good architecture is evolvable, not permanent.

Next step

Making important technical decisions without a document to back them up?

A well-crafted ADR is the difference between a system that scales with the business and one that holds it back. First conversation is commitment-free.

Start a conversation
Software Architecture Consulting | Madariaga SAS β€” Buenos Aires | Madariaga SAS