It's very easy to get technical when discussing architecture,
But I believe that's not how you suppose to play that game at all.
The most important thing when building a layered system is to have a clear vision that is agreeable by all team members.
A clear vision helps us stay consistent in the way we think and approach those layers.
As a B2C SaaS company we decided to break down our architecture layers the following way:
As we see it, each layer is defined by its core purpose and expose an interface to be consumed by the layer above it.
e.g The services layer holds Sanga microservices and expose resources that are being consumed by the client layer via restful api.
@#$% yeah, lets put some maple & butter on those pancakes 😉
Similar to how restful api acts as the tunnel that the services layer expose to the client layer above it (no news here 🤷♂️),
The infrastructure layer does the same by exposing the resources it creates to be consumed by the services layer via kubernetes (e.g Database, S3 Bucket).
That means that when a service is being deployed,
it looks for the resources it needs in Kubernetes secrets (big news here 🤯).
Made with ❤️ by Sanga