Skip to content

Designing a

resilient system

Putting technology to our service, not the other way around.

Architecture – Anatomy of a software

A product is a collection of features, exposed to various stakeholders like our customers (which may have different roles) or our internal teams (ie: for support).

Those features take place in a certain system (our product). This system will constantly evolve over time, it has to resilient by design.

Product architecture

txt
my-great-product/
#

A feature folder

  • How should we store those features?
  • What will those features depend on?

Here is a proposal:

txt
manage-team/
├── behavior/
│   ├── manage-team.feature
│   └── manage-team.ts
└── usability/
    ├── api/
    │   ├── manage-team-api-contract.ts
    │   └── manage-team-api-handler.ts
    └── ui/
        ├── AddTeamMemberButton.php
        ├── AddTeamMemberButton.react.tsx
        ├── AddTeamMemberButton.solid.tsx
        ├── AddTeamMemberButton.vue
        ├── AddTeamMemberButton.react.tsx
        ├── RemoveTeamMemberButton.solid.tsx
        └── RemoveTeamMemberButton.vue

Now that our architecture is in place

Ready to dive in? Let’s explore the cost of technology.