Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
Page 5 of 5
By now, you probably appreciate my zeal in keeping things as simple as possible. But I'm not after simplicity per se; my main driver is pragmatism. As applied to software projects, I define pragmatism as the correct balance between commercial and project realities on one hand and software design/engineering best practices on the other. Simply put, let's build the best system we can, leveraging the resources we have available to us.
A great example of pragmatism comes from civil engineering history. Isambard Brunel (sometimes called the man who built the world) regularly built wooden bridges while constructing railroads even when he knew that iron bridges would be better. He constantly juggled the best engineering solution against the pressures from railroad company shareholders who wanted the rail line open and the initial capital investment controlled. Sound familiar?! Exactly the same principles apply to the software engineering discipline.
With this spirit of pragmatism in mind, I propose that we subdivide the SOA world into three sections: simple, medium, and complex, where the benchmark for separation is quite simply the features required to meet the business needs. If you need a simple SOA, then don't waste time and money on a complex SOA.
Example implementations of a simple SOA:
Key SOA concepts covered by the simple-complexity scenario:
Figure 1. Schematic illustrating the core components of the simple SOA. Click on thumbnail to view full-sized image.
Example implementations of a medium-complexity SOA:
Key SOA concepts covered by the medium-complexity scenario are the same as the simple SOA plus:
Figure 2. Schematic illustrating the core components of the medium-complexity SOA. Click on thumbnail to view full-sized image.
Example implementations of a complex SOA include:
Key SOA concepts covered by the complex scenario are the same as the medium complexity SOA plus:
Figure 3. Schematic illustrating the core components of the complex SOA. Click on thumbnail to view full-sized image.
SOA as an architecture is here to stay and will become as embedded in our minds as "client-server" or "n-tier." However, it is still relatively immature and falls prey to subjective vendor positioning at present. My advice? Start small and keep your SOA as simple as possible. Do not equate SOA to Web services by default, and do not try to force the SOA design pattern on all layers of your Java EE application, particularly the Web layer.
Which SOA implementation do I recommend for most Java EE applications? A Level 2 SOA implemented as a JMS queue with MDBs as message consumers, and POJOs or stateless session beans as message producers. However, if you are sure you will need to integrate with non-Java applications, consider a Web services implementation. It is important that the solution you adopt now has headroom for growth in the future. How far ahead to look is often the cue for debate, but I propose that the farthest forward we can look for any software application is 36 months. If you see additional SOA requirements in that timeframe, look to build them in now.
Read more about Enterprise Java in JavaWorld's Enterprise Java section.
Archived Discussions (Read only)