Hacker News new | past | comments | ask | show | jobs | submit login
SOA and the Tar Pit of Irrelevancy (2009) (nealford.com)
47 points by geezerjay on April 16, 2019 | hide | past | favorite | 30 comments



The bits about code vs doodleware hit hard for me. With a certain proprietary database that I did customer support for, the encouraged development path was doodleware. It was genuinely very nice if you were doing some toy project, but it quickly became unmanageable. The vendor was on their 2nd of (currently 3?) iterations of doodleware for this database, so the tooling for it was crap and would never get better as they would soon abandon it.

I have done in-depth analysis and refactors of dozens of these doodleware objects purely with vim macros. Portable gVim was literally the only thing I could get on the customer supplied Windows laptop to do this job. Export (through a semi-manual hack) dozens/hundreds of 10k line XML files, build a vim macro, cry, cross my fingers that the manual hack to replace the doodleware objects would work, cross them again that the objects weren't irreparably damaged.

Now I'm seeing doodleware on the rise in cloud platforms, making business process flows "easy". Connecting different services "effortlessly".


Service oriented architecture is alive and well in the form of ESB (enterprise service bus) (camel, mule, spring integration are examples). They’re also xml hell imo, that typically hit all the bad parts of xml; xsl, xslt, versioning, the idiotic half support for namespacing. No, no, not bitter at all :)


The essential quote is toward the end:

"The term SOA has been so co-opted by vendors trying to sell stuff that I think it will die off as a term."

I think it did! I definitely didn't remember what it stood for. (The author does provide a definition, but it's on the 25th time he uses the acronym :) )


The term is now “microservices”.


"let's refactor these sql statements as a stateless microservice"...

so we can service 500 users with between 10 and 100 requests a day.


Did it really die though? It seem to live on well enough in enterprise. Less popular now that Microservices are back in fashion, but still lurking around waiting for the pendulum to swing back in 2-8 years when we have had enough of microservices (again).

At least we improve on the paradigms on each iteration. Maybe one day one day both of them will be good enough to let us swing toward something new.


> Less popular now that Microservices are back in fashion

Other than the WSDL/BPEL nonsense, is there any difference between service-oriented architecture and microservices architecture?


SOA - service oriented architecture


Substitute SOA for Kubernetes et al and it reads perfectly well :)


I spent quite a while with SOA, but I find Kubernetes a little different.

To me, SOA is more about the implementation-- especially the old WSDL-driven part.

But Kubernetes is more about infrastructure. The applications are written in different styles and different languages. K8S is more like a platform than anything else, to me.


> To me, SOA is more about the implementation-- especially the old WSDL-driven part.

That was one of the tragedies of SOA. The S was meant to be service as in windows service but it was co-opted to be service as in web service.

Had it been called Daemon Oriented Architecture things may have turned out differently.

The same thing is playing out now with micro services.


> The S was meant to be service as in windows service but it was co-opted to be service as in web service.

That assertion makes no sense as SOA is a software architecture approach and the communication between services has no impact on the system's architecture.


Communication between services has a huge impact on system architecture. A web service is an RPC mechanism, whether it's SOAP, REST, CORBA or whatever, it's nothing new and didn't need a new name. SOA was supposed to be message driven, usually through an ESB or something similar, MSMQ was popular at the time.


Yeah. The basic idea is fine. (Don't write huge monolithic software blobs!) But the term was effectively coopted to be about a lot of specific heavyweight proprietary software and the heavyweight specs associated with them.


I'm not disagreeing but the reason SOA is more complex is that it does a whole lot more than "REST" microservices. It encompasses standardized protocols for transactions, faults, asynchronous services, auth, and more, in addition to payload typing and state. Such QoS dimensions aren't either considered in naive "REST" services at all, or at least not in upfront design (because waterfall sucks right?). Hence they're implemented for each service in an ad-hoc fashion, if at all. Implementing ad-hoc security in Docker containers (a technology proud of cutting ties with established ways of keeping eg OpenSSL lib up-to-date) in the "REST architectural style" (appealing to junior devs) and without transactions sure sounds like calling for trouble and acrueing technical debt like there's no tomorrow.


And also not disagreeing. While not an expert (thankfully!), it was very prescriptive and theoretically suited to the development styles of the time. As you suggest, microservices is more ad hoc and puts a greater burden on good architectural and operations practices which are more informally enforced.

But, net net, I put SOA in the same general bucket as ITIL and other associated practices of the time. They meant well but for most purposes they involved too much process and were ultimately too tied to big vendors trying to sell stuff.


> I'm not disagreeing but the reason SOA is more complex is that it does a whole lot more than "REST" microservices. It encompasses standardized protocols for transactions, faults, asynchronous services, auth, and more, in addition to payload typing and state.

"REST" microservices also do that, but they aren't bound to quasi-proprietary protocols and tooling.


How does "REST" handle coordinated transaction rollback/compensation over multiple heterogenous service calls? How is SOAP, XML, WS-*, AMQP proprietary?


> How does "REST" handle coordinated transaction rollback/compensation over multiple heterogenous service calls?

By "REST" I assume you're referring to non-SOA distributed systems which might happen to use REST or RPC-over-HTTP interfaces, and not the architecture style.

Assuming that, "REST" handles all those features by integrating services that support coordinated transaction rollback/compensation over multiple heterogenous service calls.

> How is SOAP, XML, WS-*, AMQP proprietary?

If you read what I said you'll notice that I explicitly said "quasi-proprietary protocols and tooling".


I fail to see how your post answers anything.


Unlike soa products (websphere/logic) it actually has some real world utility


Did you watch the linked talk? It sounds like he's calling for almost exactly the microservices world I live in today.


Having pre-dated SOA, been heavily involved in implementing SOA, and then watched SOA die on the vine, the overriding lesson was that technologists too often focus on syntactic coupling and completely forget about semantic coupling (by far, the harder problem).

For all it's highly proscribed, heavyweight, over-engineered approach, SOA could have succeeded if the focus of implementations been on the semantic coupling problem.

Sadly, I see little evidence that the majority of the current crop of technologists have learned this lesson (irrespective of the technology choices).

http://www.lhotka.net/weblog/SemanticCouplingTheElephantInTh...


Somehow they never even define "SOA". What?

As far as I know, SOA means "safe operating area", and I have no idea how the hell this pertains to anything they're discussing.

Google tells me SOA probably means "service oriented architecture" (or the "society of actuaries"), but geez.


> Somehow they never even define "SOA". What?

"SOA" means "microservices for Gen X'ers".

"Microservices" means "SOA for millenials".

I don't know what Baby Boomers called it.


> I don't know what Baby Boomers called it.

CORBA


OLTP


Yeah, it is Service Oriented Architecture.

The definition is written out in the final section of the linked page. These were originally separate blog posts, so I assume the author got some feedback on this and decided to spell it out finally.


Working on compilers, SOA to me means "Struct Of Arrays", which is a data layout format that is much more amenable to vector or GPU code than the "Array of Structs" representation that languages tend to guide you to implementing.


Thought this was going to be about Start-of-Authority records in DNS & was wondering it could possibly be irrelevant.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: