Gelaagde architectuur is een klassieke manier om IT-systemen te structureren, waarbij de applicatie is georganiseerd in een set lagen, waarvan elke laag een afzonderlijk abstractieniveau implementeert: gebruikersinterface, bedrijfslogica, gegevensaccess en infrastructuurmechanismen. Gewoonlijk worden de volgende lagen onderscheiden: Presentation Layer (UI), Business Logic Layer, Data Access Layer en Data Layer.
Elke laag communiceert alleen met de aangrenzende lagen, wat de modulariteit bevordert en het onderhoud van de code vereenvoudigt. Deze aanpak maakt het gemakkelijk om afzonderlijke delen van het systeem te testen en te refactoren.
Voorbeeldcode (gelaagde architectuur in Python):
# Data Layer class UserRepository: def get_user(self, user_id): # Verkrijg gebruiker uit de database pass # Business Logic Layer class UserService: def __init__(self, repo): self.repo = repo def get_user_profile(self, user_id): user = self.repo.get_user(user_id) # Bedrijfslogica return user # Presentation Layer class UserController: def __init__(self, service): self.service = service def get(self, user_id): user_profile = self.service.get_user_profile(user_id) return user_profile
Belangrijkste kenmerken:
Is het mogelijk om rechtstreeks van de bovenste laag naar de onderste laag te communiceren, voorbij de tussenliggende lagen?
Nee, volgens de ideeën van gelaagde architectuur communiceert elke laag alleen met de laag direct eronder. Het schenden van dit principe leidt tot sterke koppelingen en vermindert het onderhoudsgemak.
Is het waar dat gelaagde architectuur slecht schaalt?
Niet altijd. Schalen is mogelijk, maar kan moeilijker zijn in vergelijking met microservices. Horizontaal schalen van afzonderlijke lagen (bijvoorbeeld een backend-service) is een standaardpraktijk.
Kan één laag logica implementeren die betrekking heeft op meerdere lagen tegelijkertijd?
Ideaal gezien niet. Kruisbestuiving in bedrijfslogica leidt tot verwarring en maakt onderhoud moeilijker. Functies en klassen moeten zich op de juiste laag bevinden.