Can you describe the architecture of a medium-to-large scale system that you actually designed or implemented? Can you white board the components of the system you recently worked on? How would you go about designing a JEE shopping cart application? Can you discuss some of the high level architectures you are experienced with
There are a number of high level conceptual architectures as discussed below. These individual architectures can be mixed and matched to produce hybrid architectures.
Model-View-Controller Architecture
Most web and stand-alone GUI applications follow this pattern. For example, Struts and Spring MVC frameworks and Swing GUI.
- The model represents the core business logic and state.
- The view renders the content of the model state by adding display logic.
- The controller translates the interaction with the view into action to be performed by the model.
The actions performed by a model include executing the business logic and changing the state of the model.Based on the user interactions, the controller selects an appropriate view to render.The controller decouples the model from the view.
Service Oriented Architecture (SOA)
The business logic and application state are exposed as reusable services.
An Enterprise Service Bus (ESB) is used as an orchestration and mediation layer to decouple the applications from the services.
The above architecture has 5 tiers. The application tier could be using a typical MVC architecture.
- The service orchestration tier could be using ESB products like OracleService Bus, TIBCO, etc and BPM products like Lombardi BPM, Pega BPM, etc.
- In the abovediagram, the ESB integrates with the BPM via messaging queues.
- The service tier consists of individual services that can be accessed through SOAP or RESTful web services.
- The SOA implementation requires change agents to drive adoption of new approaches.
- The BPM,application integration, and real-time information all contribute to dynamically changing how business users do their jobs.
So, it needs full support from the business, requiring restructuring and also it can take some time to realize the benefits of SOA. Cloud computing is at the leading edge of its hype and as a concept compliments SOA as an architectural style. Cloud computing is expected to provide a computing capability that can scale up (to massive proportions) or scale down dynamically based on demand. This implies a very large pool of computing resources either be within the enterprise intranet or on the Internet (i.e on the cloud).
User Interface (UI) Component Architecture
This architecture is driven by a user interface that is made up of a number of discrete components.Each component calls a service that encapsulates business logic and hides lower level details. Components can be combined to form new composite components allowing richer functionality. These components can also be shared across a number ofapplications.
For example, JavaScript widgets, Java Server Faces (JSF) components, etc.
RESTful data composition Architecture
The user interface can be built by calling a number of underlying services that are each responsible for building part of a page.
The user interface translates and combine the data in different formats like XML(translate to HTML using XSLT), JSON (Java Script Object Notation), ATOM (feed for mail messages and calendar applications), RSS (for generating RSS feeds), etc.
HTML composition Architecture
In this architecture, multiple applications output fragments of HTML that are combined to generate the final user interface.
For example, Java portlets used inside a portal application server to aggregate individual content..
Plug-in Architecture
In this architecture, a core application defines an interface, and the functionality will be implemented as a set of plug-ins that conform to that interface.
For example, the the Eclipse RCP framework, Maven build tool, etc use this architecture.
Event Driven Architecture (EDA)
The EDA pattern decouples the interactions between the event publishers and the event consumers. Many to many communications are achieved via a topic, where one specific event can be consumed by many subscribers. The EDA also supports asynchronous operations and acknowledgments through event messaging.
This architecture requires effective monitoring in place to track queue depth, exceptions, and other possible problems. The traceability, isolation, and debugging of an event can be difficult in some cases. This architecture is useful in scenarios where the business process is inherently asynchronous, multiple consumers are interested in an event(e.g. order status has changed to partially-filled ), no immediate acknowledgment is required (e.g. an email is sent with the booking details and itinerary), and real-time request/response is not required (e.g. a long running report can be generated asynchronously and made available later via online or via email).
Most conceptual architectures use a hybrid approach using a combination of different architectures based on the benefits of each approach and its pertinence to your situation. Here is a sample hybrid approach depicting an online trading system.
FIX is a Financial Information eXchange protocol. You could also notice a number of synchronous calls using XML/HTTP or SOAP/HTTP and asynchronous calls using JMS. The above diagram also depicts that an enterprise architecture can be complex with a number of moving parts. So, it is imperative that all these moving parts are properly monitored and tested for any potential performance issues. Most of these services will be running as a cluster or a load balanced service with either active/active or active.passive configuration for high availability and scalability.