It is important that you do not choose your architecture by going with the popular buzz-words of the day. Determining the architecture that is right for for your enterprise requires a set of iterative steps that starts with understanding your actual requirements and making choices that fit the requirement. Each decision sets the stage for the next decision and in some cases trade-offs that must be made in the next decision can cause you to reevaluate the priorities of your prior decision and thus you iterate.
The most fundamental decision that must be made is a ranking of the nonfunctional qualities that the systems must support (e.g. availability, security, non-repudiation, etc.). From this follows a determination of open standards and design patterns (frameworks) that will be incorporated into future applications. Next the vendors and products are selected that support the open standards. The set of products must integrate well with each other and align their API Stack to support the design pattern of the selected Application Stack (e.g. n-tier with clearly defined nodes). The tools used by the developers are selected to code, test and debug the application, and then the tools used to design the application is selected with the goal of using clear models to generate clean code for rapid application development (RAD) and model-driven architecture (MDA). The modeling process must conform with the selected development methodology for designing robust code that conforms to the business requirements and management principles.
Requirements, models, code and test data is kept in a version-controlled Reuse Library that supports traceability and impact analysis showing precise time & budget slippage of a change in requirements. When complete, the above process may iterate to take advantage of low-hanging fruit where it is found that a product has a particularly good synergy with other products. These factors that influence application and development architecture can be show as:
Summary - Determine required Architectural Qualities, and Rank them
- Determine the Standards, Design Patterns & Framework that support these Qualities
- Select the Technologies & Products that unite to build this Framework
- Select the Development & QA Tools that best work with these Technologies
- Select Design Tools that feature RAD Generation and Round-Trip Engineering with the Development tools