To Microservice or Not

This article reinforces what I have been saying for years: microservices are a big mistake, especially for developers who don’t understand distributed systems, high availability and observability. To be successful, they must be properly designed and implemented, unlike most of the copy-and-paste, we-don’t-need-no-stinkin-design development that is seen today.

From the article:

We engineers have an affliction. It’s called “wanting to use the latest tech because it sounds cool, even though it’s technically more difficult.” Got that from the doctor’s office, it’s 100% legit. The diagnosis was written on my prescription for an over-the-counter monolith handbook. From 2004. Seriously though, we do this all the time. Every time something cool happens, we flock to it like moths to a campfire. And more often than not, we get burned.

Scalable Microservices

Here is an excellent, in-depth discussion on creating scalable microservices.

In this article, we will look at microservices, not as a tool to scale the organization, development and release process (even though it’s one of the main reasons for adopting microservices), but from an architecture and design perspective, and put it in its true context: distributed systems. In particular, we will discuss how to leverage Events-first Domain Driven Design and Reactive principles to build scalable microservices, working our way through the evolution of a scalable microservices-based system.

Serverless Approach To Testing

Here is a thought provoking article on testing in a serverless environment:

Serverless architecture uses a lot of services — hence why some prefer to call the architecture “service-full” instead of serverless. Those services are essentially elements of an application that are independent of your testing regime.

An external element.

A good external service will be tested for you. And that’s really important. Because you shouldn’t have to test the service itself. You only really need to test the effect of your interaction with it.

Here’s an example …

Let’s say you have a Function as a Service (e.g. Lambda function) and you utilise a database service (e.g. DynamoDB). You’ll want to test the interaction with the database service from the function to ensure your data is saved/read correctly, and that your function can deal with the responses from the service.

Now, the above scenario is relatively easy because you can utilise DynamoDB from your local machine, and run unit tests to check the values stored in the database. But have you spotted something with this scenario? It’s not the live service — it’s a copy of it. But the API is the same. So, as long as the API doesn’t change we’re ok, right?

To be honest, I’ve reached a point where I’m realising that if we use an AWS service, the likelihood is that AWS have done a much better job of testing it than I have. So we mock the majority of our interactions with AWS (and other) services in unit tests. This makes it relatively simple to develop a function of logic and unit test it — with mocks for services required.

SOA Confusion — Practitioners versus Pundits

With the typical firm grasp of the obvious, the following quote appears at the top of a posting entitled “When all else fails, try SOA best practices“:

“We’re seeing a lot of people out there struggling with SOA, trying to do SOA,” said Ronald Schmelzer, senior analyst with ZapThink. “They are worrying about building services and running services. They are having to ask themselves questions. ‘Why am I doing this? What services do I really need to be building?’ They need methodology.”

Well and it’s no wonder given the various forums that SOA has on the Internet. The problem is, everyone has their own methodology with about 80% of it being identical to every other, 10% of it being somewhat different and 10% being absolutely useless. That is not much room for differentiation. In my reading of these different approaches, the difference appears to whether the methodology was created by an SOA practitioner or merely a self proclaimed pundit.

For a prime example of the chest thumping echo chamber of ego and useless opinion, take a look at the yahoo SOA ‘discussion’ group[warning, Yahoo login required to view content]. Here you have a handful of preening blovators who go on at great length about esoteric, impractical aspects of webservices and (sometimes) SOA. Endless rants about REST vs SOA, business services vs enterprise services, their out pet definitions of technology terms, on and on. When an unsuspecting non-blovator posts, there is a veritable feeding frenzy to see who can dissect the question and turn it into a rambling thread of gibberish and self promotion. Thus, the majority of the non-blovator questions go unanswered leaving the poster to think, ‘well if all of these smart people can’t come to a reasonable conclusion, then it must be really hard’. Run away from the pundit mosh pit!

This is not to say that there aren’t the occasional quality posts that provide some real value; there are. The problem is that there is so much noise that it is hard to find these nuggets. Just as there are some true practitioners you can go to to get quality information on a highly consistent basis. In my opinion, one of those (rare) individuals is David Linthicum. He consistently delivers the ‘here is what works and here is what doesn’t’ insights that I really appreciate. I just hope that this continues to be the case now that he is part of the ZapThink group.

Right, then there is Zapthink. You really want their website to be the good resource for SOA that it desperately wants to be but visitors are immediately put off by the newbie web design motif that makes it look like a pr0n site, circa 1998. Arrive at the site and you are greeted with: A horizontal scrolling banner, and vertical scrolling banner, an obnoxious flashing banner top center, a font that is about 3 sizes too small to be legible and no real information on the front page, only self promotional come ons. It is a disaster. When you get to the ‘content’ (most times behind a login) it is typically an excerpt that you then need to go to yet another web site to read the actual article. Tedious and unnecessary, especially since many of the linked article merely mention Ron Schmelzer name and some quip that he contributed.

So where does that leave those in search of quality information on SOA? Here are a few of my favorites:

The previously mentioned Real World SOA blog by David Linthicum
SearchWebServices Occasionally has some good postings in and amongst the vendor diatribesn
Steve Jones’ Service Architecture – SOA is worth a look, as wel
l
SOA and EDA Though I wish Jack would ditch the annoying snapshot preview popup
SOA Consortium Insights is updated infrequently, but the posting are typically info dense
The SOA Magazine tends to have good, in depth postings
Todd Biske’s Outside the Box has thoughtful posts on not just SOA but BPM and Enterprise Architecture in general
webservices.org can be a bit hit or miss, but you can usually pan a few nuggets away from the vendor annoucements and whitepaper-cum-advertising literature that you find there

Technorati Tags:
, , ,

Ajax and Accessability

sitepoint has an excellent posting on Ajax and Screenreaders: When Can It Work? With more and more sites resorting to Ajax-y interfaces (sometimes for questionable, buzzword compliance reasons), I have often wondered what the effect on the usability of these site is for those users who require screen readers to surf the web. In summary the author states:

Let’s face it, a great many AJAX applications (dare I say, “most”?) use this approach for its own sake, and don’t really benefit from it all — they could just as well use traditional POST and response.

I would even go a step further to call for a fundamental re-assessment of our priorities here. What we’re talking about is making dynamic client interfaces work effectively in screen readers, but maybe that was never the point. Isn’t the real point to make the applications themselves work effectively in screen readers?

Some may read this article and think, ‘meh, why should I care?’. I think that you should because a growing part of Internet users are (or are becoming) ‘senior citizens’ who may need a screen reader at some point. Why lock out a large part of your potential audience/market by succumbing to the need to chase the latest buzz? Besides, isn’t this the same sort of lesson in exclusivity that the ignorant ‘IE only’ sites are continuing to learn to this day?

technorati tags: , , , ,

SOAP Intentionally Obtuse

While reading through yet another article on SOAP vs REST, I came across a quote from Tim O’Reilly that confirms something that I always suspected about SOAP:

I think there are also some political aspects. Early in the web services discussion, I remember talking with Andres Layman, one of the SOAP architects at Microsoft. He let slip that it was actually a Microsoft objective to make the standard sufficiently complex that only the tools would read and write this stuff, and not humans. So that was a strategy tax that was imposed by the big companies on some of this technology, where they made it more complicated than it needed to be so they could sell tools. [Emphasis added]

Everything I have seen about SOAP has let me to this conclusion. The funny thing is that many corporations cling to SOAP as if they couldn’t possibly have web services without it (though many crafted and successfully implemented their own simple XML over HTTP services before the SOAP spec saw the light of day).

I think that Tim missed the boat with this comment as well:

It’s not necessarily just Machiavellian scheming. I think Microsoft really believes that you can create better user experiences with tools that give people so much more power.

Not quite. It took vendors like Borland (who has now left the compiler/IDE business) and others creating much more robust and productive environments in the 80s for MS to finally wake up to the need to have a viable IDE. In typical monopolistic fashion, MS latched on to the IDE as yet another means to vendor lock in. So, once it inserted itself into the IDE business, MS ‘strategy’ has always been creating the most obscure, convoluted means to implement code, libraries, frameworks, etc to tie developers to their toolset, plain and simple. If the languages and frameworks were able to stand on their own, there would be no lock-in to the MS tools. Incidentally, you will hear similar arguments around JavaServer Faces and Sun tools as well.

technorati tags: , , , ,

BBC Television Program Info Searchable in RDF

Apparently this site (open.bbc.co.uk) contains 75 years worth of information about every program that the BBC has aired over the years in a searchable format using semantic web technologies under the covers.

I wanted to try this out and write about it a bit, but apparently the site is not responding. Is this a server problem or a Ruby problem? Either way it probably has to due with enormous demand at the rollout of this new tool. I guess we will find out later…

technorati tags: , , , ,

FlickrExport

A new version of FlickrExport, a superb plugin for iPhoto that makes it incredibly easy to upload and tag photos on Flickr. Of all the Flickr upload tools out there, this is absolutely my favorite.

Oddly enough, this version was released as beta yesterday, but it’s good to go today.

I did find one significant bug — if you don’t have any photos selected and you click on File->Export, iPhoto will hang (apparently due to flickrExport hanging). If you let it sit for a minute or two it will select your entire photo library to export — probably not what you intended. I am confident that this will be quickly and proficiently fixed.  I stand corrected — this is a ‘feature‘ of iPhoto: if you have no photos selected when you Export, it assumes that you want all of them exported.

technorati tags: , , , ,

The Effect of Standards on IT Business Strategy

As always, a compelling and insightful commentary by IBM’s Irving Wladawsky-Berger (via AlwaysOn); this time discussing the effect that technology standards are having (or will have) on IT Strategy. One of the points that he makes is that standards aren’t just about software leverage; hardware and web services standards are going to allow enterprises to grow and share in ways they couldn’t easily before.

Now, what we have seen is the continuing emergence of standards as we keep going up the stack. In this world of grid computing, what you’re really trying to do is share all kinds of IT resources—computing capacity, storage, files, applications, and so on—all built around the common standards that everybody uses. So you can essentially begin to virtualize the system so that people can access your resource without having to know precisely where that resource is. A very difficult example that must have been used in let’s say supercomputing systems is that you can form a grid out of multiple supercomputers in a location or in a country, and when somebody submits a job they submit it to the grid. And then the systems themselves get their act together, find where they have capacity, and make sure they can access everything, but you’re essentially sharing all the extreme capacity that wasn’t there before.

technorati tags: , ,

Tim Bray Goes Off on WS-Interop

I tend to agree with Mr Bray’s WS-Interop posting. Much of what is being created under the guise of standards feels like it is just making real interoperability more and more elusive. From a pure interoperability standpoint, introducing SOAP into an interaction just tags on non-value-added bloat with the ‘benefit’ of having the interaction be more toolable (and you more dependent on the tools).

WS-* isnÂ’t about standards. ItÂ’s about what Microsoft (there are partners, but itÂ’s mostly Microsoft) chooses to implement while waving the WS-banner and retroactively shaking Standards Fairy Dust over the process. Which is OK, as far as it goes; I get the impression that Indigo WCF is actually some pretty neat software that will be useful to a lot of Microsoft customers, and Sun has a stake in the ground saying weÂ’re going to interoperate with the Microsoft WS-stack. Do I think this stuff is going to Change The World? No. Do I think that this is the real future of Web Services? No.

Standards have their place and certainly serve large corporations to help cut through the sometimes dense forests of (ad hoc) internally adopted technologies. However, on the wild, wild Internet, simple is better. This is not to say that standards have no place; afterall, there wouldn’t be a Internet without TCP/IP, HTTP, SSL, HTML, etc. In the end, the simplest, most open solution tends to win.

Google Maps Go Mobile

Earlier today Google released a version of Google Maps called local for mobile that runs on most Java-enabled mobile phones . I was able to easily download the app onto my Nokia 6620 and start making use of it. The experience was much more seamless when I finally found the setting in Nokia’s AppManager to not prompt me every time the app wanted to connect to the web (which was a lot).

One downside that I found is that there is no apparent way to ‘bookmark’ locations (say, your home, or place of business) to make it easier to zoom to places where you commonly find yourself. For that matter, bookmarking would make it easier to get directions though the service because you would commonly want directions to/from your home or place of work. Bookmarking would be a great addition, as I find that anything that keeps keying and mousing to a minimum on a mobile device makes that app/service all the more valuable.

I found the Google offering much snappier (speed-wise) than the previous app that I was using on my 6620 called MGMaps. MGMaps basically served the same function in delivering Google Maps to mobile devices. It may be that MGMaps may go away altogether now that Google has introduced its own mobile application.

The State of Public Web Services

A Snapshot of Public Web Services” (warning PDF) appeared in the March 2005 issue of the SIGMOD Record. It discusses how many of the publicly available ‘web services’ are really just data retrieval services or search services. Available services also tend to be fairly poorly documented (fewer than 10 words) and in more cases than not, contain malformed WSDL. In fact, many of the services reported on tend to be more at the ‘Hello, World’ end of the spectrum — their existence in the directory more out of experimentation than utility.

It should be noted that the services in question were trawled out of xmethods.com and the like, so they don’t represent the services or APIs that sites like Flickr, Google, Amazon or others expose.

I believe that it would be very valuable to have an inventory/registry of proper/richer services that are available on the Internet. This would certainly facilitate the growing trend of people wiring up one sites functionality with another sites services to create something altogether different. Such a site could enforce some level of validation and even provide semantic web capabilities such as OWL-S description and composition facitlities to aid the systematic discovery and usage of said services.

Online Web Services Programming Class

There is a free online Web Services Programming Class hosted on Yahoo Groups that is starting up today. Note that to participate, you are required to have a Yahoo Groups ID (free, but causes some heartburn to have to sign up).

A free online “Web Services Programming” course is about to
begin on Oct. 26th, 2005 for anyone who wants to learn
Web services programming. In this 13-week course, attendees learn
basic Web Services standards such as SOAP and WSDL, and Java
API’s for Web services such as JAX-WS, SAAJ, and JAXR. The
principles of SOA and relevant technologies such as JBI and
BPEL are also addressed. They also learn how to use NetBeans
IDE effectively for building and deploying Web services.

This course runs very much like a regular college course in
which the attendees are expected to do weekly homework and final
project but it is free and can be taken online. There is
also class group alias where attendees can ask/answer questions.
The complete set of course contents (StarOffice slides with
detailed speaker notes and some audio files, homework assignments,
reading materials, code samples, FAQ etc.) are available on the
website of the course.

The only thing you have to do in order to join the course is
sending an email to

webservicesprogramming-subscribe@yahoogroups.com.

For detailed information about this course, please go to the
following class website.

Course website: http://www.javapassion.com/webservices
Course schedule: http://www.javapassion.com/webservices/#ClassSchedule
Course group alias:
http://groups.yahoo.com/group/webservicesprogramming/

Learn From The Webgoat

If web security is at all of interest to you then get yourself over to the webgoat project at the Open Web Applications Security Project. Installers are available for Linux, OSX and windows.

WebGoat is a full J2EE web application designed to teach web application security lessons. In each lesson, users must demonstrate their understanding by exploiting a real vulnerability on the local system. The system is even clever enough to provide hints and show the user cookies, parameters and the underlying Java code if they choose. Examples of lessons include SQL injection to a fake credit card database, where the user creates the attack and steals the credit card numbers.

WiredReach Content Sharing Platform

WiredReach looks like an interesting idea for sharing content without using shared servers:

The WiredReach Platform allows users to selectively share content with others in a completely decentralized and secure manner. That means your content does not have to be uploaded to any central servers but rather can be shared right from your desktop or device. We use the term “content” very loosely to include things like presence, blogs, bookmarks, documents, calendars, music, photos… virtually any type of social media.

From following the download link, there is a wiredreach.com which provides the development support for the opensource project.

It appears that it is all based on opensource using Java JXTA for some of the underlying network capabilities. There are a number of plugin projects going on to add blogging and various other content type sharing to the core project.

Downloading the Mac OSX version now. More when I have a chance to work with it a bit.

======

Updated 14 September 2005: Granted I didn’t dig too far, but there is really not much to see from what they have available at this point. It looks like many of the plugins and other functionality is not quite there yet. The ability to add a few links to a page and have some rudimentary ‘forum’ functionality is not terribly compelling beyond what you get ‘out of the box’ with a Wiki. The claim in their blurb above about supporting ‘any type of social media’ appears to be a forward-looking statement at this point.

Without setting it up on several machines and emailing notifications to myself, there didn’t seem to be much meat. It would have been nice if there were one or two ‘sample’ sites available that one could connect to get a better feel for the software.

I’ll check back on this in the future, but for now (for me) it doesn’t seem very compelling (and I had high hopes of an awesome JXTA-based application).