Nevertheless, while many architects believe that as an architectural style, REST is simpler and more straightforward that Web Services-based SOA, our research is turning up continued confusion over the principles of REST and how best to implement them. Everybody seems to get the basics—operate on resources at URIs with the four HTTP-centric operations GET, POST, PUT, and DELETE—but most people seem to miss the subtleties. Combine that confusion with the fact that you can do REST without SOA, the specifics of REST-based SOA are even more elusive, as we must pare down the essentials of both REST and SOA to understand the true nature of the combined approach. How, therefore, should we handle Service abstractions, contracts, and compositions – arguably, the essence of SOA – in a REST-based SOA world?

Where is the Service Abstraction?At the center of the SOA approach is the notion of a Service abstraction. REST resources are abstractions as well, but resources are abstractions of capabilities or entities on the server, which is not quite the same thing as a Service abstraction. In SOA, the Service abstraction supports Business Services, which represent flexible, business-centric capabilities. A Business Service may abstract multiple Service interfaces, where routing and transformation operations on intermediaries present a loosely coupled façade.

Most RESTafarians, however, don’t think at this level. They are thinking of clients (e.g. browsers) accessing resources at URIs which return representations. A representation is an HTML page, an XML file, a video, etc. The business context is lost in a sea of URI formats and Internet media types.

What RESTafarians often overlook is that the intermediary pattern is actually one of the core architectural constraints of REST. URIs need not point directly to resources; it is perfectly OK for an intermediary to resolve the URI into a physical endpoint. After all, that’s what DNS servers do!

From the SOA perspective, we can rely upon the intermediary to execute routing rules and transformations as necessary to support the business abstraction. Furthermore, we can establish and enforce the policy (as a part of our SOA governance framework) that the only allowed way to access resources is via endpoints on an intermediary. From the REST perspective, think DNS server on steroids: instead of simply resolving URLs to IP addresses, resolve any formal URI structure to physical resource endpoints by following a rich set of transformation and routing metadata.

Where is the Contract?At the technical level, a Service is a contracted interface or an abstraction of contracted interfaces. Web Services have contracts that comply with WSDL, but there’s no equivalent of WSDL for REST resources. True, resources have uniform interfaces that the four HTTP operations define, but simply knowing you can GET a resource or POST to a resource doesn’t tell you anything about what that resource is supposed to do. Accessing a resource does give you a representation of that resource, however. Representations can comply with standard Internet media types (formerly known as MIME types), but even the media type specification is insufficient to qualify as a contract.

Sun Microsystems tried to promote the Web Application Description Language (WADL) as a RESTafarian alternative to WSDL, but work on WADL has largely petered out now that Sun is part of Oracle. The point to WADL was more to stub out REST resources in Java than to provide an implementation-neutral contract language in any case.

Where, then, is the contract? Let’s look at a simple REST example: the simplest, of course, being the Web itself. Let’s say you are filling in a form on a Web page and then hit submit. Where is the contract?

CIO, CTO & Developer Resources

The form method is POST, and the POST data are the information that you filled into the form. The resource is identified by the form action URL. So far so good. Have you found the contract yet?

In this example, the contract is the Web form itself. The form specifies and constrains the POST data you may input, and specifies the form action, which is a hyperlink to the next resource. You browsed to the page with the Web form by following an earlier link or loading a URL for a resource that returned that Web page as a representation of that resource.

Remember, a REST application is a set of resources that return representations that link to other resources – in other words, hypermedia. One resource returns one or more representations (Web pages, XML files, etc.) that contain links to other resources, and it is those hyperlinks (and their associated metadata) that specify the application behavior.

While a Web page with a form is the simplest and most common example of how to contract POST data, we can generalize that form however we like, depending on what type of client we want to support. For machine-to-machine interactions, for example (that is, when the client is not simply a browser), the first resource may return an XML representation that provides a contracted interface to the client for POSTing to the linked resource. How your resource builds that representation is up to you.

In Web Services-based SOA we store the contract metadata in a centralized registry/repository. In REST-based SOA each resource is responsible for returning contract metadata either for itself or for any resource it hyperlinks to. As a result, we may not able to obtain contracts for resources we’re not (yet) able to access, but on the other hand, we can code our resources to dynamically generate contracts if we wish. In REST-based SOA, therefore, contract changes can be automated, where in Web Services-based SOA, contract change is a complex, manual process that requires rigorous governance.

Where is the Composition?The third core characteristic of SOA we look for is the ability to compose Services into applications. Such compositions might be orchestrations, when they have a pre-defined flow, or choreographies, when the order of steps in the composition is not determined ahead of time.

A REST application, of course, is an example of a composition of resources. From the SOA perspective, furthermore, a REST application is a workflow – that is, a composition with human steps. We can also consider such compositions to be choreographies, because the order of steps depends upon which links the user clicks. Users may click links in a different order every time they work their way through the application.

The question still remains: how do we create automated orchestrations in the REST world? The answer is simpler than it looks. In REST, everything can be a resource. Therefore, orchestrations can be resources as well. An orchestration resource might return a BPEL representation or a BPMN representation or perhaps a simplified representation of an orchestration that doesn’t have the baggage of either BPEL or BPMN. If anything, establishing a pre-defined orchestration is simpler than a hypermedia composition, because the orchestration logic is static, while with a hypermedia composition, the underlying resource logic may change the composition logic on the fly. Just because we don’t have to fix our application state transitions ahead of time doesn’t mean we’re not allowed to.

The ZapThink TakeOver the more than ten years ZapThink has been writing about SOA, we’ve fought the battle to explain what SOA really was, fighting the deluge of misinformation from profit-seeking vendors and ill-informed industry analysts. Fortunately, this time vendors aren’t trying to coopt REST to sell software the way they did SOA, to be sure, but the fact still remains that there is extensive confusion and misinformation about REST, just as there still is for SOA.

Mix the two together, therefore, and you’re just asking for trouble. But the effort is worth the trouble, for one simple fact: done right, REST-based SOA actually works. It paves a path to the agile architecture that we’ve been seeking since we first dipped our toe into the ocean of distributed computing. Of course, there’s a catch: the “done right” bit. The devil is in the details.

ZapThink will be providing far more detail on this topic over the next year, in our ZapFlash newsletters, in the next version of our LZA course, and in our Podcasts and at our events. Our new REST-based SOA module in the LZA course in particular breaks new ground and lays the groundwork for simpler, more successful approaches to SOA. Hope to see you at one of our events or classes soon!

Mr. Bloomberg’s articles in Forbes are often viewed by more than 100,000 readers. During his career, he has published over 1,200 articles (over 200 for Forbes alone), spoken at over 400 conferences and webinars, and he has been quoted in the press and blogosphere over 2,000 times.

Mr. Bloomberg is the author or coauthor of four books: The Agile Architecture Revolution (Wiley, 2013), Service Orient or Be Doomed! How Service Orientation Will Change Your Business (Wiley, 2006), XML and Web Services Unleashed (SAMS Publishing, 2002), and Web Page Scripting Techniques (Hayden Books, 1996). His next book, Agile Digital Transformation, is due within the next year.

At SOA-focused industry analyst firm ZapThink from 2001 to 2013, Mr. Bloomberg created and delivered the Licensed ZapThink Architect (LZA) Service-Oriented Architecture (SOA) course and associated credential, certifying over 1,700 professionals worldwide. He is one of the original Managing Partners of ZapThink LLC, which was acquired by Dovel Technologies in 2011.

Prior to ZapThink, Mr. Bloomberg built a diverse background in eBusiness technology management and industry analysis, including serving as a senior analyst in IDC’s eBusiness Advisory group, as well as holding eBusiness management positions at USWeb/CKS (later marchFIRST) and WaveBend Solutions (now Hitachi Consulting), and several software and web development positions.

At its core DevOps is all about collaboration. The lines of communication must be opened and it takes some effort to ensure that they stay that way. It’s easy to pay lip service to trends and talk about implementing new methodologies, but without action, real benefits cannot be realized. Success requires planning, advocates empowered to effect change, and, of course, the right tooling.
To bring about a cultural shift it’s important to share challenges. In simple terms, ensuring that everyone k...

Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every real-life scenario that a Kubernetes user might encounter? How do you leverage advanced scheduling techniques to shape and describe each scenario in easy-to-use rules and configurations? In his session at @DevOpsSummit at 21st Cloud Expo, Oleg Chunikhin, CTO at Kublr, answered these questions and demonstrated techniques for implementing advanced scheduling. For example, using spot instances and co...

Today most companies are adopting or evaluating container technology - Docker in particular - to speed up application deployment, drive down cost, ease management and make application delivery more flexible overall.
As with most new architectures, this dream takes significant work to become a reality. Even when you do get your application componentized enough and packaged properly, there are still challenges for DevOps teams to making the shift to continuous delivery and achieving that reducti...

Skeuomorphism usually means retaining existing design cues in something new that doesn’t actually need them. However, the concept of skeuomorphism can be thought of as relating more broadly to applying existing patterns to new technologies that, in fact, cry out for new approaches.
In his session at DevOps Summit, Gordon Haff, Senior Cloud Strategy Marketing and Evangelism Manager at Red Hat, discussed why containers should be paired with new architectural practices such as microservices rathe...

With the rise of Docker, Kubernetes, and other container technologies, the growth of microservices has skyrocketed among dev teams looking to innovate on a faster release cycle. This has enabled teams to finally realize their DevOps goals to ship and iterate quickly in a continuous delivery model. Why containers are growing in popularity is no surprise — they’re extremely easy to spin up or down, but come with an unforeseen issue.
However, without the right foresight, DevOps and IT teams may lo...

Kubernetes is a new and revolutionary open-sourced system for managing containers across multiple hosts in a cluster. Ansible is a simple IT automation tool for just about any requirement for reproducible environments.
In his session at @DevOpsSummit at 18th Cloud Expo, Patrick Galbraith, a principal engineer at HPE, will discuss how to build a fully functional Kubernetes cluster on a number of virtual machines or bare-metal hosts. Also included will be a brief demonstration of running a Galer...

DevOps is under attack because developers don’t want to mess with infrastructure. They will happily own their code into production, but want to use platforms instead of raw automation. That’s changing the landscape that we understand as DevOps with both architecture concepts (CloudNative) and process redefinition (SRE).
Rob Hirschfeld’s recent work in Kubernetes operations has led to the conclusion that containers and related platforms have changed the way we should be thinking about DevOps and...

In his session at 20th Cloud Expo, Mike Johnston, an infrastructure engineer at Supergiant.io, will discuss how to use Kubernetes to setup a SaaS infrastructure for your business. Mike Johnston is an infrastructure engineer at Supergiant.io with over 12 years of experience designing, deploying, and maintaining server and workstation infrastructure at all scales. He has experience with brick and mortar data centers as well as cloud providers like Digital Ocean, Amazon Web Services, and Rackspace....

"There is a huge interest in Kubernetes. People are now starting to use Kubernetes and implement it," stated Sebastian Scheele, co-founder of Loodse, in this SYS-CON.tv interview at DevOps at 19th Cloud Expo, held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.

Modern software design has fundamentally changed how we manage applications, causing many to turn to containers as the new virtual machine for resource management. As container adoption grows beyond stateless applications to stateful workloads, the need for persistent storage is foundational - something customers routinely cite as a top pain point. In his session at @DevOpsSummit at 21st Cloud Expo, Bill Borsari, Head of Systems Engineering at Datera, explored how organizations can reap the bene...

Eggplant, the customer experience optimization specialist, announced the latest enhancements to its Digital Automation Intelligence (DAI) Suite. The new capabilities augment Eggplant’s continuous intelligent automation by making it simple and quick for teams to test the performance and usability of their products as well as basic functionality, delivering a better user experience that drives business outcomes.

Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every real-life scenario that a Kubernetes user might encounter? How do you leverage advanced scheduling techniques to shape and describe each scenario in easy-to-use rules and configurations? In his session at @DevOpsSummit at 21st Cloud Expo, Oleg Chunikhin, CTO at Kublr, answered these questions and demonstrated techniques for implementing advanced scheduling. For example, using spot instances and cost-effective resources on AWS, coupled with the ability to deliver a minimum set of functionalities that cover the majority of needs – without configuration complexity.

Eggplant, the customer experience optimization specialist, announced the latest enhancements to its Digital Automation Intelligence (DAI) Suite. The new capabilities augment Eggplant’s continuous intelligent automation by making it simple and quick for teams to test the performance and usability of their products as well as basic functionality, delivering a better user experience that drives busin...

At its core DevOps is all about collaboration. The lines of communication must be opened and it takes some effort to ensure that they stay that way. It’s easy to pay lip service to trends and talk about implementing new methodologies, but without action, real benefits cannot be realized. Success requires planning, advocates empowered to effect change, and, of course, the right tooling.
To bring ...

Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every real-life scenario that a Kubernetes user might encounter? How do you leverage advanced scheduling techniques to shape and describe each scenario in easy-to-use rules and configurations? In his session at @DevOpsSummit at 21st Cloud Expo, Oleg Chunikhin, CTO at Kublr, answered these questions and de...

Conor Delanbanque has been involved with building & scaling teams in the DevOps space globally. He is the Head of DevOps Practice at MThree Consulting, a global technology consultancy. Conor founded the Future of DevOps Thought Leaders Debate. He regularly supports and sponsors Meetup groups such as DevOpsNYC and DockerNYC.

As you know, enterprise IT conversation over the past year have often centered upon the open-source Kubernetes container orchestration system. In fact, Kubernetes has emerged as the key technology -- and even primary platform -- of cloud migrations for a wide variety of organizations.
Kubernetes is critical to forward-looking enterprises that continue to push their IT infrastructures toward ma...

At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a ...

The use of containers by developers -- and now increasingly IT operators -- has grown from infatuation to deep and abiding love. But as with any long-term affair, the honeymoon soon leads to needing to live well together ... and maybe even getting some relationship help along the way. And so it goes with container orchestration and automation solutions, which are rapidly emerging as the means to m...

Today most companies are adopting or evaluating container technology - Docker in particular - to speed up application deployment, drive down cost, ease management and make application delivery more flexible overall.
As with most new architectures, this dream takes significant work to become a reality. Even when you do get your application componentized enough and packaged properly, there are sti...

Here to help unpack insights into the new era of using containers to gain ease with multi-cloud deployments are our panelists: Matt Baldwin, Founder and CEO at StackPointCloud, based in Seattle; Nic Jackson, Developer Advocate at HashiCorp, based in San Francisco, and Reynold Harbin, Director of Product Marketing at DigitalOcean, based in New York. The discussion is moderated by Dana Gardner, prin...

Skeuomorphism usually means retaining existing design cues in something new that doesn’t actually need them. However, the concept of skeuomorphism can be thought of as relating more broadly to applying existing patterns to new technologies that, in fact, cry out for new approaches.
In his session at DevOps Summit, Gordon Haff, Senior Cloud Strategy Marketing and Evangelism Manager at Red Hat, di...

In 2014, Amazon announced a new form of compute called Lambda. We didn't know it at the time, but this represented a fundamental shift in what we expect from cloud computing. Now, all of the major cloud computing vendors want to take part in this disruptive technology.
In his session at 20th Cloud Expo, John Jelinek IV, a web developer at Linux Academy, will discuss why major players like AWS, M...

Using serverless computing has a number of obvious benefits over traditional application infrastructure - you pay only for what you use, scale up or down immediately to match supply with demand, and avoid operating any server infrastructure at all.
However, implementing maintainable and scalable applications using serverless computing services like AWS Lambda poses a number of challenges. The a...

Microservices Journal focuses on the business and technology of the software architecture design pattern, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs.

Cloud computing budgets worldwide are reaching into the hundreds of billions of dollars, and no organization can survive long without some sort of cloud migration strategy. Each month brings new announcements, use cases, and success stories.