This simple cheat sheet contains all the key goals, principals and design patterns that you should be aware of when designing SOA services and contains helpful links to places where you can find more in-depth information on each topic.
In the previous posts I discussed how I went about building my SOA ‘Entity’ service for Products by using a combination of Java Web Services, Java EE and the CouchDB NoSQL database. In this final post in the series I’m going to leverage some of the technical assets that I’ve created and implement some new user stories using some popular SOA patterns.
My current Product Entity Service implementation is very business process agnostic, and therefore highly re-usable in any scenario where consumers want to discover or store Product information. However, as it stands the Product Entity Service is designed to be used within a trusted environment. This means that there are no restrictions on access to operations like Create, Update or Delete. This is fine within a strictly controlled corporate sandbox but what if I want to share some of my service operations or Product information with non trusted users?
Lets imagine that in addition to our in-house use of the Product Entity Service we also wanted to cater for the following agile ‘user story’…
Now that I have prepared a skeleton contract-first web-service and created a data access layer using Ektorp and CouchDB, it’s time to wire them together into a fully working entity service. To do this I’m going to use Java EE and Glassfish 3.1.
It’s worth noting at this point that it’s not strictly necessary that I use Java EE at all for his kind of R&D work. I don’t need the security or the transaction features that are provided by a JEE server like Glassfish and I could probably use something a little lighter like Tomcat or Jetty. However, I do like the convenience and the features of JEE, and many applications that begin life on an standard Java application server like Tomcat do end up either grafting JEE features into Tomcat (like JAX-WS) or migrating to a full JEE server like Glassfish.
Following on from part two of this series where I created and deployed the Product Entity Service using the SOA ‘contract-first’ technique, I’m now going to work on the NoSQL database aspects of the service implementation.
It’s time to begin the coding of my SOA entity service with NoSQL project, and as promised I’m starting with the web service’s contract.
This technique of starting with a web service contract definition is at the heart of the ‘contract-first’ approach to service-oriented architecture implementation and has numerous technical benefits including…
After 5 years of designing and building award winning service oriented architectures, I thought I’d share my top 5 SOA gotcha’s and some general hints on how you can avoid them in your SOA programme.
This is the final module in the SOA Certified Architect course I’m taking, and the most difficult yet. This module doesn’t introduce any new concepts, patterns, principals or technologies – it’s designed purely to assess weather you can apply what you’ve learned about service-oriented architecture principals and patterns to solve service-oriented architectural problems.
The self-study kit.
The self study kit is fairly basic in this module. The course booklet contains various case study examples that give the student an opportunity to examine architectural problems and propose solutions. The audio tutor CD contains a reminder of all the patterns and principals followed by a discussion on how they inter-relate. The exam preparation booklet contains some tips and advice and further reading that may help when taking the Lab exam. And at the back of the exam preparation booklet is a series of 4 sample test questions that give you an idea of what you’ll face in the final Prometric test.
The exam questions and format.
It was the 4 sample test questions that I found to be the most useful part of the preparatory material. They illustrate the format of the exam questions and give an idea of just how challenging the final exam will be. The exam questions themselves are quite abstract and verbose in nature and the multiple choice solution options can be full or partial answers. The exam is basically a case of picking the closest answer for each question, while at the same time bearing in mind that the ubiquitous “none of the above” answer may also be correct in each case.
It’s this “do I go for a partial solution or none of the above?” dilemma that makes this test so frustrating and so difficult. Personally, being of the “if you’re going to do it, then do it right” persuasion, these half-correct options feel unsatisfactory and incomplete – and opting for the final option, “none of the above”, really depends on whether you feel the solution you’re proposing can’t do without the “bells and whistles” approach you’ve concocted. I’d argue that the test would be much easier to follow if it dropped the “none of the above” option altogether, or at least used it in fewer questions.
Otherwise its mostly fine, the wordy nature of the exam questions makes them quite difficult to comprehend and this approach does give the exam an overly ‘academic’ and unrealistic feel that is out of character with the other modules.
My exam strategy.
The way I got through the exam was to quickly copy down the diagram associated with the question and then make notes on the diagram whilst reading the problem statement. That way I found I could choose the right answer a little easier. However, this at the cost of throughput and I did run out of time towards the end, only answering 19 of the 20 questions. If you feel you have a better way, do share it in the comments below for others to learn from.
Were the course module materials good preparation for the lab exam?
Overall I’d have to say not quite, although I do realise that because of the discount policy at SOAschool the course materials for every 5th module you buy are effectively free. However, once you’d exhausted the 4 sample exam questions, the next best resource was not the course booklet but rather the SOA Design Patterns book. Studying the patterns and principals in more detail feels like the better option if you want to be totally clear as to which patterns can be applied to which problem.
I think that what I would have preferred from the self study materials would have been access to a larger collection of sample exam questions and a few more hints on how to approach the exam.
However, its worth noting that despite actually referring to the official course materials very little, I did manage to come through the exam with honours. I’m now a SOA Certified Architect (with honours), and I couldn’t be happier with that result.
So now I’m certified, this will be the last in this series of SOA Certified Architect course blogs. If you missed any of the others in the series and you’d like to catch up, you can read them here…
Module 1 - Fundamental SOA & Service-Oriented Computing
Module 2 - SOA Technology Concepts.
SOA Certified Professional
Module 3 - SOA Design and Architecture.
Module 8 - Advanced SOA Design and Architecture.