Web architecture - Technical Design Components
When we start designing a new solution for a Project / product , generally we define some common architecture stuff upfront. What those should be and how we can manage the same in efficient way?
- Stateless Approach - Token Based Session Management
- Logging - Central logging using AOP
- Authentication and Authorization - Central interceptor to achieve the same - Filter concept - API gateway pattern may be used
- Service Based Approach - So that it can be extended to Mircoservices in future
- Exception Management - Central exception management though AOP
- DB design with Multi tenant approach
- Caching - Try to introduce the same upfront - Combox are ideal to start with
- Transaction Management - Use known frameworks. No coding should be done to manage the same by our own way
- Keep Images/Document outside of DB - Think of Cloud storage
- Monitoring - Define ways / measurement of performance upfront
- AJAX - All the ways
- Decoupling or Push mechanism using Message Queue
- Batch processing - Keep it separate from main application
- Various Integration - is ESB or some framework needed ?
- Unit Testing - Setup the framework upfront
- Know your application server - Connection Pooling / Thread Management
- Define archive mechanism / criteria
Hope that this would give enough things to consider before your start your next project / product development