I’m building a service that uses a bunch of heuristics to, given an email address, figure out which Identity Provider (IDP) you should try to use to log that address in. I’m doing it in Go. Here’s why.

The Context · You can read about about the whys of the thing in Project findIDP. But here’s the how:

So logically it’s pretty easy, except for: The database might have a lot of records, the query load might get really high, and the logic is all asynchronous and concurrent.

Options · My thinking went like this:

Having followed that line of thinking, the two options that looked best to me were NodeJS on Heroku, and Go on App Engine.

From that point of view, the choice was pretty easy. First of all, while Node is totally elegant and I’m a Heroku fan, I’ve just never managed to warm up to JavaScript. Secondly, Go is said to be psychologically comfy for C programmers, and I was one of those for a whole lot of years. Third, while App Engine has some odd performance quirks, if you treat it right you should have no trouble with a billion rows in the database or really big number of queries per second.

And since I work here, I can probably avoid, you know, paying.

Progress · So I started poking around early last week and had the service running four days later, just checking the MX and WebFinger so far. Except for there’s no WebFinger out there to check. Whatever.

I haven’t fallen in love with Go the way I did when I started using C in the Eighties or Java in the nineties or Ruby last decade. Yeah, I’m that old. I have a list of Go things I like and others I dislike and I’ll write about them. But pretty clearly, it’ll be OK for this job.

Why I’m Smiling · I’d never seen Go before. So life is pretty good when you can wade into the swamp of unknown infrastructure and get a result the same week.

But here’s the real happiness: I have choices! I’m dead sure that this could’ve been made to run just fine using at least one other PaaS combo. And if I were willing to become a cloud sysadmin, lots more choices.

Choices are good on the data side too. I have simple flattish tuples, and I haven’t for a moment considered going relational. Whatever hosting option I picked, there’d be a decent post-SQL data store; probably more than one.

There’s never been a better time to be a developer.



Contributions

Comment feed for ongoing:Comments feed

From: Dave Walker (Jun 16 2013, at 11:13)

This is a very interesting idea; have mentioned it to a couple of the federated identity folk I know (including the link). Looking forward to reading more posts on progress.

Quick question: Is there anything an identity provider or service provider could usefully do to provide an infrastructure hint on who the IDP is?

[link]

author · Dad
colophon · rights
picture of the day
June 14, 2013
· Technology (90 fragments)
· · Software (89 more)

By .

The opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.

I’m on Mastodon!