{ explore .net }

To content | To menu | To search

Tuesday 2 March 2010

Scheduled exam S90.02

I've scheduled the second exam, SOA Technology Concepts, in my pursuit of becoming a Certified SOA Consultant for March 29. This exams covers the basic technologies to implement a SOA solutions, specially through the use of web services.

To prepare for this exam I've been reading chapters 5-6-7-13-16-17-18 of the book SOA: Concepts, Technology, and Design, I went through the course booklet and I've been listening to the cd's with the module overview, exam preparation and podcasts on different web services related subjects.

Sunday 7 February 2010

Understanding SOA - A Word On Services

Introduction

A service is the essential artifact in SOA, everything revolves around it, you'll be analyzing, modeling, designing, implementing, governing and versioning services. A service is a specialized piece of business logic, a piece of software that is designed by following the ideas, principles and patterns in mind that will fulfill a specific business need. Finally, some logic implemented as a web service is not automatically a (SOA) service.

Classifying services

When you're modeling and designing services you'll see that most services can be classified as a Utility, Entity or Task service:

- utility services: these are the services that don't have any real business knowledge and they are the most agnostic, this gives them the highest reuse potential. Utility services could encapsulate logging, notification,...

- entity services: these will most likely support CRUD operations on business entities such as clients and orders. Although they are working with business entities they are still very business agnostic, they don't have any knowledge of the business process that is using them. This gives them a also a high reuse potential.

- task services: they are specialized in executing a specific business task and so they have specific business knowledge and rules, this makes them less likely candidates to be reused

Modeling/designing services ...

Before you start a specific service implementation think about the big picture first and make an enterprise service blueprint. This is a high level overview of the services that will probably be needed by the enterprise. It will give you more guidance, direction, help set priorities and avoid future overlap between services.

Business is at the core of a SOA solution so everything starts by a specific business need that needs to be fulfilled. Then it's no surprise that the SOA delivery life cycle starts with the business analysis. When this is done the service modeling can start, this is to conceptualize the services that will fulfill the business need, this must be done by the business analyst and architect to keep the business and services aligned. Now comes the design fase, here the final services are chosen and get their technical design from the architect. Now the actual development of the services can start. A future article will go into more detail about the SOA delivery life cycle.

Always keep the principles and goals of SOA in your mind, are the services loosely coupled, do I have a standardize service contract, what will be the impact on the governance... Make every service as specialized and agnostic as you can, this will greatly enhance their reuse potential and avoid overlap with other services.

Service Implementations

Once your services are designed you can start implementing them. The technology that you'll be using is up to you, you're not limited by only SOAP based web services. The services can be also implemented as components or REST services. You don't necessary need to use an "open" technology, if your enterprise is completely Microsoft oriented you could use WCF over TCP with binary encoding and you would still be doing SOA.

Thursday 21 January 2010

Passed Exam S90.01: Fundamental SOA & Service-Oriented Computing

This morning I went to take the exam S90.01 and passed without too much difficulties, 96/100 isn't that bad I guess :-)

This exam is to test your basic understanding of Service-Orientation, here is a list of the things you have to be familiar with:
- services and related stuff (contracts, inventories...)
- delivery lifecycle
- the 8 principles
- the 7 strategic goals and benefits
- the 4 characteristics

You don't need to memorize them or know every aspect of them but be familiar with the terms and understand their meaning and the relationships between them.

The exam consists of 50 questions, these can be true/false, single choice or multiple choice questions. The pass rate is 80 and you have 1 hour to finish, this is more than enough time. I went over the questions in about 30 minutes then went over them again and was completely finished after 45 minutes.

As for the study materials, basically you have enough with the book SOA: Principles of Service Design. You don't need to read the entire book but I suggest you do this anyway, compared to the other books this one is still a modest sized book and you'll need it for the other exams as well. I also bought the course materials and this is quite handy to repeat the course once you read the book, you can go through it in 1 hour to refresh your knowledge.

Hope this was useful and as always, if you have any questions just shout (but don't ask to get sample questions).

Understanding SOA - Principles - Service Loose Coupling

Introduction

Service Loose Coupling means that each service is an isolated entity with limited dependencies on other (shared) resources. These resources could be technologies, (legacy) applications, databases, components, API's, infrastructure... The more a service is isolated from external resources the more predictable and reliable it will be. Don't start thinking that you can't have dependencies/relationships between services, service compositions are essential to SOA and is also one of the SOA principles but services shouldn't share the same underlying resources such as a database.

Standardized Service Contract

Service Loose Coupling also means that the service contract should be created with this principle in mind. When the contract is generated from a developer tool or runtime environment you automatically make the service dependent on that technology and so the service implementation and consumers will also be dependent on that technology.

Good Coupling and Bad Coupling

By now you should have realized that some types of coupling are good (allowed) and some are not good (or should be limited) and some are necessary. Coupling a service to a service contract is good but not the other way. Coupling between services is good, services must be composed to to create new business capabilities. Eventually the service will be coupled to a specific technology and runtime, this is necessary, you must develop your service with some technology but avoid the coupling of you contract to a specific technology.

Wednesday 20 January 2010

Understanding SOA - Principles - Service Contract

Introduction
The service contract is probably the most important thing/document/artifact that you'll be creating or using concerning a SOA implementation. This is what technically defines a service, what it will look like, what it is capable of doing and how it's going to do it.

Standardized Service Contract
A service contract should be standardized by industry and design standards, this will greatly enhance interoperability with other vendor platforms and internal applications/services. The contract is created after the service analysis and modeling but before the implementation of the service. It's important to use contract-first design to avoid any dependencies from the contract on a specific implementation or technology. The service implementation and consumers must depend on the contract but not the other way around.

Contents
The contract will contain the following technical "documents" (not necessarily human readable documents):
- service definition, this contains the technical details of the service and its capabilities (headers, methods...)
- data definitions, this shows what the exchanged data will look like

When implementing the services as Web Services this will correspond to WSDL and XSD respectivelay. Besides these documents you might also have policy definitions when using Wew Services (WS-Policy) to enforce security or other enterprise policies.

Besides the technical documents there can also be other (non-technical) documents included in the contract such as an SLA.

The above documents can all be created independently from each other. Data and policy definitions can and should be used by different services when appropriate. This will greatly enhance the interoperability between applications and services, if different services in the enterprise use the same data but use different definitions you'll have to make data transformation and integration efforts, this is exactly what SOA wants to avoid.

Governance
The governance is also important to contracts, someone must "own" the contract and preferably not by a specific project. This is necessary to have a successful evolution of the service an to avoid that one party can make breaking changes to the contract.

Monday 4 January 2010

Scheduled exam S90.01

I just scheduled my first soaschool.com exam for December 30, just in time to keep on track with my planning to do one exam this year :-)

I've read the book SOA: Principles of Service Design completely, read the self-study material and I tried the sample questions. Until D-day I'll probably listen to the the CD's with podcasts and review the most important chapters of the book that concern the first exam.

Once I took the exam I'll let you know what it was like.

UPDATE: Because the exam center unexpectedly had to close last week I was forced to reschedule my exam to January 21.

Wednesday 14 October 2009

Oslo as a SOA Service Repository?

Don't expect an answer, only a question.

Could Oslo be used as a service repository in SOA within the enterprise? If so this could be quite powerful. You can create a grammar for the service contracts (wsdl, xsd...) and additional information concerning the service (SLA, discoverability...). This could really help in standardizing and centralizing the governance of SOA in the enterprise.

Might this be a valid implementation of Oslo?

Tuesday 22 September 2009

SOA symposium presentations

The second international SOA symposium is organized from October 22-23 2009 in Rotterdam, the Netherlands. There are also 3 days of workshops (Oct. 19-21).

But, the presentations of last years symposium can be downloaded for free. Topics include SOA in genereal, architecture, ESB, REST, web services... They also mention that soon some video presentations will become available.

Wednesday 9 September 2009

Understanding SOA - Introduction

Service-Orientation, Service Oriented Architecture, web services, if you're not using the word service you're just not cool!! :-)

As explained in my previous post I'm currently preparing to get SOA certified and so it might be a good exercise for me to talk about service-orientation and SOA in my own words. To keep it readable this will be done in a series of articles, each focused on a specific topic.

Before I start the first article I want explain a naming convention. In a lot of articles and books the term "SOA" is used while they are actually talking about Service-Orientation (SO), SOA is actually part of SO. Mainly I'll be talking about SO but to keep things simple I will also use "SOA" for both definitions.

Introduction to SO(A)

SOA ≠ web services and you're not obliged to use web services to implement SOA. Are web services the best way to technically implement SOA? I'm confident to say yes but I do want to stress that web services are only the technical implementation of a service-oriented design. To make it short, it's not because you're using web services that you are doing SOA. Think of services as a collection of capabilities focused on a certain topic, this topic could be a business entity, a business process... (Invoice, Accounts Payable,...). In the next article(s) I will talk in more detail about services, their design and principles.

SOA is also not a pure technical idea, it doesn't only concern developers or architects. It concerns the business of the enterprise, short (tactical) and long (strategic) term goals, SOA can define how a WSDL will look like but it also defines who has access to technical documentation of the service, SLA's are also part of SOA.  Don't think of a SOA implementation as a single project within the company, each project should strive towards and contribute to a global SOA within the enterprise.

SOA is about centralizing "logic", making it available through standardized interfaces, managed by a centralized governance and has as purpose to deliver strategic goals and benefits to the company.

Standardized interfaces are very important as it can lighten the integration burden that exists in enterprises that use different development environments (.net, java...) and different application vendors (SAP, Microsoft...). In the case of web services these standardized interfaces will be WSDL for the service contract, XML and XSD for type declaration and WS-* standards (policy, reliability...).

The governance is responsible for how services are designed, developed, published, versioned and for standardizing the internal process to deliver those activities

Reaching SOA "utopia" is an evolution, most of the time you will start by using web services to connect or integrate with different applications, then service contracts will be more formally standardized, as the service inventory grows the need for governance over this will become mandatory to successfully maintain, evolve and version the inventory. But it's not necessarily a natural evolution, planning and preparation, such as an inventory blueprint, are needed for a successful evolution.

Let's have a look at some of the goals of SOA...

  • Increased Interoperability

    By consistently applying service principles and design standards (standardized contracts...) services are automatically interoperable. Because of the interoperability, integration processes start to fade. Services can be used and composed more naturally even if they were created by other teams/projects or if they were created in the past.

  • Increased Federation

    This means that applications and resources are united/composed but still maintain their autonomy and self governance. As with interoperability, the application of principles and standards is needed to achieve this unity.

  • Increased Vendor Diversification

    By designing a neutral service oriented architecture (i.e. web services) an organization has the possibility to choose the best products from different vendors. This gives the options to extend, change or replace vendor implementations without "destroying" the global architecture.

  • Increased Business and Technology Alignment

    To create the correct levels of abstraction and to determine service candidates the deep involvement of business experts is mandatory to create services that can withstand change and that can be recomposed if needed to follow the business changes.

...and now the benefits...

  • Increased Return on Investment

    As isolated applications need to grow and evolve over time so does the complexity and cost of managing the application. SOA advocates creating agnostic services that can be (re-)used and composed for different purposes. The initial creation of this piece of logic will have a greater cost compared to the creation of a classic application but it will be better positioned as an IT asset that will reduce the cost of change and evolution over time.

  • Increased Agility

    As the  service inventory grows over time with more and more agnostic services that don't belong to a certain application but are a real IT asset, IT can adapt more quickly to changing or new business requirements.

  • Reduced IT Burden

    As the SOA infrastructure grows and matures IT can focus more on adding value to the business and less on plumbing and integration. This will also reduce redundancy, overhead, size and the operational cost of IT withing the company and it increases efficiency and agility.

This was a little introduction into the what and why of SOA, the next articles will go deeper into the design and principles of services.

Thursday 20 August 2009

Studying towards Certified SOA Consultant of SOASchool.com

I've been interested in SOA and web services for years and to make things "official" I've decided to get certified in this area. After looking around for the possibilities I decided to take the certification of SOASchool.com. Why did I choose this "vendor", it's based on the excellent books of Thoma Erl and it's technology agnostic. The fact that it's technology agnostic is very important to me, SOA is a lot more than generating some web services from a development tool.

So the plan is to become a SOA Certified Consultant by the summer of next year, we'll see in a few months if this is too ambitious. I received the self-study kit and text books this week, delivery took about 10 days (from Canada to Belgium). Every exam kit includes a printed version of the course presentation and some sample questions, self-study guide that links to the book chapters you need review for the exam, audio tutor cd's, flash cards and a Prometric exam voucher. For the complete contents of each study kit go here. As mentioned in the first paragraph, the exams are based on the books of Thomas Erl so you'll also need those. The first exam (S90.01A) uses the book SOA Principles of Service Design, for the full Certified Consultant track you'll need these 4 books:

For the full exam/book correlation go here.

I'll keep this place updated with my progress and my opinions on the contents and exams as I progress. If you're interested in other SOA certifications you can have a look at an article of Eric Roch.