There are many challenges to understanding what our code is really doing at runtime:
We can’t always just attach a debugger and step through our code unless it’s running locally. But when it’s running locally, it’s not really representative of the live system. The only way to see what the live system is doing is to instrument it.
Fortunately, Google provide a fantastic tracing tool for their cloud platform which can provide valuable insights into your application even when calls span multiple services.
Here’s an example of using it to optimize code.
I’m an avid user of AppEngine and just discovered that it turns 9 years old this week.
9 years! That’s almost as close to infinity in Internet Time as you can get without tearing a hole in the fabric of the universe.
The amazing thing is that despite its age it’s still way ahead of it’s time in many ways and I think that is why it doesn’t get as much attention and fanfare as it really deserves. I remember the first time I came across it I didn’t really “get” what it would do for me so it was a couple of more years before I switched to it.
So in case you don’t know, here are some reminders of why it’s so brilliant …
While working on an Azure event-sourcing provider for my CQRS framework I came across a really strange problem so I’m posting the details in-case anyone else comes across a similar issue so they can save wasting as much time on it as I did! Basically, the local development storage doesn’t seem to like you having a table called ‘event’ (I haven’t tested it on the live system).
I’ve been playing around with the whole CQRS approach and think MongoDb works really well for the query side of things. I also figured it was time I tried Azure so I had a look round the web to see if there we’re instructions on how to run MongoDb on Microsoft’s Azure cloud. It turned out there were only a few mentions of it or a general approach that should work but no detailed instructions on how to do it. So, I figured I’d give it a go and for a total-Azure-newbie it didn’t turn out to be too difficult.