Showing posts with label soa. Show all posts
Showing posts with label soa. Show all posts

Friday, February 10, 2012

Understanding MEAP - Mobile Enterprise Application Platforms

MEAP's are going to be the new *aaS.  If you don't understand that statement, consider yourself blessed. You may feel like you need a computer forensics degree to understand it all.  Understanding technology industry analysts and acronyms is a difficult task. A relatively new category of Gartner Magic Quadrants have emerged one one in particular is a category that we think deserves a lot of attention.  Mobile Enterprise Application Platforms are not typical software like your daddy used to buy.  MEAP's are collections of services and components (including frameworks, profiles, libraries and more) that facilitate the types of functionality required to develop and maintain applications running on wireless devices (aka mobile devices).

Now I don't subscribe to hype and BS and neither should you.  As the former chair of the OASIS Service Oriented Architecture Technical Committee, the group that produced the standard reference model for SOA, I never anticipated that people would run with this and start all these (INSERT ANY CAPITAL LETTER FROM THE ALPHABET HERE)aaS.  Software as a Service (SaaS) is not really that different from hosted solutions is it?  If you disagree, you'd better hurry and claim one while there are still letters left for acronyms.  I think XaaS is not used yet.

When I see value though, I want to point it out.  MEAP is one of those rare acronyms that seems to be vastly underestimated by the majority of the industry.  The term itself seems to have come from Analyst firm Gartner in a paper published in April 2011 (Gartner, Magic Quadrant for Mobile Enterprise Application Platforms, Michael J. King, William Clark). I believe I read somewhere that Gartner believes over 95% of the technology industry will use some form of MEAP by 2012.  When I try to research this topic on Google, very little information comes up.  Regardless of the title, let's explore what a MEAP is and what it does.

In their paper, "The rule of three" is used as a quantifier for identifying when this functionality might be of interest.   Quoting from Gartner (via Wikipedia):
The Rule of Three refers to a concept developed by analyst firm Gartner, whereby companies are encouraged to consider the MEAP approach to mobility when they need their mobile solutions to:
  • Support three or more mobile applications 
  • Support three or more mobile operating systems (OS)
  • Integrate with at least three back-end data sources
According to Gartner, using a common mobility platform, like a MEAP, brings considerable savings and strategic advantages in this situation.
This helps frame the problem that MEAP's are trying to solve.  The ability to support these patterns requires a common set of "things". These "things" enable several common patterns of enterprise architecture to mobile device communication.  Some of the more common patterns are:
  • Mobile Device Management (MDM) - manages, monitors and secures distrubuted mobile environments. 
  • Multiple Message Exchange Patterns such as Push Notifications that are respect end users data plans and battery life.
  • Advanced Security Features such as remote session management and data wipes.  These are sometimes viewed as part of MDM.
  • Mobile Payment Gateway Services - services that can access a Merchant Processing Account and extend that functionality via the MEAP to the mobile environment.
  • Analytics of user interactions.
  • Temporal-Spatial Capabilities - the ability to work with geocoded and location graphs
  • User Administration and management
  • Data Synchronization when mobile devices become re-connected to networks.
  • Data Transformations to facilitate existing data being marshaled into formats that are optimized for mobile such as JSON or even HTML5 for mobile websites.
  • Data Persistence usually on both the mobile device and the server side.
This is by no means an exhaustive list of items.  Uberity will be writing some more about this topic in coming weeks. It is clear to use that some, if not all of these components, will be of interest to a large number of customers.

One last word.  I don't want to ever see someone pitching "MEAPaaS" but sadly I know it will probably happen.

Wednesday, December 23, 2009

RIA Architectures: An Exclusive Interview with Adobe's Duane Nickull

DZone recently caught up with me to discuss RIA's Web 2.0 and SOA as well as other trends in enterprise architecture. In this interview, recorded at Adobe MAX 2009, we revisit the notion of 'Web 2.0' and discuss the architectural patterns behind it in the context of the O'Reilly book "Web 2.0 Architectures". We also discuss some of the new architectural and human interaction patterns that are shaping the way in which we build Web applications today as well as some of the new Flash authoring tools for the iPhone, the Open Screen Project, as well as the impact HTML 5 will have on Flash adoption.

The complete transcript of the interview has been provided here.



Saturday, June 20, 2009

Berlin-Brandenburger SAP Forum

On June 18 I spent the entire day at the Fachhochschule Brandenburg (basically a technical university) with the applied computer science advanced faculty and students. I was hosted by Professor Dr. Robert Franz, Professor Dr. Hartmut Heinrich and Professor Dr. Andreas Johannsen. My talk was on the core patterns of SaaS and SOA as well as the practical implications for software developers and architects. Through code, I demonstrated advanced micro-patterns for Web Service MEPs as well as briefly covering standard service clients like Flex4 for PHP, Web Services, REST (the real REST, not just meaning XML over HTTP) and more.

The students were totally enthusiastic and the faculty has been very knowledgeable in how they view SaaS and especially the architectural model exploring how to use Adobe’s stack to quickly offer SAP systems data using the SaaS model. The SAP speakers also had some great talks on SaaS and it is clear to me that Adobe and SAP need to work more closely together to harness the great power of SAP's enterprise while delivering business intelligence with Adobe's RIA stack.

My white paper on SaaS architecture was published in the official SAP SaaS Wirtschaftsinformatik. The same white paper is also published on the SaaS architectural area of Adobe's website.

I would love to be able to follow this up by coming back to teach a full day (maybe 2 days?) Flex Boot Camp at the University. This would involve a course similar to the one in Vancouver, except updated to reflect the new FB4 and F4, Catalyst work-flows and frameworks.

As I was in Brandenburg, basically a beautiful place, I was reminded of the Dalai Lama's advice - go every year to a place you have never been before. What a great way to live!

The presentation is available at http://www.web2open.org/presentations/Core-SaaS-Patterns_2009_NICKULL.pdf

Tuesday, May 05, 2009

Software as a Service: A pattern for modern computing

Mihai Corlan, Jack Wilber and I have put together a short white paper on Software as a Service (SaaS). Software as a Service (SaaS) has become a popular term within software industry circles since its introduction in early 1999. While many in the press have predicted that SaaS may eventually replace the incumbent model for software delivery, more likely an approach will evolve that combines the best of both worlds.

The white paper examines the core pattern of SaaS in pragmatic terms. It also outlines some of the strategic advantages SaaS can provide over distributed and shrink-wrapped software. The paper is not intended to be a singular authoritative source for defining SaaS so please do not interpret it as such.

Read it here:

http://www.adobe.com/devnet/articles/saas.html

Friday, October 03, 2008

Forensic Architecture and other lessons from SOA land.

Forensic Architecture! What is it? I use this term to refer to the process of describing the architecture of something after it has been built. It is a largely frustrating, cumbersome process yet I seem to have made a career out of it. Let me explain.

Note: These are my own views and lessons I have learned. I have greatly enjoyed working with many talented minds in the past and am looking forward to working with more in the future. The sum of all these experiences has made me what I am today for better of worse and I am grateful to everyone I have met on this journey.

In a perfect world of the idealist software engineer, software architecture is written in response to a documented set of requirements. The sequence of events in a perfect world usually involves the following steps:

1. A problem is identified.
2. The problem is documented.
3. A solution is proposed.
4. Specific requirements for the solution are documented.
5. An architecture is proposed to solve the problem.
6. An iterative process of mapping requirements to solutions takes place until all issues are resolved.
7. The final solution is built and solves the problem.

These are somewhat generic and there are many variations to this sequence of events.

Lesson #1: In the real world, this process rarely happens without some complications. The following sections discuss some real-world projects I have learned from and their associated complications. Each section briefly explains the project and then provides an introspective analysis of the architecture process and the lessons learned during that process. The purpose of these case studies is to illustrate how vastly different architecture processes can be and to try and learn from the past.

Example #1: ebXML

ebXML, which stands for Electronic Business using eXtensible Markup Language, is a modular suite of specifications that enables enterprises of any size and in any geographical location to conduct business over the Internet. The overall standards process for developing ebXML (circa 1999–2001) was somewhat flawed and marked a serious departure from the architectural idealism described above, yet the product itself was rather revolutionary and advanced for the time. ebXML is in my mind the first large scale web and XML based Service Oriented Architecture (SOA). The organization and overall process used to create the ebXML specification was the root cause of the problem. No one is at fault as there were external pressures to get the work done fast and we all agreed, myself included, to adhere to the schedule we created. In retrospect, there were great lessons to be learned.

The following six ebXML working groups, each with a very specific job to do, started work at exactly the same time and were supervised by an organizing committee:

• Requirements
• Technical Architecture
• Business Process Specification Schema
• Core Components
• Messaging
• Registry

Lesson #2: In an ideal world, the Requirements group would have completed its work before any other group started or perhaps before those groups were formed.

Lesson #3: In the same idealistic manner, the Technical Architecture group would have started and completed its work based on the requirements, and then a series of other groups would have been formed to complete the balance of the work. The groups should have logically been formed in alignment with the components of the architecture.

As stated above, these two ideal practices probably never happen in the real world ;-)

Instead, all six groups started work at the same time with mostly aligned but somewhat differing ideas of what ebXML should be, given that no comprehensive documentation existed prior to this activity. Although this sounds like a very funny Dilbert comic, it actually happened.

Eventually, most of the work fit within the work completed by the Technical Architecture group; however, there were gaps and issues in the solution. The unfulfilled requirements led a lot of follow-on work, including to the formation ofthe Universal Business Language (UBL), and several web services standards that evolved out of the ebXML model. The entire experiment was similar to the Monty Python skit, “The 100-Yard Race for People with No Sense of Direction.” At the start of this skit, several racers are standing in a straight line, ready to sprint down a racetrack. When the starter pulls the trigger, each competitor runs as fast as he can in completely different directions, each eagerly trying to complete his race.

Other Lessons learned

1. Never try to document a moving target in a static architecture specification.
2. Something not documented in architecture is not universally understood, nor can it be implied to exist within the scope.
3. Alignment, understanding, and agreement on a specific model or first order of logic are a good way to get any project off to a good start.
4. Solving a problem before you know what the problem is can be suboptimal.
5. Splitting a large thing into several smaller things is a good approach.
6. Keeping unnecessary dependencies out of a design of multiple components is generally a good thing for longevity.

ebXML was a ground-breaking effort that at one time enjoyed participation from most major software vendors. It was a joint initiative of the United Nations Centre for Facilitation of Commerce, Electronic Business and Trade (a subgroup of the United Nations Economic Commission for Europe) and OASIS. ebXML was the first post-XML, post-Internet effort to build a truly global electronic business and commerce infrastructure based on open standards and protocols.

Although the project eventually lost support from most major software vendors, a lot of its functionality and patterns live on today within something known as web services. Web services, although itself a term that does not concretely define a set collection of specifications, is generally accepted as one of the future building blocks for advanced information systems connected to the Internet.

Example #2: W3C Web Services Architecture Working Group

Post-ebXML, several skilled architects went on to create a piece of work called the W3C Web Services Architecture. During the effort, there were disparities in terms of the scope of the W3C Web Services Architecture recommendation and its recommended level of abstraction. The result was a hybrid document that is both part abstract model and part reference architecture, while also mentioning certain implementation constraints. During its development, there was also no clear definition of web service, and the web services versus Representational State Transfer (REST) debate came up many times.

The W3C Web Services Architecture Working Group was working on many complex interdependent issues concurrently, which in retrospect was not an ideal process. Some people were examining very concrete technologies such as the Simple Object Access Protocol (SOAP) at the same time the requirements document was declared to be a “living” (dynamic) document. Other disparities included describing some architectural concepts quite abstractly in the concepts and relationships section, followed by very specific mentions of technologies such as SOAP and HTML (albeit without versions).

Although this layered approach is somewhat normal, the content of the final recommendations seemed to have large gaps in terms of concepts and their link to concrete entities.

Lessons learned

1. Try to create consensus on what is achievable before starting any architecture work.
2. Clearly define the rules and constraints for abstraction and what constitutes a normative part of the solution before creating a table of contents.
3. Consider splitting knowledge into multiple sets of artifacts, each at a different level of abstraction, to capture knowledge for different audiences. For example, architects and modelers require different levels of detail than those writing code.

Example #3: The United Nations (UN/CEFACT) eBusiness Architecture

Another architecture that is worth studying is the eBusiness Architecture specification for the United Nations (UN/CEFACT) group. This modern SOA work tried to reconcile the ebXML and web services standards into a single architecture specification, and tried to add a modeling methodology on top. The Techniques and Methodologies Working Group managed to cobble together a candidate architecture specification for global electronic commerce that reflected the thinking at the time.

The final work produced by the working group was focused far too much on a narrow audience, namely those who model processes of international trade using the Unified Modeling Language (UML heads for short, of which I am one). It also tried to reconcile a large and very diverse set of information into a single, short document. As a result, significant portions of content were omitted, which made the document very confusing to readers who did not have the background knowledge to correctly interpret it. Although it was also an early example of a large infrastructure or IT system built in alignment with the principles of SOA, the document failed to produce a level of detail that was sufficient enough to facilitate implementations, and instead was largely used by authors of other specifications as a common basis for their work.

Lessons learned

1. Clearly define the audience for each artifact in advance.
2. Do not mix together disparate views of architecture unless absolutely necessary.
3. A layered approach to documenting the structure of a system is sometimes easier to understand than one large view that tries to incorporate multiple domains of knowledge.

Example #4: The OASIS Reference Model for SOA

The OASIS Service Oriented Architecture Reference Model Technical Committee (say it ten times really fast) formed in early 2005. This group included more than 200 members and observers to define SOA as an architectural paradigm, starting with a diverse set of beliefs and a blank piece of paper. At the time, SOA was an unspecified concept and each person had a slightly different view of what it was. Over the course of 18 months, the Technical Committee managed to distill the common beliefs of the participants and the public and build a reference model to capture the core lexicon of SOA.

In the process, several opinions were collected, and although they differed vastly at the concrete level, they were generally aligned at some abstract level. During the process, it became common for the architects involved to look beyond the examples cited and to recognize concepts and axioms at a higher level. It was a very iterative process, yet very productive in the end. Although some vendors attempted to define SOA in alignment with their own products or offerings, they were unsuccessful. The final delivered specification was a reference model, completely abstract of any implementation, and therefore reusable in multiple domains. This was deemed a success by most participants however it too had its share of complications due to the sheer number of disparate opinions of what SOA was. Additionally, since the term SOA itself was such a hot topic in the industry, there was a large degree of political pressure from some interests who had already heavily invested in their own definitions of SOA.

Lessons learned

1. Creating any model or architecture specification generally requires a means to find a common ground.
2. Politics places pressure on documenting architecture. It is best to think freely from forces and constraints that may lead to decisions based on a preconceived notion of what the solution is.
3. Meetings of standards bodies involving large numbers of software architects seem to be rife with repeated consumption of fermented vegetable product beverages containing high levels of alcohol and caffeine.

The latter should generally be regarded as the best lesson learned and I am grateful for all the people I have worked with on all of these projects, no exceptions.

I keep these lessons in mind as I am embarking on yet another forensic architecture journey to write a book on Web 2.0 for O'Reilly Media with Web 2.0 luminaries Tim O'Reilly, Simon St. Laurent, James Governor and Dion Hinchcliffe with great help from Steve Weiss. In accordance with the above lessons, we have tried to avoid introducing any dependencies or material in the book that would affect its durability or lessen its utility in the future. By doing that, hopefully we will not exclude anyone, nor will we arrogantly make our definition of Web 2.0 the only definition that applies.




By documenting architectural, design, and social patterns, this book is part of a framework that may define some aspects of Web 2.0 and share knowledge with others. To be durable, the patterns in this book are not tied directly to any specific implementation or work. In some cases, we mention well-known implementations for illustrative purposes only.

Where does that leave us (as a community) with respect to sharing knowledge about Web 2.0? It provides the groundwork for a methodology to derive knowledge from examples. This is the stepping-off point where we can start to truly evaluate the distinctions of Web 2.0 as it is, compared with the Internet of today and tomorrow.

Hey ho - let's go!

Saturday, May 10, 2008

OASIS SOA Reference Architecture call for review

To OASIS members, Public Announce Lists:

The OASIS Service Oriented Architecture Reference Model (SOA-RM) TC has recently
approved the following specification as a Committee Draft and approved the
package for public review:

Reference Architecture for Service Oriented Architecture Version 1.0

The public review starts today, 9 May 2008, and ends 8 July 2008. This is an
open invitation to comment. We strongly encourage feedback from potential users,
developers and others, whether OASIS members or not, for the sake of improving
the interoperability and quality of OASIS work. Please feel free to distribute
this announcement within your organization and to other appropriate mail lists.

More non-normative information about the specification and the technical
committee may be found at the public home page of the TC at
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=soa-rm. Comments may
be submitted to the TC by any person through the use of the OASIS TC Comment
Facility which can be located via the button marked "Send A Comment" at the top
of that page, or directly at
http://www.oasis-open.org/committees/comments/index.php?wg_abbrev=soa-rm.

Submitted comments (for this work as well as other works of that TC) are
publicly archived and can be viewed at
http://lists.oasis-open.org/archives/soa-rm-comment/. All comments submitted to
OASIS are subject to the OASIS Feedback License, which ensures that the feedback
you provide carries the same obligations at least as the obligations of the TC
members.

The specification document and related files are available here:

Editable Source:
http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/soa-ra-pr-01.doc

PDF (Authoritative):
http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/soa-ra-pr-01.pdf

HTML:
http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/soa-ra-pr-01.html

Abstract:
"This document specifies the OASIS Reference Architecture for Service Oriented
Architecture. It follows from the concepts and relationships defined in the
OASIS Reference Model for Service Oriented Architecture. While it remains
abstract in nature, the current document describes one possible template upon
which a SOA concrete architecture can be built.

"Our focus in this architecture is on an approach to integrating business with
the information technology needed to support it. The issues involved with
integration are always present, but, we find, are thrown into clear focus when
business integration involves crossing ownership boundaries.

...

"The Reference Architecture has three main views: the Business via Service view
which lays the foundation for conducting business in the context of Service
Oriented Architecture; the Realizing Services view which addresses the
requirements for constructing a Service Oriented Architecture; and the Owning
Service Oriented Architecture view which focuses on the governance and
management of SOA-based systems."


OASIS and the Service Oriented Architecture Reference Model (SOA-RM) TC welcome
your comments.

Thursday, March 06, 2008

LiveCycle ES wins Dr. Dobbs award.

LiveCycle Enterprise Suite has been announced as a "Productivity Winner" for the "Enterprise Tools" category
of the Dr. Dobb's 18th Annual Jolt Awards. Winners will be featured in the June issue of Dr. Dobb's Journal.

The full list of winners is published here:
http://www.drdobbs.com/blog/portal/archives/2008/03/jolt_award_winn.html


SOA the real winner?

What is interesting is that this really represents the business value of SOA to the enterprise. While not specifically discussed in terms of SOA and BPM, the Jolt awards really emphasize products that have "jolted" the industry in the past year. LiveCycle Enterprise Suite is a clear choice as it represents the third major evolution of Adobe's enterprise platform. While most people were only "talking" of "registry-repository" back in 2003, Adobe had one in LiveCycle 6.0. While people talked about Service orchestration and aggregation (composition), Adobe LiveCycle 7.0 delivered. While people talked about SOA Governance, LiveCycle BAM (Business Activity Monitoring) delivered the goods again.

Winners of the Jolt awards are selected by judges consisting of industry insiders, columnists, and technology leaders. It does not surprise me that our enterprise suite captured another award and recognition. Adobe has been heavily involved in SOA standards, web services work, and business process management standards for a while.

With that said, if anyone out there wants to give it a go, I have a few LiveCycle ES developer DVDs left. Ping me (dnickull at adobe dot com) with your mailing address and I'll send one out.

Tuesday, January 22, 2008

Talks for WebManiacs 2008!

I have agreed to do two talks for WebManiacs 2008 in Washington, DC this spring (May 19-23).

The WebManiacs 2008 conference schedule has been finalized and registration is open. Early bird pricing ends Jan 31. Consisting of a two-day ColdFusion conference ("CFManiacs") coupled with a three-day Flex conference (FlexManiacs), hosting over 70 speakers and 130 distinct topics (some of which are hands-on), WebManiacs promises to have the most comprehensive coverage of Flex, AIR, and ColdFusion at the lowest price. Seating is limited, so folks should register early in order to get into the more popular sessions.

My sessions are architectural in nature:

1. SOA and BPM, a practical approach to business automation

Abstract: This session will discuss Service Oriented Architecture (SOA) as
an architectural paradigm then pose some interesting architectural questions
about the pragmatic relationship with Business Process Management (BPM).
While many consider BPM a part of SOA, it is in fact not and the presenter
will clearly explain why. It is, however, often the end state sought by
those who pursue SOA as an architectural model and hence has a close
relationship with SOA.

The topics covered will include identifying services by modeling
business processes to spot services used by more than one process, the
question of how much process state a service should be aware of, reuse vs.
repurposing, various standards approaches to SOA and BPM, as well as a case
study of large scale SOA for powering Enterprise 2.0 type applications.

2. Web 2.0 patterns, models and architecture

Abstract: Many enterprises seek knowledge of the design patterns used by
successful Web 2.0 companies. This session starts with Tim O'Reilly's list
of Web 2.0 examples and distills the abstract architectural patterns
behind the examples. By using the patterns notation, the core knowledge of
the design principles is preserved in a template which can be reused in
multiple contexts.

Duane will also show the evolution of the client server model into a 5-tier
model based on the consistent concepts of most successful Web 2.0 patterns.
The model serves as a useful starting point for anyone designing either
business models or technology for Web 2.0. The Web 2.0 model is also used to
illustrate a reference architecture. This abstract set of technology
components allows developers to start thinking about the types of technology
decisions required for building Web 2.0 projects.

***************************

Hope to see you all there!!!

Monday, January 14, 2008

From OMG in Orlando: Event Driven Architecture


Today I am sitting in on Robert Covington's (CTO, Rhysome) talk on SOA and EDA. Event-Driven Architecture is an interesting animal however the current models I have seen ignore a grand unification of architectures into a definitive definition. The wikipedia definition sucks in a way that would make vacuum cleaners jealous.

What Robert covered today is the issue of event context within the realm of Complex Event Processing (CEP). The latter is great work, largely spearheaded by David Luckham, professor emeritus at Stanford. I have been working on an idea called IDEA (Intelligence Driven Enterprise Architecture) which combines the best of SOA and EDA. The gist is below.


The idea (pardon the pun) is that EDA can be divided into two major components - the event generation and detection (shown on the left) and the event processing (shown on the right). It makes architectural sense to keep them separate as it leads to more scalability within enterprise architecture.

The core model illustrates how events (instances of one specific event type from the meta event class), are generated and caught. This diagram is high level and leaves out things like the event message dispatch, the event bubble model (usually split into unicast and broadcast via subscription), the event capturing and subscription mechanisms. The causality relationship between events is a core evolution of complex event processing. Causality relationships can be one of many types, however in order to process them more accurately, the event context (the set of specific circumstances in which the instance of the event occurred) is very important to feed to the event processing side (everything to the right of the inference engine).

During Robert's talk today, I had several epiphanies, one of which was that perhaps it is time for some formal standards work in this area.

Thoughts?

Friday, January 11, 2008

New Adobe SOA White Paper

Myself, James Ward, Laurel Reitman, and Jack Wilber have finished producing a new white paper on SOA. The paper is licensed under creative commons so anyone can take it, post it where they want, and do with it what they want as long as attribution is preserved. The paper is available here (in PDF of course):

http://www.adobe.com/enterprise/pdfs/Services_Oriented_Architecture_from_Adobe.pdf

The paper looks into specialized messaging patterns for Service Oriented Architecture (SOA). Most people still mistakenly believe that SOA is limited to request-response. Such is far from the truth as most standards work on SOA now recognizes alternative patterns such as subscribe-push and probe-match.

Service Oriented Architecture is an architectural paradigm and discipline that may be used to build infrastructures enabling those with needs (consumers) and those with capabilities (providers) to interact via services across disparate domains of technology and ownership. Services act as the core facilitator of electronic data interchanges yet require additional mechanisms in order to function. Several new trends in the computer industry rely upon SOA as the enabling foundation. These include the automation of Business Process Management (BPM), composite applications (applications that aggregate multiple services to function), and the multitude of new architecture and design patterns generally referred to as Web 2.0.

The latter, Web 2.0, is not defined as a static architecture. Web 2.0 can be generally characterized as a common set of architecture and design patterns, which can be implemented in multiple contexts. The list of common patterns includes the Mashup, Collaboration-Participation, Software as a Service (SaaS), Semantic Tagging (folksonomy), and Rich User Experience (also known as Rich Internet Application) patterns among others. These are augmented with themes for software architects such as trusting your users and harnessing collective intelligence. Most Web 2.0 architecture patterns rely on Service Oriented Architecture in order to function.

When designing Web 2.0 applications based on these patterns, architects often have highly specialized requirements for moving data. Enterprise adoption of these patterns requires special considerations for scalability, flexibility (in terms of multiple message exchange patterns), and the ability to deliver these services to a multitude of disparate consumers. Architects often need to expand data interchanges beyond simple request-response patterns and adopt more robust message exchange patterns, triggered by multiple types of events. As a result, many specialized platforms are evolving to meet these needs.

Enjoy~


Thursday, November 01, 2007

LiveCycle's new face?


Charlton Barreto and I have been working hard on some new collateral for LiveCycle in the context of SOA and enterprise architecture.

The work has been stressful and resulted in some behavior patterns most often associated with those who still think COBOL is cool. Nevertheless, stay tuned for some really new stuff on SOA.

Photo courtesy of Andre Charland (Nitobi).

Monday, October 22, 2007

Enterprise Mashups, SOA and Web 2.0

For the O'Reilly book Web 2.0 Design Patterns, co-authors James Governor, Dion Hinchcliffe and I have done a lot of research on the relationships between SOA and the core patterns of Web 2.0 such as mashups. Charlton Barreto has written a great post on this topic here and I also recently gave a keynote for the International Conference of Service Oriented Computing on this relationship. The presentation is here - please feel free to poach any slides you want and claim them as your own.

Nevertheless, until the book comes out, the full depth of this relationship has probably not been explored in detail in a publicly available format. Mashups rely on SOA infrastructure. Mashups are a specialized type of client that consume two or more services however there is more to the relationship. Other aspects are the adoption of the core MVC (Model-view-controller) pattern and the ability to allow users to make their own graphical representation available. These are common traits amongst the best mashups.

My friend Stephan Andreasen of Kapow (who also shares an interest in good wines), has probably done some of the greatest work in this realm too.

Service Component Architecture podcast

Network World recently interviewed me regarding recent developments in the OASIS Service Component Architecture (SCA) and why it is important to enterprise SOAs. The interview was conducted by Network World’s New Data Center Editor Beth Schultz.

Network World
Panorama Podcast: SOA’s ready-made architecture model

iTunes:
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=220244986

MP3:
http://podcasts.networkworld.com/panorama/102207pan-soa-adobe.mp3

Friday, October 19, 2007

How to install and run Adobe LiveCycle Data Services ES 2.5.1 on Mac OS X

This post outlines step-by-step instructions to get the latest Adobe LiveCycle Data Services ES (formerly Flex Data Services) running natively on a Mac. Okay – before you get excited, Adobe does not support this but I did some tinkering around with JBoss 4.2.1 GA and Adobe LiveCycle Data Services ES 2.5.1 and got it running natively on Mac OS X. Below is the screenshot in Safari.



Before you read how to do this, please understand a few things. First, Adobe LiveCycle Data Services ES is not supported on Mac OS X. In fact, we do not even release it (but don’t worry, it is not hard to install). If you do not know what LiveCycle Data Services ES is, it used to be called Flex Data Services. It is now part of the LiveCycle Service platform and has lots of great features. It has a really cool server component that can do wicked messaging stuff to round trip between a J2EE environment and Adobe Flex, AIR, HTML or AJAX applications.

Why? I ported this over and posted this as a result of Adobe MAX 2007 in Barcelona. Macs were everywhere. At JavaOne and MAX, I suspect that about 50-60% of the developers are now using Macs. We used Macs in our hands-on training rooms and they got taken up first.

Here are the full instructions for getting LiveCycle Data Services ES running on a Mac. Please don’t complain if it doesn’t work. We don’t support it (currently -- but if you’re interested tell me and I’ll work on product management to see if we can get it supported) and we’re on our own for now. Here are the steps:

1. Go to JBoss.org and download the JBoss 4.2.1GA release. Unzip it somewhere (I put it on my desktop).

2. Grab a terminal and navigate to the /bin and enter “sh ./run.sh” as shown below. Note – you must run it with sufficient privileges. If you have trouble try entering “sudo sh ./run.sh” and you will be prompted for the SU password.



3. Grab Safari and go to http://localhost:8080 to verify it works. You should see a screen welcoming you to JBoss app server.

4. If it worked, stop the application server by going to the /bin and typing “sh ./shutdown.sh”, then hit enter. Or, you can simply put the cursor in the shell and hit “Control-C”. The latter is not recommended but it works.

5. Go to http://www.adobe.com/products/livecycle/dataservices/ and follow the steps to download LiveCycle Data Services ES version 2.5.1. Make sure you select the AIX version. When you finish downloading it, click the file and install it. (note: it does install even though Adobe does not claim it installs). It will create a directory on the Mac at /Adobe/ as shown below.



6. Now the important part. Expand the LiveCycle Data Services ES 2.5.1/resources/security/tomcat/ directory then copy the <lcds_install_root>/resources/security/tomcat/flex-tomcat-common.jar and <lcds_install_root>/resources/security/tomcat/flex-tomcat-server.jar into the jboss_root/server/default/lib folder of your JBoss install. This will allow custom authentication to work.

7. From the same location, copy <lcds_install_root>/resources/security/tomcat/context.xml to your JBoss under the WEB-INF directory or adjust an existing context.xml to add the <valve>. You’ll have to open the context.xml files to compare them. Copying works best if you have a fresh install of JBoss.

8. Expand your <lcds_install_directory> and copy the following files:
flex-admin.war flex.war samples.war

9. Paste those samples in the <jboss_install_directory>/server/default/deploy directory.

10. Restart JBoss as described above (Step 2). Get your browser and go to http://localhost:8080/samples and you should see this:



Now try the samples. If they work you have succeeded! Congratulations.

Running it on a Mac, I noticed several advantages. First, the start up time is really fast -- it started in 28 seconds. For contrast, at MAX 2007 in Barcelona, the same software on a PC with 2 GB RAM took about 1:35 to start. I have 4 GB of RAM on an Intel Core 2 Duo machine so it gives it a small advantage.

Enjoy! Let me know if you thought this was cool.

Thursday, September 27, 2007

Service Component Architecture? I am a HUGE fan!

The OASIS work on Service Component Architecture really fills an important niche in the pragmatic side of SOA. It is probably the most concrete and pragmatic work for companies to use when taking real steps towards SOA nirvana. SCA is composed of a set of specifications that are very closely aligned with and build on the OASIS Reference Model for SOA.

Imagine this scenario. Your CTO/CIO comes back from some conference and blurts out, "We have to do SOA. All the cool companies are doing SOA!" As an architect/developer the question looms: "What does this really mean?. Sure you can use the abstract Reference Model as a basis for an intelligent conversation on SOA but organizations really need something more concrete to take steps in the real world.

SCA is your answer. The work, originally from the Open SOA Alliance, is now under the auspices of OASIS. SCA is a set of related specifications which describe a model for building applications and systems using a SOA. It is based on business functions being provided as a series of services, which are assembled together to create solutions that serve a particular business need. SCA describes how services are based on a set of related business functions on two levels, one abstract of the actual binding. This is highly advantageous in order to preserve the lexicon of service definitions independent of the specific bindings used.

SCA extends and complements prior approaches to implementing services. Extensions include a programming model for building applications and systems based on open standards such as Web services as well as specific programming languages. The models should be highly effective for business stakeholders and technical stakeholder to align and describe services at various levels of abstraction including their purpose, interfaces and capabilities.

It's important to note that SCA is actually expressed as a group of related specifications, ranging in levels of abstraction from mid-level models to concrete bindings to several specific programming languages (Java and C++ were first).

Adobe has recently joined this effort within OASIS. The work is very relevant to our service oriented platform (LiveCycle Enterprise Suite or LC ES) architecture. In fact, many of the core tenets of SCA assembly have been inherent in LiveCycle ES's design for a while. We use many concepts similar to the service descriptions within the registry-repository component of LiveCycle ES. This allows people to use tools like the LiveCycle Designer and Workbench to assemble services into functional processes and aggregate applications.

I am looking forward to participating in this great work done by IBM, BEA, Oracle, Fujitsu, Hitachi, Red Hat, SAP, TIBCO and many others.

Thursday, September 20, 2007

SOA Anti-Patterns: Service Composition and Composite Applications!

FACT: Service Composition is not SOA. It is an anti-pattern of SOA. The same goes for Composite Applications.

I feel like I should have titled this post “The Emperor has no clothes: Part 16” as I have seemingly made a career by challenging the status quo. This post may be a bit of a rant but make sure you read it before passing judgment.

The SOA community has once again used poor judgment in terms of coining titles for aspects of SOA, namely Service Composition and Composite Applications. If these are truly built on an SOA infrastructure, most of them are in fact Service Aggregations and Aggregate Applications. Let me explain where the terms come from and what they really mean.

Composition and Aggregation are both types of Binary Relationships. They are also both specializations of the “whole-part” pattern, a pattern in which a whole “thing” has parts. In both cases, the Whole (in this case the so called Composite Applications and Service Compositions) rely and cannot exist without the Part(s) (the services). There are very subtle yet concrete differences between how Composition and Aggregation work though. The main difference is that in aggregation, the parts can exist without the whole. Wikipedia discusses aggregation (http://en.wikipedia.org/wiki/Object_composition#Aggregation):

“Aggregation differs from ordinary composition in that it does not imply ownership. In composition, when the owning object is destroyed, so are the contained objects. In aggregation, this is not necessarily true”

Composition (as defined by UML) is a special type of relationship where the part and the whole are inextricably linked. In short, the Whole IS MADE UP OF one or more Parts. If the Whole does not exist, neither can the Parts and their life cycle is tied directly to the life cycle of the Whole. The UML composition relationship is depicted below.



Aggregation is a different animal. In an aggregate binary relationship, the Parts may exist without the Whole and be used by more than one “thing”. The Whole CANNOT BE MADE UP OF the Parts. The UML aggregation relationship is depicted below.



Aggregation is akin to how services are utilized within an SOA environment. Services are not contained within the service consumer, services are independent entities within an SOA environment and “consumed” by the consumer. Services can therefore exist without the consumer being present, the opposite of a composition binary relationship. In fact, both services and consumers are usually considered first class entities within an SOA environment as commonly depicted amongst the SOA community. The UML relationship can be depicted below. Note this one is abstract of any stereotype such as <> or <> but these could be added. Consider this more of an existentialist binary relationship.



Given one of the core goals of SOA is the ability to “re-purpose” services amongst several consumers, it would be highly illogical (and an “anti-pattern” of SOA) to tie a service’s life cycle to one single consumer and to constrain that service to exist only within the consumer. That is in effect the pattern SOA strives to avoid. Note that once again, I have changed terms slightly. The term “re-purposed” has been used instead of “re-used”. Services that are re-used only by one consumer do not tend to offer huge advantages other than reducing dependencies and creating agility buy cleanly decoupling the consumer from the core functionality offered via the service.

Business Process Management (BPM), Service Aggregation and Aggregate Software Applications are all specialized types of service consumers. In all three cases they consume services but are not made out of services. The services exist without the consumer.

I am not confident that the industry will change but if you think this makes sense, please take a pledge to start at least making this distinction.

Thursday, July 12, 2007

Adobe on AIR tour 2007 Vancouver. Ted’s Porsche upgrade / Nitobi rocks da house!

Friggin Awesome! Sharks with Friggin laser beams!! A jam session in a sauna?

The 2007 Adobe on AIR Bus Tour is now on its third city stop (Portland). This tour will keep the bus driving all summer long so check it out when they come to your town. This is one show you don’t want to miss. It reminded me of my old rock and roll days touring in a metal band. Of course there are some differences.

First – the guys on the bus play Guitar Hero rather than real instruments. Kind of cool given the instant gratification but as an accomplished musician (you can download my latest music for free here), I couldn’t bring myself to try it. Besides, you need long hair to really be a guitar hero right? I seemed to have thought so back in the 1980s (yes - that is me on the left):



Second – they don’t have to lug Ampeg 8x10 cabinets, Marshall Stacks, and drum kits up three flights of stairs. Trust me – this is a good thing.

They also have bloggers and other new media rather than traditional paparazzi. The media shape of the world has changed forever. This is also a good thing.

Last night the bus stopped in Vancouver, my home town. The venue was pretty surreal. We were in a greenhouse on the third floor of a downtown bar. I am not sure what rocket scientist built this without air conditioning, but last night was very hot. Finnish sauna makers should have been there to take notes.

The crowd was awesome! Vancouver developers and architects came out in droves and stayed for the entire five hours. Even the girls at the bar got into the act. Here is one wearing a Nitobi sticker.



Before the event, fellow Porsche owner and Adobe Evangelist Ted Patrick took me up on my offer to let him drive my Porsche 911 Twin Turbo with all the Ruf accessories. As you can see by this photo, Ted now wants to upgrade his Boxster. Ahh – there is no substitute! Non-Porsche owners will not understand this.



Anyways, the crowd on hand were awesome! Here is a shot from halfway back when a ton of people still could not get in the room. Standing room only. Mike Chambers, Kevin Hoyt, and Mike Downey all gave top-notch presentations which the developer crowd loved. Being on last, I was worried that there was going to be no way this crowd would stay here five hours but they did.



Then Andre Charland got up and blew everyone away. Nitobi's two demos and code samples include a Mac style dock with magnified apps built in AIR and a SalesForce.com offline AIR application with synch capabilities. The scary thing is both of these were written in so few lines of code. Andre is a genius and has the ability to consistently come up with clever little apps with his cohorts James, Alexei and Dave.

I am actually very surprised that Nitobi still exists as a stand alone company. I personally think they are the #1 acquisition target in the tech sector today. Profitable, on the leading edge, four evangelists and probably the coolest corporate culture in the industry ('Dre claims he got in 60+ days in Whistler last season ;-). DISCLAIMER: I am on the Advisory Board of Nitobi and have a financial interest. In the interest of transparency, I am following Redmonk's lead on my blog and disclosing any conflicts of interest to help readers come to their own conclusions.

Andre then proceeded to have several beers and make funny faces in front of cameras while showing off his new iPhone.



He was immediately joined by others:



Eventually even Ross Ladell (Blast Radius) and Adobe's own Suzanne got into the fray:



I'll leave it to your imagination what happened after a few more drinks in the hot greenhouse.

Anyways, I went on last trying in vain to measure up to the others and managed to squeak out a 20 minute summary on Adobe's technology platform architecture, showing its relevance to Web 2.0, SOA etc. As promised, the slides are available here. I only presented the first 15 or so due to time, but I will be recording a session with these later in the month for public consumption.

Friday, May 04, 2007

Web 2.0 Definition? What is the Web 2.0?

I have been writing a lot lately for an upcoming book on the topic of Web 2.0 with James Governor and Dion Hinchliffe for O'Reilly. During the process, we have done an amazing amount of research in an effort to quantify some of the patterns surrounding the concept. The work was actually quite intense and started with examining a single table put forth by Tim O'Reilly. The table illustrated examples of what was web 1.0 vs. web 2.0. Many people have struggled to define and understand "Web 2.0" At this point, defining it probably won't happen due to the fact that there are so many differences in what people think it is, however, anyone can mine it for knowledge. I personally don't see this as a problem since there seems to be a lot of consensus surrounding what is and is not web 2.0. While definition has possibly slipped away, the ability to share the collective knowledge on the subject has not. The knowledge of web 2.0 can be caught and expressed in architectural patterns and models. This blog post is a teaser of the upcoming book on that exact subject.

So what are "Patterns"? A pattern is a repeatable solution to a frequently occurring problem. The value of patterns is that it captures the solution knowledge independent of the implementation which then allows the pattern to be re-applied to other instances of problems in different contexts. An example of a pattern is to note the collaborative tagging (A.K.A. "Folksonomy") and commenting patterns on Flickr, then realize that the same mechanism can be used for video, audio, scientific research, news articles etc. Entrepreneurs in general should be very interested in this book. New start up ideas will be plenty abound.

We started with this diagram:



From each of these examples, patterns were distilled from the instance. The methodology left us with a huge collection of patterns that are documented and can be used to compare the old way to the new way. From these patterns, we were able to create a model based on further abstracting the main concepts required to fulfill the patterns. The model itself is abstract but from the model we were able to create a reference architecture for developers and architects. The idea is that the reference architecture is abstract of all technologies, implementation detail yet presents a great technology component view that can be used to help guide architects and developers as they build their applications.




The value of this methodology is that anyone can take the reference architecture and build their own specialized architecture from it. The model is simple and reflects abstract concepts that are present in most of the patterns. So what does the model look like and what is different? The model is shown below:



The model is definitely different than the old internet in a number of ways. In order to reflect the capabilities necessary to fulfill the patterns mined form Tim's examples, developers need to extend the basic client server model. Instead of a simple "server", the Services Tier of the model reflect the core tenets of Service Oriented Architecture, itself a a core pattern of Web 2.0. SOA is a pattern that can be used to match needs and capabilities under disparate domains of ownership. In this context, SOA is independent of any specific implementation or technology family such as web services and aligned with the abstract definition in the OASIS Reference Model for SOA. SOA allows "capabilities" to be offered for consumption to potential consumers on a common fabric. The common fabric is defined in terms of "Reachability and Connectivity", often implemented by using common standards and protocols. The concept of web 2.0 as an open platform relies on these open standards and technologies to function. Work such as the Service Component Architecture will rely on this type of infrastructure to exist in order to work.

The services tier offering these services is necessary to fulfill many patterns. To deliver a Rich User Experience (RUE), the capabilities must be leveraged to add more depth to interactions between users. To enable people to build mashups or offer Software as a Service (SaaS), the services tier must beliver the capabilities whilst abstracting the client from how the capabilities are being fulfilled.

The the middle tier of Capabilities and Reachability, we have seen huge changes since the first iteration of the internet. The development of Web Services standards and new data serialization forms such as XML to supplement the simplistic HTTP and HTML model form the first internet are necessary to fulfill the promise of the first iteration of the web. Guys like Bob Sutor, David Orchard, Marc Goodner and Eric Newcomer have all been working on these new standards and protocols for a long time. Why? They are absolutely necessary for Web 2.0. The Web must be open and mashable (new word??) to enable the patterns.

Additional patterns beyond simple "Request-Response" are necessary to fulfill core patterns like the "Synchronized Web". This latter pattern being used a lot for online gaming, collaborative applications and other synchronous architectures of participation. We have seen the rise of AJAX as an asynchronous model and various other mutations to make the patterns reality. Models for interaction include Probe and Match, Request-Response, Subscribe-Push, Synchronized, Asynchronous and more.

On the top side of the model, the old notion of "client" has been widened to become a "Client Applications/Runtimes". The purpose of this is to perform client duties and prepare the ultimate user to connect to the web. We noted that there is a new entity above the client. This entity is the User. The user is now a core part of the model for the internet and vice verse. Users are involved is so many patterns it would be difficult to ever devise an inclusive list. The Collaborative Tagging pattern ("Folksonomy), Collaboration-Participation Pattern, Rich User Experience Pattern, Semantic Web Patterns, Synchronized Web Patterns, Declarative Living and many others all include the notion of the user. Note that 'users' are not limited merely to humans but may include applications or other agents.

Some more about the model? This model can be used as a pattern between any two entities on the web. It is not about simply making one model for a platform of all interconnected devices. The model can be used in Peer to Peer patterns (one peer has a capability that gets consumed by another peer using protocols like BitTorrent via services for the ultimate benefit of a human actor) or other patterns like the Web Services * architecture, reflected in a great book by Chris Kurt.

Note that we do not consider the model to be the one single model that forever defines Web 2.0. It is simply "a" model which people can use, even if they disagree with it. If you disagree, you still have a model to use as a point of reference to describe your disagreements.

The reference architecture was presented during a recent session at Web 2.0 in San Francisco but I am not going to repost it here just yet. It will be the subject of another entry. In true Web 2.0 style, the book will have a sister website that allows anyone to collaborate and contribute to the set of patterns. This will be announced when the book is published.

The list of patterns identified to date is as follows:

Adaptive Software (software that gets better the more it gets used)
Asynchronous Particle Exchange
Collaboration Participation
Collaborative Tagging
Declarative Living
Mashup
Persistent Rights Management
Rich User Experience
Semantic Web
SOA
Software as a Service
Synchronized Web
Tag Gardening
...

Expect this list to grow as the work continues and others start contributing patterns. Note that Rich Internet Applications (RIA's) use a combination of patterns (RUE, Mashup, etc). Patterns themselves may be combined and used together.

Ahh - back to work..TGIF!!!

Friday, March 23, 2007

Adobe SOA platform launches Data Services

Architects, Flex/Apollo/LiveCycle/Java Developers take note. Adobe® LiveCycle Data Services 2.5 has just been released on Adobe labs for Windows, Linux, Unix as well as a cross platform java installer. Adobe has been a pragmatic adopter of SOA for years and this release shows engineering excellence and forethought. LDS is the next generation of Flex Data Services.

The name change reflects an important expansion in the use of these valuable services. In addition to serving the needs of both Flex and Ajax developers, LiveCycle Data Services will provide enhanced integration with Adobe’s other LiveCycle server products for document and process management, enabling business to create new ways to engage and reach customers.

Most people might think of SOA as only request-response. This is not the only pattern for service interaction within SOA and there are many others such as subscribe-push, multicast, probe and match etc. LiveCycle Data Services is a J2EE server that fulfills many

The feature set of LiveCycle Data Services 2.5 includes:

  • A new Flex SDK (which will be released currently with Data Services 2.5), which includes updates the client-side Web Services library.
  • Server-side PDF generation capabilities for RIA applications generates properly formatted PDF documents that include graphical assets from Flex applications, such as graphs and charts.
  • Runtime configuration of data destinations in Data Services eliminates the need for a compile-time dependency between clients and the Data Services server configuration.
  • Support for WSRP portal deployment of Flex applications, which makes it easy for developers to deploy a Flex application as a portlet in a portal server without having to do any portal specific programming.
  • Per Client Messaging quality of service (QoS) allowing Flex clients to select custom data access policies for real- time data.
  • Ajax Data Services, enabling Ajax applications to take advantage of the data management and messaging capabilities available in Data Services.
  • The Flex-Ajax Bridge (FABridge), which is a small library that can be inserted into a Flex application, a Flex component, or even an empty SWF file to expose it to scripting in the browser without any additional coding.
  • Improved off-line message queuing, supporting future Apollo development, which allows Flex applications using Data Services to queue outbound messages locally when the client is offline and manage exactly what is sent to the server upon reconnect.
  • Groundwork for future Apollo application support, including a local data cache that enables developers to cache client data requests and data changes to the local file system for later retrieval when an application resumes.
  • RTMP tunneling (RTMPT) that allows the use of the RTMP protocol in Data Service applications to traverse firewalls and proxies that currently prevent direct RTMP client connections to the server.
  • A new SQL adaptor, which dramatically simplifies the development of applications using Data Management Services without having to write any server-side Java code.
  • A new JSP Tag Library that enables MXML and ActionScript code to be embedded into a JSP page providing an easier entry for J2EE developers to Flex programming.
  • Several important enhancements to core Data Services performance and scalability.

LiveCycle Data Services 2.5 includes the following Web Application Archive (WAR) files:

  • flex.war - The primary Flex WAR file: use this as a starting point for building your LiveCycle Data Services application.
  • samples.war - Sample Flex applications.
  • inventory.war - Data Management Service - Ajax sample application
  • flex-admin.war - Simple administration and monitoring application.