Tool of the Week - Musings on SOA/Micro-Services
The author's views are entirely their own (excluding the unlikely event of hypnosis) and may not always reflect the views of Moz.
Cue scene from The Departed
Frank Costello: [while eating crab] Do you know John Lennon?
Billy Costigan: Yeah, sure, he was the president before Lincoln.
Frank Costello: Lennon said, "I'm an artist. You give me a fucking tuba, I'll get you something out of it."
Billy Costigan: [sarcastically] Well I tell you Mr. Costello, I'd like to squeeze some fucking money out of it.
Frank Costello: Smart mouth. Too bad. If you'll indulge me...
This week's tool of the week is going to be a little different. Instead of focusing on a particular piece of software we're going to be looking at a trend I've noticed in web development that many emerging projects seem to be employing called Service Oriented Architechture (SOA).
Wikipedia describes SOA as "an IT infrastructure which allows different applications to exchange data with one another as they participate in business processes. The aim is a loose coupling of services with operating systems, programming languages and other technologies which underly applications."
The trend I'm noticing is that many "micro-services" are popping up that allow developers to integrate crucial "components" onto their own site through a common API (usually accessed via javascript). An offhand example of this type of micro-service is Disqus.
Disqus provides a comment system. If you have a web site, you can include a javascript helper that will magically give your users the ability to submit feedback for any given page. The advantage of this approach is obvious as it significantly decreases the amount of time it takes to develop and maintain a comment system.
So what right? Many of our more tech-savvy readers are surely familiar with dozens of other services that provide similar features. The move toward "the cloud" isn't exactly a new concept, so why spout out another piece of blog fodder about building sites/mashups in a distributed manner? Well my reply is simply: Pizza.
The other day I was watching The Departed for the umpteenth hundredth time and browsing the internet. I came across a really cool ruby script that allows you to connect to the Domino's Pizza website and order a pizza. All at the push of a button, with zero human interaction. This video will illustrate the end result of running such a script:
After watching the video I looked at my television and caught the following dialogue which could help put the idea I am going to try and convey into an SEO perspective:
Billy Costigan: Frank, how many of these guys have been with you long enough to be disgruntled, huh? Think about it. You don't pay much, you know. It's almost a fuckin' feudal enterprise. The question is, and this is the only question, who thinks that they can do what you do better than you?
The question that SEO's should be asking is: Who thinks that they can rank better for what you do better than you?
You don't have to put time into developing an international chain of Pizza franchises, but if you can rank sites (purely hypothetical for the sake of discussion) with keywords like 'pizza delivery' and help Domino's sell pizza, you could possibly make a fair amount of money. Especially if you can help them reach sales figures like Papa John's. I'm not a lawyer, so please don't take this as advice, but if someone helped me with a billion in sales, I'd let them keep whatever they could take as long as I got mine.
Billy Costigan: Hey, you fellas come from Providence?
Providence Gangster #2: Isn't any of your business where we come from, is it, now?
Billy Costigan: Fuckin' delivering cannolis or something?
All this talk about pizza is one thing, but what about something more realistic or diverse?
Well there are plenty of great services out there that you can promote through the use of affiliate links.
37signals, is a really cool company that offers some really cool products. SEOmoz uses their Campfire application for group talks, link sharing, and internal company communication. Being able to say something once to a room beats having to repeat yourself over and over again via IM.
37signals recently started an affiliate program where they offer users who promote their products up to $75 per customer referal. Signing up is easy, you can do so here: https://affiliate.37signals.com/affiliate/
Once you sign up you get a nifty link like this one (WARNING THIS IS AN SEOMOZ AFFILIATE LINK. YOU DON'T HAVE TO CLICK IT I'M PUTTING IT HERE AS AN EXAMPLE): http://www.campfireNOW.com/?referrer=SEOMOZ
A service like this offers far greater flexibility with keywords and could be much easier to rank for than "pizza delivery". An added bonus is that Campfire (along with all 37signals products) comes with a REST API, that you can read about here: http://37signals.blogs.com/products/2007/09/tinder-campfire.html
With a little clever engineering, a developer could produce an entirely new niche product based on the foundation and infrastructure that makes up Campfire.
Frank Costello: I don't want to be a product of my environment. I want my environment to be a product of me. Years ago we had the church. That was only a way of saying - we had each other.
Developing apps on a Service Oriented Architechture doesn't always have to be about profit. I think it is a natural evolution for software to be developed in this manner, especially when faced with issues such as scaling and the threat of net neutrality.
The web has seen an explosion in the amount of people that use it on a day to day basis. A lot of those people are technically inept and couldn't care less about how the internet works. They just care that it does.
For someone like me however, this would be unacceptable. Does the possibility of something like this upset me? Yes. Am I going to scream and cry about it? No.
Instead I will propose that perhaps a method of combating a model like the one in the above chart would be to break apart each of the services into smaller fragments that are layered across all tiers. Sites would become a sum of very many other wholes, all of which are purposefully non-equidistant.
Take EBay for example. For it to work the way that it does now, Paypal would have to exist in the same tier.
Let's take this example further and imagine how Disqus could fit into this architecture. It has a fairly large user base already (at the time of writing, about 4,000 blogs use it), but it certainly is not at the scale Google is. It would most likely fit into the bottom tier.
Let's say that one day Google decided to farm out the commenting system for blogger entirely to Disqus. This starts to present an interesting problem because partial middle tier content becomes available to bottom tier users. This sudden boost in popularity would certainly propel a site like Disqus into the appropriate tier. But lets also assume that for some strange reason Disqus is not getting paid for any of this and begins having problems scaling (like Twitter). Disqus developers and business partners get tired of this all work and no pay and decide to open source their software. Suddenly lots of Disqus clones start popping up around the internet (competition is another aspect of free markets... and a healthy one, in my opinion). Blogger gets tired of all the outages and implements a round robin solution where comments are replicated across a number of these Disqus clones.
This is an elementary approach to a very complicated problem, but hopefully it will help illustrate that by breaking up a site into smaller services across multiple tiers, site architects can help make it impossible for any telecommunications monopoly to uphold a Terms of Service Agreement with its customers.
Another happy byproduct of this line of thought is easier to maintain code / moving parts for developers.
Madolyn: Why is the last patient of the day always the hardest?
Billy Costigan: Because you're tired and you don't give a shit. It's not super-natural.
Developing "micro-applications" that serve niche purposes is a wise strategy for any software developer from both a technical and business angle. Smaller is better, less is more. Genius is doing a common thing uncommonly well.
Issues with branding, trademarks, and class warfare can all arise by incorporating these development tactics, so any input on these subjects is welcome as well.
I'll leave you with that and these questions:
What micro-services (besides Twitter) are you currently using or are you insterested in?
Are you working on any type of SOA app?
Can you think of any SOA apps that you would like to see?
Are you currently earning any type of income by ranking sites with affiliate links?
Are you currently earning any type of income by ranking sites that provide or use white label services?
Trickle-down theory in an information economy - What works? What doesn't?
Please share.
Comments
Please keep your comments TAGFEE by following the community etiquette
Comments are closed. Got a burning question? Head to our Q&A section to start a new conversation.