Just done reading this nice book: SOA in Practice, by Nicolai M. Josuttis. I find it a good book to ask yourself if your architecture smells good or stinks. It does not include source code so it is more about the SOA tenets than explicit samples. Before reading the book, I thought that an architecture that uses web services was SOA, but Nicolai makes clear that "SOA is an architectural paradigm for dealing with business processes distributed over a large and heterogeneous landscape of existing and new systems that are under the control of different owners". The book lead me to think things like... "oh, so I am doing well here, or, I am doing bad, or , this service I've got here is a composed service, or a basic service"... However, I miss more explicit samples, specially regarding the Enterprise Service Bus. I wanted to read about the Sun ESB or the Microsoft Internet Service Bus, but none of them were even named.
So good book to give you some hints on your design but not such a good book for beginners. On the other hand, I believe that an scenario that requires SOA is not good for a beginner or junior developer. SOA is about common sense.
By the way, one of the bests talks I've ever seen on SOA is the popular "Patterns and Anti-Patterns for SOA", by Ron Jacobs. Check out the videos here:
Looking for training on agile software development? So far, the webinars at netobjectives.com are the best resources I've found. The quality of the lessons is just brilliant. Speakers are great and examples are really useful. Take a loot at the free available webinars here, they are flash videos: http://www.netobjectives.com/resources/webinars
I am quite glad to have found these resources.
Thanks guys, you're doing a fantastic job 🙂
Through the Agile-Spain group I've noticed that there is a new online training course on Lean Software Development. It sounds really interesting. You can sign up here to join the training: http://www.netobjectives.com/free-seminar-schedule/lean-online-training-dec-2008.
Lean software development is an agile methodology