Applications used to be single or two-tier and applications made calls directly into the database.
Then the N-tier architecture revolutionized the software engineering. Applications (Clients) were communicating over TCP/IP to a service layer. This allowed us to separate the clients applications from the service application physically and it allowed us to scale better. It also allowed us to protect the service layer (where business logic resided) and to allow only certain clients to talk to these services on certain ports.
However, over the years the Enterprise development community kept implementing the "Service" tier as one big giant and exposing different endpoints and claiming that it is a Service Oriented Architecture. This works, but your code-base becomes very tightly coupled. To make this even better there are some steps to take in the right direction.
Vertical-slicing the "Service" giant into small services is the way to go. I understand that this is easy to say when you are starting from scratch, but we know it is a not an easy task if you already have large applications. What does "vertical-slicing" really mean? It means that each service is 100% independent of each other and they can even be coded in different programming languages / development stacks.
The overall goal is always:
- Keep It Simple
- Lightweight architecture
- As platform agnostic as possible
Below diagram will show you the following:
- Your business logic broken down into smaller independent services (Right side)
- Libraries/APIs that are treated as black-boxes and consumed by your code (Bottom of diagram)
- Your Website code and the Low-level website layer that bridges your website with all the services (Left side)
In the future posts I will go into more details and show examples of how you can organize this using .NET (Visual Studio solutions) or using Python as an open-source example.
Download the PDF version of this diagram.
Open the Google Drawing version of this diagram.
- almirsCorner.com -
#SoftwareDevelopment #SoftwareEngineering #Architecture #KeepItSimple #tech #programming #programmer #code #coding #LightweightArchitecture #microservices #webservices #Ntier #ClientServer #Csharp #Python #Ruby #Java #JSON #Restful #XML #WebAPI