The advent of Cloud, Social, Mobile and Consumerization of IT means enterprises applications need to be adapt to the changing environment. Today, every enterprise is looking to fulfill the following demands
- Adopt cloud for their enterprise applications (whether private / public / hybrid is a matter of enterprise priorities)
- Replace or retire in-house enterprise applications ( where applicable) in favor of the equivalent SaaS applications
- Expose enterprise data for third party consumption
- Make the enterprise functionality available over variety of channels (web, mobile) – Consumerization
- Make the systems available 24X7 to meet the ever growing business demands
The Enterprise application patterns for creating applications – Portals, CMS, SOA, Centralized DB’s are not functionally capable or geared to meet the new business demands. The enterprise needs to adopt the newer application patterns that are coming out of the consumer web world. Some of the patterns emerging out of new generation consumer web applications that can be applied for enterprise applications
- Partition by Function – Divide the functionality by usage patterns or resource consumption. The functionality can be exposed using RESTful or Web services. This functional grouping will help in achieving optimization at the resource level. This helps to scale individual functional groups based on their resource characteristics (High CPU, More RAM, High I/O). This pattern organizes the enterprise platform around services which in turn provides agility. Things can be done in parallel because the output is a service. This allows fast time to market. Helps create an infrastructure that allows services to be built very fast.
- Segregate the providers and Consumers – Instead of building large monolithic applications, segregate the functionality providers versus consumers. The enterprise should have separate teams – one that deal with the functionality provider and other that consume the functionality. The functionality is exposed via simple API’s having standard versioned interfaces
- Public/private cloud integration – Enterprises need to have standardized integration strategy as the need on board multiple applications from multiple vendors start becoming common.
- Enterprise need to start integrating with SaaS vendors that can provide the required apps for the consumption of the enterprise users. At times, the integration might need to be handled at the API levels specifically for authentication/authorization.
- Enterprise applications specially that are consumer facing can also be hosted in public clouds.
Enterprise need to integrate services that handle data coming in or going out from public cloud / SaaS vendors to their data centers.
This guide will introduce you to the world of Software Architecture!
This 162 page guide will cover topics within the field of software architecture including: software architecture as a solution balancing the concerns of different stakeholders, quality assurance, methods to describe and evaluate architectures, the influence of architecture on reuse, and the life cycle of a system and its architecture. This guide concludes with a comparison between the professions of software architect and software engineer.