-
Integration is the process of programmatically linking your system with others.
-
Extension is the process of adding new functionality to your system through well-defined approaches, such as plug-in architectures.
-
Integration and extension enable your customers to create the product they seek. As a bonus, it creates tighter customer relationships and decreases the likelihood that a customer will leave you for a competitor.
-
The layered architectural pattern, which organizes various system functions in logical and physical layers, provides several excellent choices for integration and extension in enterprise-class software systems. The primary layers of a layered architecture are
-
- User interface
-
- Services
-
- Domain model
-
- Persistent data
Sublayers may exist within these layers, and other layers may be created to handle specialized requirements.
-
Whatever the structure of your architecture, build it in spikes that is, user-visible functionality driven through all layers or subsystems.
-
There are several ways to provide integration and extension points at the services and domain model layers. For example,
-
- Programmatic techniques, such as exposing an API
-
- Registration techniques, such as creating a plug-in architecture (like a Web browser)
-
Integration and extension of persistent data can be accomplished through
-
- Views
-
- Hook tables
-
- Spreadsheet pivot tables
-
- Extract, transform, and load (ETL) scripts
-
The business ramifications of applications that can be extended and/or integrated include
-
- A professional services organization to guide your customers in these activities
-
- Training programs to ensure that your customers understand how to do this on their own
-
- Certification programs to create an ecosystem associated with your application
-
- A community of users around your application
-
- License agreements that explicitly support integration and extension
-
Any customer- facing method for integrating and/or extending your application must be carefully managed. You're making a public commitment to stability. Honor it.