ComponentsA basic approach to architecture is to separate work into components. These may be designed to be reusable. Components also serve to reduce extremely complex problems into small manageable problems. The difference between a costly, unstable, low performance system and a fast, cheap and reliable system often comes down to how well it has been architected into components. For example, a service for calculating tax for an ecommerce company might have the following components.
LayersIt is common to separate components into layers. Components in different layers are loosely coupled such that they hide their implementation behind an interface. This allows for complexity reduction and can reduce the cost of future changes. For example, if a business layer knows nothing of how data is stored than you can change your database without any changes to your business layer.
ServicesA service is a piece of functionality that can be separately deployed and managed. Services are loosely coupled such that you can rework a service without impacting the rest of your architecture. For example, the Tax Calculator service (above) might be one of dozens of services of a billing system.
DeploymentAs services are separately deployed, they allow for extreme scalability and reliability. Services can also cut your computing costs as they allow large systems to be deployed to many instances of inexpensive hardware.
|Overview: System Architecture|