Sunday, October 22, 2006

The first tutorial

Warning! This is a pure technical/work blog entry except for the last paragraphs.

My first thing here at the actual conference was a tutorial about "SOA: From Concepts to Reality" by Nicolai Josuttis from Germany. That is what I did this Sunday morning. It was quite interesting actually and exceeded my expectations. I liked the fact that he included som real world examples and issues and it really felt like such. No faked "real world examples". Even so they were easy to follow and understand and you could relate to similar project/system design issues and how trying to solve them could make things worse and sometimes it is just a choice of the least bad way of doing things. In practice I mean. For a theoretical approach ("concepts") to SOA it also contained a lot of that good(/bad?) stuff called "reality". It was a no bullshit description of and introduction to SOA without getting into any implementation specific stuff. Anyway, for some reason it felt very direct and certainly not "too theoretical", or maybe it is just me taking a (mind)step away from cumbersome practical details...

The short version
SOA is not an architecture, it is a paradigm. That is quite an important distinction. It is not a recipe of how to do it. In fact it does introduce new challenges and a wide range of complex problems to solve. SOA is not something you wish for in all your systems, but a rather good suggestion of thinking if you are forced to have a distributed system. Of course as Nicolai pointed out, you should never trust just one source or any single person's point of view, especially with SOA. He also mentioned that he often got hired to get a second opinion on what SOA is and could do for them. I especially liked his points on data types, performance and versioning (yes that boring part that we want to forget) was actually quite interesting. SOA is over hyped, and as usual it is no silver bullet, but that doesn't mean it is a bad thing!

An important topic that really got me thinking was about data types, why there shouldn't be common data types that everyone agrees on in a distributed systems! We should actually be forced to use cumbersome exchange data objects between systems. Wow, I never thought I would say that. The reason why? Simple, try and first get both the CRM, billing, delivery etc department/systems agreeing on what a customer data type should look like. Then if something changes later on... Just map them to your own at exchange time. Sure it costs you performance but at least it will work in practice. Other important things with data types were the actual typing combined with versioning. That is actually of course valid for any API not just with Service Oriented Architectures. Recommendations here were to keep the data types simple, stick to the primitives, strings etc instead of using a complex Customer type that might cause binary incompatibilities in the future when it needs to change or Customer_2 types which in turn leads to a wide range of API/service issues and the start of the versioning issues.

More types
Type information in the data type was another detail. This is something I need to talk to Niclas about. Dynamic/generic typing. It was mentioned here, but just very basic. If the Customer class only had a method of getting generic values. Such as:

String firstName = customer.getValue("firstname");

Then you don't need to change the data types, recompile and/or worry about binary compatibility when adding a new field to the customer data type. Of course you don't have any static type checking, but as you need some solid tests and testing anyway, especially in distributed systems such as a SOA based one, that is not a problem.

Recognize that thinking? It's the same argument we have for dynamic languages when typing is brought up. Conclusion? Another argument to step up the test efforts! I'm really glad Jon has put the effort in to start "the readable executable integration tests" stuff at work. This so it goes beyond unit testing and then giving a poor tester the responsibility to assure that it is all functioning correctly. Maybe more on that stuff another time, but meanwhile, imagine a non-programming tester, perhaps together with a customer, writing perfectly readable but even so, executable, integration tests... Too good to be true?

What could a dynamic typing system/language do for SOA I wonder? I've still have problems accepting dynamic languages like Ruby for large scale systems. I love them for certain things though! I should have attended Niclas tutorial this morning I guess...

So what is SOA anyway?
Loosely coupled services, drawbacks? Performance, security, and hard to find out dependencies. Yes dependencies! In a loosely coupled system. Of course on a totally different level, but still. As everyone can communicate with every other system you not only have problems of tracking down dependencies that you have in practice but also quite a few security issues. That was something we never got around to discussing actually, it was just mentioned.

Oh well, I'll hold a presentation back home at work on all these tutorials and things I have and will experience over here that will hopefully be a little more comprehensive than this short description.

At the same time...
Meanwhile Niclas had his first presentation/tutorial, "Dynamic languages for statically-typed minds" (cool title!) and initial rumors says it was well received and caused a lot of discussion. Following this, after lunch, Niclas is holding his second tutorial together with Jimmy, "Test driven development -Hands-on!" and it is now currently in progress.

To the right above you can see Jimmy and Niclas just before their presentation starts.

Jon was supposed to attend "Programmers are from Mars, Customers are from Venus: A Practical Guide to Working with Customers on XP Projects", but from a IM chat with him a few moments ago I learnt that he had changed his mind and is currently in a tutorial named "Modular AOP Using Design Rules and XPIs ". So far it seemed very good he said and he mentioned some things we should do at work with concepts from there.

My time here today
I have the afternoon off today as it seems, no tutorials and not much else going on there on this Sunday. It all really first starts on Tuesday actually.

I wonder if Jon, Niclas and Jimmy will have time for a proper dinner out tonight, they didn't yesterday. I instead followed some new acquaintances out downtown yesterday and we had a good time even though we got, literally, sidetracked ending up on a tram going up river, instead of back to our hotels. It was a nice evening for a walk anyway... Yes they have trams here in Portland, it's just like Göteborg in many ways. The weather and the temperature is the same too, but so far we only had some lovely sunny autumn days.
And no my quad-band mobile phone is still not working. It did work fine in other countries in Europe though and when I tried out Jon's SIM card in my phone it worked fine. No news from the customer service either and it is a bit hard for me to contact them with a 9h time difference.