In this article, I would like to provide an overview of what are Cross-cutting concerns and what are the most common cross-cutting concerns that must be considered as part of the system design. In this article, I would like to provide the core concerns that should be considered while designing the application. Please do note that additional cross-cutting concerns need to be applied based on the domain of the application.
Before delving into details, let us first understand what is a ‘cross-cutting concern‘ and why we must consider building the enterprise applications.
Concern means “it is a behavior/functionality that we would like to implement in an application/ module”.
What is Cross-cutting-concern?
The cross-cutting concern is a concern that is applicable throughout the application and it affects the entire application.
Below are the Cross-cutting concerns those are applicable for all the enterprise applications
- Authentication / Authorization
- Data transport/message handling
- Identity Management
- Secure Accessibility of resources
- Data Security (Encryption / Hashing considerations)
- Server-side Cache
- Http cache
- Static resources cache / CDN
- Browser cache
- Request Tracing
- Exception handling and Logging
- Transaction Management (Distributed)
- Audit Log (Does not require in every application)
- Communication with External System (Does not require in every app)
- How and Agreement policies over data exchange
Microservice Applications requires to take care of a few more additional concerns in addition to above-mentioned ones
- Centralize Configuration Management
- Distributed Request Tracing
- Service Registration & Discovery
- Service-to-service communication
- Message Idempotency (When dealing with message queues)
- Shared data / logic / libraries
These are the concerns
Please let me know if you would like to add additional concerns in addition to the above-mentioned ones.
Please share your thoughts in the comments box below. Thank you for reading the article.