Service-oriented architecture (SOA) is being touted as a panacea for enterprises with application overloads. For the IBM i, although SOA has its uses, the technology isn't for everyone.
SOA is an idea that is still struggling to emerge from a cloud of hype. In principle, it sounds great. Instead of a mass of applications that handle different aspects of an enterprise's business operations, where any software modification might have numerous unintended consequences, SOA seems to promise a menu-like assortment of services for getting things done. You mix and match some chunks of code that perform specific functions, and suddenly you have a new app. SOA does work something like that, but the real question is whether or not your enterprise is big enough to truly benefit from it.
Pass Me the Modules, Please
Conceptually, SOA evolved from the modular programming that was hot a few decades ago and even today has its advocates. Rather than custom-coding a routine for, say, reading a data record, you have a standard piece of source that does that, which you plug into any program that needs that function. Then developers can put together new applications like Tinkertoys and theoretically only have to worry about a few little details like specific business rules. With SOA, instead of calling routines residing within an application, or residing somewhere else on the same system or a corporate LAN, you're calling Web services from a central repository or a service provider somewhere in the cloud via the Internet using eXtensible Markup Language (XML), Simple Object Access Protocol (SOAP), or Common Object Request Broker Architecture (CORBA).
But of course, it's not really that simple.
SOA is more properly thought of as a collaboration method in which applications, services, functions, and events are brought together and coordinated. SOA can be a structure of composite applications that serves a functional chunk of an enterprise (e.g., coordinating shipments of goods from multiple locations), or a process that supports a flow of activities consisting of many steps within one enterprise, or a group of partners acting together to reach common goals (e.g., maintaining a supply chain). Almost by definition, efficient use of SOA tends to require an environment of complex operations and the coordination of more than a handful of software systems. In short, SOA is currently best suited for a large enterprise or one that deals in a continuous flow of operations involving multiple business partners.
A Grain of Salt with Your Lunch
Most enterprises using the IBM i are of the small-to-medium size. Unless you are a fairly large concern, handle a large number of complex and disparate functions as a routine part of your business, feel you're positioned for near-term massive growth, or have to work closely with a number of partners that might all benefit from tying their software systems closely together, SOA may be overkill. If you don't fit one of these profiles, you might want to be wary of moving to this technology too quickly.
For one thing, the technology is still developing and isn't as well understood as you might think. One popular misconception is that Web services are pretty much interchangeable with SOA. Web services are the most common way to implement SOA, but they are neither a requirement nor an equivalent idea. Another misconception is that XML, SOAP, or CORBA use is an automatic entrée to SOA, but these three communication methods are just the most-often-used protocols in SOA. Expertise in one of these protocols in your IT department doesn't simply translate to SOA skills.
Another problem is that SOA has issues, which we can barely touch on here. SOA intercommunication depends on messaging between services to function. Unless you are providing your own services, what are your guarantees for service quality and compatibility? How do you effectively test SOA apps when there aren't really any standard SOA-app testing tools? How can you manage and control the messaging information flow? How do you ensure information security, especially if more than one enterprise is involved? How can you know if SOA apps can run as efficiently on your hardware as your legacy apps do? And if you're looking to a cloud service provider for help, there are all the contract options and service concerns connected with that to take into account. Each of these questions could be an article in itself and you need to consider these factors, and others, before deciding to use SOA.
Surveying Your Dining Options
This is not to say SOA is bad; it isn't. SOA is potentially elegant, looks like a strong future direction for software architecture, and has had great buzz for several years now because it has proven successful in some contexts. But jumping into it without a lot of thought is more than a little like eating your dessert before the main course. It may taste great, but will it provide the nutrition your enterprise really needs to thrive?
What follows is an overview of the IBM i-compatible development tools and integrated development environments (IDEs) that support SOA frameworks. If you decide SOA is for you, one of these tools can help you build the kinds of apps that will work with the technology.
The product descriptions given here are merely summaries. You should follow the links provided and contact vendors whose products sound useful to get more complete information before making any decision.
And as always when looking for products or services, be sure to check the MC Press Online Buyer's Guide.
ASNA Visual RPG (AVR) is an RPG implementation that lets programmers build applications for Web and Windows that can include Web services and can extend IBM i applications to an SOA framework via Microsoft .NET. AVR produces RPG source code that supports XML, SOAP, and other SOA-compliant industry standards.
CA Plex lets developers build apps in Windows environments that incorporate SOA, Web-based, and wireless-device features and then test and deploy them on IBM i, Java/J2EE, and Windows/.NET platforms. CA Plex features use of patterns, standard pieces of code that execute standard functions and let programmers avoid hand-coding repeatable application elements. CA Plex generates code in user choice of RPG, C++, C#, or Java.
Centric and soarchitect provide a two-pronged approach to creating new SOA-supporting IBM i apps or extending legacy apps to integrate with SOA environments. Centric lets developers access presentation, application, and database layers of apps to make them easier to integrate with other software and platforms. Soarchitect helps programmers generate reusable modules from existing RPG or COBOL apps without having to change the underlying source code.
ClearPATH Modernization Suite is an integrated group of development tools that includes WebSmart Presto, which Web-enables existing IBM i applications and lets developers integrate new SOA, AJAX, and UI elements into those applications without changing source code. Other members of the suite include WebSmart ILE and WebSmart PHP, which also support SOA-friendly Web app building or Web legacy extensions in RPG or PHP, the Catapult and Clover Query report distribution and query tools, and Nexus Portal, a Web-portal generator.
DB2 Web Service Enabler (DB2WSE) provides the ability for developers to let applications running on other platforms reach IBM i DB2 databases via XML. External programs can call DB2WSE, which generates an SQL statement for accessing data. The product is designed to facilitate cross-platform operations and lends itself to application enablement within an SOA structure.
Fiorano SOA Platform offers a visual environment for building distributed applications that include active service components and run on IBM i machines using Java. Developers can drag and drop components, map data flows, access libraries of database and messaging adapters, and use legacy applications as building blocks to design SOA-compatible, multifaceted enterprise software assets.
Profound Logic Software
Genie is a green-screen application modernization tool that generates standard HTML, but it also incorporates into new applications support for SOA and AJAX. Among other programming features, it includes a WYSIWYG designer, flexible integration capabilities, a library of 60 chart types for application enhancement, and support for SSL and i5/OS security.
RPGsp is a development environment for building IBM i Web applications or extending legacy applications to the Web. The product converts screens and code to support HTML, generates graphical features such as dashboards, and includes built-in programming tools such as wizards, a debugger, and code editor. RPGsp also includes support for adding SOA, AJAX, Web 2.0, and e-commerce features in applications it generates.
The iWay SOA Middleware product line is a suite of software adapters that mediate communications between SOA services and applications, files, documents, and data. Developers can build applications with a wide range of third-party development tools and use iWay SOA Middleware adapters to provide the interfaces between components such as Web service functions and information resources.
LANSA Integrator facilitates communication between business partners and different applications via XML. It supports SOA by enabling integration of Java Web services with LANSA and 3GL programs running on IBM i and other platforms. It also lets enterprises publish Web services via SOAP, send and receive XML transactions between suppliers and distributors, and integrate back-office systems over MQSeries.
RAMP from LANSA is a modernization suite for IBM i applications. It provides an application framework within which developers can integrate application navigation and organization components, repurposed 5250 screen applications, and browser applications. Its toolset lets enterprises incrementally replace 5250-based application components with new ones that support technologies such as Web services and SOA.
Visual LANSA is LANSA's IDE for building Windows, Web, and IBM i applications. It includes a prototyping wizard, a UI framework, a visual data modeler, and tracking and version controls for team development. Applications developed with Visual LANSA support application design patterns, including SOA and MVC. Visual LANSA can be supported by Surround Technologies' Accelerator for Visual LANSA, a toolkit that augments Visual LANSA capabilities.
IBM's Rational Developer for i (an offshoot of IBM's Rational Business Developer product family) helps programmers build applications in Enterprise Generation Language (EGL), a high-level language that calls IBM i programs written in RPG, COBOL, CL, and other supported languages. EGL applications support Web services, SOA, and JavaServer Faces, while shielding developers from some of the behind-the-scenes complexities of those technologies.
IBM's Rational Developer for i for SOA Construction lets developers either build Web and SOA applications in EGL that use RPG, COBOL, and EGL programs as back-ends or turn those back-end programs into Web services themselves. Generated applications interface with IBM WebSphere, MQSeries, i5/OS data queues and data areas, ILE service procedures, and i5/OS security. The product also offers a broad palette of features and tools for application development.
Strategi SOA is an IBM i-native solution that lets developers subdivide server applications into SOA components, build new Web application or Web extensions of legacy applications, and generate components from legacy apps that move readily into Visual Studio, .NET, and Eclipse environments. It features a template-based architecture that separates application, programming, and presentation layers and facilitates integration of multiple development teams.
Skyway Builder is based on Eclipse, the open-source Java IDE, and applications generated using it will run on IBM i machines using Java. It's also integrated with Spring Source Tool Suite, which runs under Tomcat and Apache. Skyway Builder includes modules for generating Java DAO code for accessing relational databases, an object/relational mapping (ORM) generator for accessing ORM layers in Spring applications, a Web Services generator, and a Web presentation layer for generated applications.
Verastream is a suite of products that help enterprises transform legacy IBM i and other-platform software into SOA assets that are part of a larger system of composite applications. Verastream includes integration products that bridge 5250 and 3270 emulation systems, DB2 and other databases, and transaction systems. Composite applications can take advantage of reusable Web services, XML, JavaBeans, and .NET components. They can also provide real-time integration of legacy functions with new or third-party application suites.
X-Analysis is well-known as a legacy application analysis and documentation engine, but it also includes an X-Modernize module that accesses data in the X-Analysis repository to automatically convert DDS and RPG to SQL and stored procedures for use in SOA environments. X-Modernize generates relational mapping objects, service modules, and database service programs to facilitate conversion of legacy applications to an SOA framework. X-Analysis provides numerous other modules that enable data management, J2EE and .NET documentation, data exportation to Microsoft and other third-party applications, automated field re-engineering, and Unicode conversions.