|
Comments
Did you read today's front page stories & breaking news?
SYS-CON.TV
|
SOAP SOA Web Services: Does Your SOA Achieve Agility?
SOA actualization: enterprise agility
By: Jeff Schneider
Nov. 10, 2005 09:00 AM
Agility seems to be the buzzword du jour. There are "agile enterprises," "agile manifestos," "agile programmers," and "agile architectures." Slap "agile" in front of just about anything and marketers believe it will sell better. Yet, one of the primary goals of using service-based architectures was to create "agile systems." This begs the question, was it just marketing or is there something to it?
Small systems are usually agile. As systems grow in size and the dependencies increase, it becomes hard to make changes and re-release. Service-oriented architectures (SOA) are thought to hold the potential to improve this scenario, but do they? More important, does your instantiation of an SOA provide agility?
Finding the Problem Take a software system that has been in production for an extended period of time and review all of the user-initiated change requests. Create categories for the changes, such as:
Just when most developers were getting efficient at using their platform tooling (Visual Studio, Eclipse, etc.), a whole new set of service-oriented opportunities surfaced. For the last several years the open source community and leading vendors have rushed to bring new tools to the market. However, many organizations have been slow to adopt tools that facilitate SOA. Does your organization have standardized tools for:
Agility Techniques
Agile Service Design With regard to refactoring for reuse, it is clear that we must implement the same basic rules of commonality that we applied to object-oriented design - that is, using Venn diagrams to identify commonality and carve it out. It is clear that "fat services," or services that contain too much logic, are likely to have lots of change requests issued against them. This has a ripple effect that causes the entire service to be versioned as well as all of the clients, depending on that service to be versioned. This doesn't sound very agile, does it? Alternatively, server-side code that is specific to a client can be refactored into a service that reduces the impact of changes required by a client. The goal is to reduce the impact of a change while leveraging common code. If we refactor our scenario into four services (one common and three services containing client-specific features), we are able to preserve the reuse and reduce the impact of making a change. Now we all know that this type of extension mechanism won't always work. Luckily, the software community has seen this type of problem on more than one occasion and the design patterns to remedy the variations of this problem are abundant. For virtually every "Gang of Four" pattern that discussed an object-oriented solution, there is a minor modification that can be applied to create a service-oriented variation. Remember though, on occasion - the answer isn't service-oriented at all. Don't go throwing out your favorite OO patterns and trying to solve problems in a service-oriented way. Services are a mechanism to complement your current bag of tricks. Implementing best practices in design (service, object, or otherwise) is essential to creating systems that are easily modifiable.
Composite Applications Composite solutions focus on three different areas: agile controllers, reflective metadata, and WYSIWYG/RAD.
Agile Controllers
Reflective Metadata Reader Feedback: Page 1 of 1
Your Feedback
SOA World Latest Stories
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||