I've been reading a lot about SOA's lately, but most of the content is SOAP-related and has a lot of "bureaucratic" stuff that belongs to C#/Java systems. Honestly, i think that such bureaucracy, specially SOAP, is a pain in the ass. So, i'm curious, can a SOA be designed with REST?
Right now in by Ruby applications i make all my controllers RESTful. My web interface (forms, etc) make GET/POST/PUT/DELETE requests to the core, which is a REST webservice. All other systems that use the core make RESTful requests to it. Is this a SOA?
At a high Level the answer is Yes, however not completely.
SOA requires thinking about the system in terms of
Being able to compose new higher level services or business processes is a basic feature of a good SOA. XML, SOAP based Web Services and related standards are good fit for realizing SOA.
Also SOA has a few accepted principles - http://en.wikipedia.org/wiki/Service-oriented_architecture#Principles
A SOA based architecture is expected to have Service Definition. Since RESTful web services lack a definitive service definition (similar to wsdl), it is difficult for a REST based system to fulfill most of the above principles.
To achieve the same using REST, you'd need to have RESTful Web Services + Orchestration (possible using some lightweight ESB like MuleESB or Camel)
Please also see this resource - From SOA to REST
Adding this part as clarification for below comment -
Orchestration is required to compose processes. That's what provides the main benefit of SOA.
Say you have a order processing application with operations like -
Initially you created a process (using BPEL) which uses these operations in sequence. You have clients who use this Composed Service. After a few months a new client comes who has tax exemption, then instead of writing new service, you could just create a new process skipping the addTax operation. Thus you could achieve faster realization of business functionality just by re-using existing service. In practice there are mutiple such services.
Thus BPEL or similar (ESB or routing) technology is essential for SOA. Without business use, a SOA is not really a SOA.
Cross posted on my personal blog - http://blog.padmarag.com
Also check this new resource I came across - REST based SOA