SOA


Photo: Industrial backdrop by Pilarts  Dreamstime Stock Photos & Stock Free Images

Photo: Industrial backdrop by Pilarts Dreamstime Stock Photos & Stock Free Images

I’d like to propose a best practice for rolling out new features in a Service Oriented Architecture (SOA).

Traditionally, when we roll out a major new feature, we often end up causing a breaking change to the service. We’re then faced with a choice: (a) Force all our consumers to upgrade to the new version, and making all our consumers hate us, or (b) continue to support the old version of the service as well as the new, making only our own teams hate us. Suck it up, plan (b) is the better option, but try telling that to the guy having to patch fixes in three concurrent versions of a service.

Now, there are patterns that can help here (more on that another day), but they all still mean more work for everyone.

Also, when we first roll out a feature is exactly the moment we understand it least. We’ve got absolutely no idea how people will use it, nor whether it will even turn out to be useful. By baking the feature into a new major version of the service, we’re taking all our options away. The feature will be hard to remove if we decide it isn’t useful, and if we want to change how it works, we’re back into a major version upgrade again.

To my mind, good engineering is largely about keeping your options open. It’d be nice if we can try a new feature with a subset of consumers first, iterating quickly with just that subset, gradually adding more consumers as we get more confident.

Enter the Feature Flags pattern. Feature flags allow you to turn features on an off at a moment’s notice. At its most basic, a feature flag just turns a feature on or off for everyone at once, but the idea is often extended to allow turning on features for specific users, or collections of users. This allows you to roll out a new feature to consumers gradually, over an extended period.

So, here’s the proposal:

  • Allow consumers to pass a set of feature flags dictating which features they’d like enabled in the service.
  • Whenever you build a major new feature that would otherwise cause a breaking change, only enable it when the feature flag is passed.
  • If appropriate to your environment, control access to feature flags like you would to any other resource – e.g. you might want to restrict access in the early days to just a single consumer, making it easier to iterate.
  • Once we’re comfortable with a feature, it becomes publicly available – i.e. anyone can toggle the flag.
  • Every so often (e.g. once every couple of years), create a new major version of the service, refactoring it to include popular, battle tested features by default. Also, take this as an opportunity to clean out the cupboard and abandon any features that aren’t well used.

What do you think? Comments and thoughts very welcome…

 

Please remember to Rate and Like this post.  If you can, please leave a Comment.

Jeff Bezos Photo by John Keatley, Seattle's leading photographer keatleyphoto.com

Jeff Bezos
Photo by John Keatley, Seattle’s leading photographer keatleyphoto.com

Every time I hear this story, it makes me smile. From Kim Lane over at API Evangelist:

[…] one day Jeff Bezos issued a mandate, sometime back around 2002 (give or take a year):

  • All teams will henceforth expose their data and functionality through service interfaces.
  • Teams must communicate with each other through these interfaces.
  • There will be no other form of inter-process communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.
  • It doesn’t matter what technology they use.
  • All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.

The mandate closed with:

Anyone who doesn’t do this will be fired. Thank you; have a nice day!

Assuming for the moment that this is true, the thing that makes me smile here isn’t the closing rhetoric. What Jeff described here is pretty well everything you need to know about successful SOA.

Look at the wording again. “All teams”. He didn’t say “all systems” or “all services”. Technology isn’t [the most] important. People are.

By focussing on teams rather than technology, Jeff ensured that Amazon’s embryonic SOA was business aligned. One, simple decision was all it took. Well, that and ten years of concerted effort of one of the brightest engineering teams on the planet.

Wow! SyncIpswich’s second meetup and around 80 people crammed into the Eastern Enterprise Hub in the James Hehir Building at University Campus Suffolk. Many of the attendees were working for local behemoths like BT but there were also a good mix of bootstrappers, Start Ups and tech entrepreneurs with all kinds of backgrounds (even spotted a Chartered Accountant).

Organisers Carl Farmer (@CarlFarmer), supported by Anders Fisher (@atleastimtrying) and others have done a great job with SyncIpswich, which we are proud to sponsor. The focus of this meetup was on building software quickly with good practices as well as a nice introduction to the Windows Azure Cloud.

Talk no 1. Continuous Delivery

The first presentation by Chris O’Dell from 7digital (@ChrisAnnOdell) described how Agile practices (CI, Kanban, etc) combined with their architectural evolution to SOA have reduced code to deploy times to half a day  at 7digital.  And, by the sound of it, makes their developers more productive by getting away from “DLL Hell” that used to be the bane of any Microsoft Windows developer’s life towards a loosely-coupled set of services and a public API.

7Digital Logo

Chris raised some really interesting points around developing small fine-grained service components – not being that familiar with .Net myself this seemed to be similar to what we are doing in the Java world with OSGi and Service Component Architecture. I do like the policy of developing new features on the trunk (no feature branches) but making good use of feature flags rather than old-fashioned branch & merge.

They are also using Git for the code version control and Chris showed the inversion of the classic Unit Test, Acceptance Test, QA triangle. Some in our own organisation are raising question marks about the usefulness of very granular unit tests so the approach taken by 7digital of increasing the number of Unit tests is interesting.

There were a lot of questions from the floor, I was particularly interested in how the small kanban teams (about 6 or 7 members in 5 or 6 teams I think) interact when there are common services. This is a key problem that us SOA architects need to get right to get the best value on services. Feature Flags is something that we’ve also thought about in the context of simplifying application testing by, for example, switching off authentication for functional testing.

It’s great to see a company like 7digital competing successfully with iTunes and Amazon in the digital music space. I’ll be checking out their API (and their JLS back catalogue !) in more detail this weekend.

Richard Astbury AzureTalk no 2. Starting out in Azure

The second talk of the night was by Richard Astbury (@richorama) of Two10 Degrees ( @two10degrees). Richard gave a nice introduction to Cloud computing and in particular using Microsoft Windows Azure, showing a picture of a MS data centre under construction, which was something I haven’t ever seen before. I think it really brought home the sheer scale and commodity nature of the Cloud and these facilities being full of containers of kit that is just thrown away or recycled when it stops working.

Building a website on Windows Azure from scratch can use a few main pre-canned routes like the obvious “Website”, “Virtual Machine” and “Cloud Service”.

And it now includes a “Mobile Service” which is of particular interest to me. Sadly, I didn’t have time to chat to Richard about this but it’s on my “To Do” list to get a Hello Smartie mobile service up and running. In fairness, Richard did do two masterful demos for Website, including a node.js based site which he even launched from his home computer (a Raspberry Pi no less). As Carl tweeted:

Deploying to Azure from a remote RaspberryPi at home… Impressive stuff from @richorama !

— SyncIpswich (@SyncIpswich) April 25, 2013

Well done to the people of Ipswich for turning out and drinking all the sponsored free beer!
SyncIpswich will run and run.

Please Rate and Like this blog.  If you can, please leave a Comment.

IBM Forum London by HOK

IBM Forum, London, designed by HOK (www.hok.com)
Photo courtesy of HOK

Integration architects and solutions designers interested in IBM’s WebSphere technology stack converged once again for the Spring (!) gathering 2013 WUG at IBM Forum Centre, South Bank, London on  21 March.  I was one of them.

Trends in the WebSphere Ecosystem – Innovation/Evolution

From my perspective, WebSphere seem to retain good ground mainly due to innovation & adaptation of the upcoming technologies in it’s stride. Catering for Mobile & The Cloud areas as well as fulfilling existing customer/partner’s needs by adding features. There was good interest shown by participants on applicability of WebSphere technologies in the Mobile world.

To be honest, I’m neither optimistic nor pessimistic about this, as I’m hoping that the promise shown in the WebSphere brand needs to be realised to it’s potential by the end-users/customers.

Without innovation & evolution into these emerging technology areas, WebSphere brand will probably sustain existing customer base for some years but then could’ve started going down hill. Customers will always have changing needs/requirements to adapt & harness the potential of emerging technologies which if isn’t catered for, will result in them having to resort to alternative solutions – maybe slowly, but surely!

I’d like to share some highlights based on sessions I attended:

WebSphere MQ in the Mobile world (notably: WMQ Support for Web Sockets) WebSockets as we know is a two-way messaging (full duplex) protocol, part of HTML 5 & notably provides the facility to perform push notification from Server to browser (not the pseudo pushes as a result of polling etc.). Remember MQTT (MQ Telemetry Transport), a simple & lightweight messaging protocol? It’s been there for quite a number of years associated with real world applications (Sensors, Machine-To-Machine usage etc.) and been associated with WebSphere MQ from V7.1.

As the MQTT.org puts it succinctly: It is a publish/subscribe, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery.

So, combining the two together (MQTT due to its reliable & light-weight nature & WebSockets due to its full duplex nature) usually involves doing extra work on both sides (at the least, on the client side if using a Messaging server that supports MQTT).

From WebSphere MQ Version 7.5.0.1 the support for WebSocket is built-in!

  • Highly Scalable
  • Secure Push Notifications

This eliminates the need for a client library and hence the Web Browser (or any Web app based on HTML 5/WebSockets) could now be used to send and receive messages, Publish/Subscribe directly from WMQ. This effectively provides a wider range of options for mobile web apps too (based on HTML 5/WebSockets) for reliable messaging, Subscriptions etc. Seamless integration through the Messaging Server to the whole enterprise and beyond (ESB, Cloud, Third party Systems etc.).

Gotchas

  • Browsers should support WebSockets – some do & some don’t
  • Some work (scripting etc.) still needs doing on client side (e.g. JavaScript), that will manage the WebSockets connection. Apparently this (JavaScript Client Library) and other client libraries (C, .Net etc.) would be provided by IBM as part of WMQ (I was told by the presenter).
  • SSL/TLS adds significant network overhead – so use of wss needs careful consideration particularly in constrained/low-bandwidth scenarios.

Extra Bits

  • A Browser based dashboard with close to real-time reporting (a dynamic/active speed-dial display, using the JavaScript WebSockets Client library) connecting to a WMQ Server subscribing to a topic (For selective data feed on system performance characteristics CPU / Memory etc.)
  • The other (more interesting one) an EXCEL Spreadsheet with specific Cells populated by Macros (uses .Net WebSockets Client Library behind, I think) providing a similar dynamic/active speed-dial display. A MQ Server Push ending up in an Excel Spreadsheet!
  • FaceBook Messenger uses MQTT as their underlying messaging protocol.

WebSphere Message Broker 8 & DFDL Support

A gist of features, some of which were really interesting (from a value addition/diversified usage point of view):

Built-in WebSphere ExtremeScale caching

  • ExtremeScale caching: A Grid based (infinite hash map) caching technology that apparently have proved to provide a very high degree of scaling/elasticity for business class applications.
  • Use of recommended patterns such as Application State Store Pattern (Scale-up/scale-down: is more suited for a cloud based solution improving App Server Elasticity), Side-Caching Pattern (for a Gateway style implementation) provides a robust caching facility thus eliminating the need for custom/non-standard caching solutions.
  • Caching available at Broker, Execution Group, Flow, Node levels.

Worklight integration, provision of patterns for mobile services & Toolkit support for conversion from WMB service to Mobile service e.g. Mobile service created using specific pattern can Receive data in JSON and covert to native Broker format.

.NET Integration

  • Ability to directly invoke .NET programs through the CLR
  • C#, VB.NET natively added to WMB
  • .NET Assemblies into BAR files

Patterns based development - Provides a set of pre-built templates (based on best practice) & ability to create user defined patterns for reuse. Also, a web based pattern generation facility allows end users (which not much knowledge of WMB development) to configure and deploy these patterns directly onto broker.

DFDL Parser & Modelling Support: DFDL (Data Format Description Language) is a modelling language for describing text & binary data in a standard way (as data formats). Is is quite powerful as a variety of data formats (including industry Standard formats) are supported and it can be used for: Text, Binary & Bit level data, Fixed length, delimited, patterned, Bi-directional data, Nil & Out of range values etc.

As its a standard DFDL format is portable, editable & can be generated using tools – similar to XSD for XML data. DFDL builds upon W3C XML Schema 1.0 and uses a subset of XML Schema elements to model non-XML (text/binary data).

MRM Message Sets were used in earlier WMB days to model text/binary data. DFDL Support in WMB provides a powerful & standardised way to model & process data.

  • DFDL Parser (On-demand & streaming) is available for both ESQL & Java nodes.
  • Graphical Editor with Guided Wizards for DFDL modelling in Message Broker Toolkit.
  • DFDL SChema deployed as part of BAR file onto Broker, so no separate dictionary files to manage.

 Other WMB Features Worth noting:

  • Lineage of Data Analysis & Cross-tool data analysis using Infosphere Metadata Workbench
  • Improved Web Administration Console to send control commands (If my guess is right this should be using MQTT behind the scenes) with Role based access. Also, provides a public REST based management API.
  • Built-in Audit of Messages/data flowing through – persistence to DB2 and Oracle supported – MS SQL Server not supported.
  • Built-in Record, Capture & Replay Messages/Data facility using single or Multiple Brokers.
  • Simplified Cloud Provisioning through IBM PureSystems.

 ….and many more!

PS  I’ve also posted this on my personal blog

Please Rate and Like this blog.  If you can, please leave a Comment.

What is the OTA?

The OpenTravel Alliance provides a community where companies in the electronic distribution supply chain work together to create an accepted structure for electronic messages, enabling suppliers and distributors to speak the same interoperability language, trading partner to trading partner.

What does the OTA look like?

A set of XML schemas (XSDs) that define travel-related entities organised into common and domain-specific types. Domains include Air, Rail, Hotel, Vehicle, Insurance, Cruise. AirPriceRS example below (from XMLSpy):

AirPriceRS

OTA Pros?

  • Off-the-shelf extensible set of components developed by the travel industry that can save valuable time and effort when designing your XML message structures.
  • Provides a common vocabulary.
  • Helps towards developing a canonical schema/data model .
  • The OTA is updated twice a year, and all schemas are backwardly compatible.
  • Maximum flexibility – all elements and attributes are optional which allows companies to choose which parts they want to use.
  • Enables companies to derive maximum value from legacy systems by wrapping them in a service façade.

OTA Cons?

  • Provider systems may only support subsets of the OTA.
  • Companies often have their own internal vocabulary for OTA entities – mapping from one to the other can be confusing.
  • Bespoke schemas will still be required. However, XML namespaces allow OTA and bespoke vocabularies to be used side-by-side.
  • If you make any custom extensions to the OTA, these will be lost when moving to a new OTA version.
  • The flexibility of OTA entities can sometimes result in unwieldy messages.

Why use the OTA?

The choice of whether to use the OTA or a bespoke solution will ultimately depend on how applicable the OTA is for a specific travel sector and the take-up of OTA by provider systems in that sector. Smart421’s experience of working with Virgin Atlantic to develop their SOA offering is that using the OTA is beneficial.

 

Please Rate and Like this blog.  If you can, please leave a Comment.

As my conference season is fast approaching I have been looking at what will I be wearing this year. Well, Open Identity, Open Infrastructure and Open Integration are the themes of my Spring collection.

First up is Open Identity with the Gartner Identity and Access Management Summit ( #GartnerIAM ). I’m heading straight for the ForgeRock stand which I think will be buzzing this year as we’re seeing interest taking off in their products – and our partnership is really starting to get into its stride too.

Next up will be Open Infrastructure at the AWS Summit in London. This will be especially interesting following Smart421 winning two major AWS contracts recently and starting to operate in the SIAM role for National Rail Enquiries. My expectation is that this time around many more enterprises be declaring their AWS credentials – which is closer to my personal experience.

Last but not least, it’s Open Integration, back at Gartner for the Application Architecture, Development & Integration Summit ( #GartnerAADI ) in London on 16-17 May. This time we’re showcasing how Smart421 is turning the Service Factory concept “inside-out” to create the Open Enterprise. If you want to see more then come along and meet us there.

All three themes all tie back to how we see the Future of Architecture developing and that’s getting quite exciting too.

Wad of cash

© Flowah | Stock Free Images & Dreamstime Stock Photos

There has been a bit of a stir today with the patent Apple have taken out relating to mobile cash. Some twitter users thought it was a joke at first but actually Apple is only taking a method that has been proven in developing markets and applied it to the US market.

The basic premise is that registered “cash providers” can provide the folding green stuff to someone in need of it using their iPhones and iTunes plus location (maps) as the enabling technology.

At first this seems bizarre, why would I as a total stranger trust you to come and take cash off me? The proposed 1% commission doesn’t seem much incentive on the average cashpoint withdrawal but I guess on larger transactions it might be attractive.

On closer inspection, this is actually very similar to hugely successful mobile payments systems like the M-Pesa “unbanked” system that relies on networks of agents around rural communities in Kenya and other countries. Bill Gates recently championed M-Pesa as a great example of ideas that have “digitally empowered” subscribers but commented:

Without omnipresent cash points, M-Pesa would be no more convenient than traditional ways of moving money around. At the same time, it was impossible to persuade retail stores to sign on as cash points unless there were enough M-Pesa subscribers to make it profitable for them.

And is it really that much different to the ad-hoc person-to-person (P2P) mobile payments being promoted by Barclays Pingit and others?

This is just yet another example of an attempt at getting people using their phones for financial transactions. The “closed system” nature of M-Pesa wasn’t a barrier in a country with very little alternative and only a minority of people with bank accounts. The concept of using agents for so-called “Cash-In” and “Cash-Out” services made perfect sense. However, in countries with thousands of ATMs and where most places are now happier to take card payments than cash due to the downsides of handling cash I really can’t see this latest Apple patent catching on.

Flooded
Photo by East Coast Main Line

I have had the luck to attend the WUG at the Royal Society of Edinburgh on George Street again this year. This is a bi-annual event hosted in Edinburgh in the Autumn and, from this year, at IBM’s facilities on the Southbank in London in the Spring.

The good luck was attending, when maybe a third of people failed to go when the weather was bad, but the bad luck was when the East Coast mainline was flooded on the way down, causing a very late return home.

There were a few interesting sessions, including the Worklight acquisition for developing mobile applications on to a variety of target devices, including iOS and Android. Possibly more on that later. There was also a good session by Alan Chambers on sample use-cases for using WebSphere eXtreme Scale, which is a distributed in-memory caching technology. This is an interesting area, which merits further attention. The slide deck for the various sessions, including ones I could not get to, are on the WUG site.

David Sayers of MidVision also gave a talk about DevOps, which is the set of disciplines for bringing development and operations closer to each other. Although MidVision supply a tool in this space, David was keen to stay away for instances of tools, and to say that there is no magic bullet, and that it’s about process and people too.

A phrase which struck a chord with me went something like: “many firms don’t want to make a change in a production system because ‘Steve’ is on holiday and he’s the only person who understands this”.

It’s a spooky coincidence, as we have just published a development policy stating that all environments, and deployments to those environments should be 100% automated, as part of our policy refresh.

The presentation I want to elaborate on a bit this time, is the “How Lightweight is the [WebSphere] Liberty Profile” which is part of WebSphere Application Server (WAS) 8.5.

Simon Maple  (Twitter @sjmaple) – one of IBM’s technical evangelists on WAS – explained that this profile is an OSGi-based application server kernel which only loads up the libraries and subsystems, as you need them. The end result is a *very* lightweight application server.

So much so, that the session involved showing the application server running on a Raspberry Pi (£20-odd computer, the size of the palm of your hand, delivered as a circuit board).

To follow this up Simon then started up a WAS instance on his older android phone which was then serving up a blogging application via the phone’s wireless hotspot. I connected to it with my phone, and posted: “Amazing!” (yes Oscar Wilde won’t be looking over his shoulder), which then showed up on his monitor, along with some more imaginative posts.

I have the tooling, which was provided on a memory key in our “info” shared area for any Smarties to download.

The liberty profile tooling (eclipse plugins) even runs on a Mac, along with the dev runtime. Even though this runtime is not supported in production on Mac, this is a pretty major step for IBM. I would not have imagined it five years ago.
In terms of production use though, the liberty profile WAS is still a standard WAS install from the perspective of licensing… though I’m not sure how many PVU’s a Raspberry Pi has.

IBM also have a new Head of WebSphere Software, Stuart Hemsley, who was keen to get feedback from the delegates, both by announcement at the keynote, and by walking around during the breaks.

Our feedback was that the application server just costs too much compared to the likes of Tomcat and JBoss, and includes technologies which are starting to be less relevant (e.g. session clustering), as the application architecture moves to pursue session-statelessness. Yes you would expect to pay a premium for a big-league vendor-supported product, but not 10x as much.

It would be a shame for IBM to loose out on market share because of pricing, when they provide excellent tooling and support, as shown by a session on performance tuning the JVM… but that (as they say) is another story.

Organised by the UK Windows Azure User Group, this free all day conference provided a great opportunity to catch up on the latest developments, particularly given the Microsoft announcement a couple of weeks back.

Core to this announcement was Microsoft’s move into Infrastructure-As-A-Service (IaaS), and the key note by Scott Guthrie positioned IaaS (described as Virtual Machines) alongside Microsoft’s current Cloud offerings which to date has focused on Platform-As-A-Service (PaaS – now labelled Cloud Services by Microsoft) and Software-As-A-Service (SaaS – Office 365 for example).

MS Cloud Day

Despite the lack of internet connectivity for a large part of the presentation (what is it with Cloud demos and loss of connectivity?!?) Scott did a great job talking through the slides, clearly describing the alignment of each of the deployment options: On-premise vs Virtual Machines vs Cloud Services vs SaaS.

In addition to Virtual Machines, the new Web Sites service was also discussed which gives Azure customers up to 10 web-sites and 1GB of storage for free (whilst in preview period, see here for further details). The demonstration showed how easy it is if you simply want to re-host an existing web-site on Azure whether it be ASP.NET, Node.js, PHP or even classic-ASP. So the new Web Site and Virtual Machine services provide a simple route to hosting applications on the Azure platform, but there is the added benefit of the Azure management aids, real time statistics and in the case of Web Sites incremental deployments and continuous integration (through TFS or GIT) too.

So where does this fit with Paas? Well Steve Plank from Microsoft provided some answers with another demonstration. With Cloud Services you get host of services to call upon including Storage, Database, Identity, Caching and Service Bus and the demo showed that if you design your application from the ground-up utilising these services, you benefit from an end-to-end application architecture that can be deployed and running in minutes at the click of a button. It is this architecture that really gives you the elasticity and flexibility in the places you need it.

A good day and exciting times with the options and landscape constantly changing. Nicely summed up by another Smartie (Andy Carter), ‘I guess there’s a load more stuff I need to learn about’, when a couple of days after passing the Azure certification MS announced the new services…(Well done btw!)

Martin-droidAs last year, Smart421 are one of the sponsors for the Gartner Application Architecture, Development & Integration Summit in London. We’re only halfway through, but as we’ve already held the networking reception at the end of day one, I’ve got a photo to share :) . Our theme for the evening was robot racing which went down a storm, and things got a bit exciting and hence there was a robot limb casualty – as modeled by Martin.

I’ve had some great conversations with attendees and it’s reassuring to see that many of our customers have some architecture presence at the event. I’ve also benefited from a Gartner analyst 1-on-1 with David Cearley where we had a interesting debate about the future professional services landscape related to the design, implementation and support of cloud services (focused on IaaS/PaaS).

The key themes of the event echo and extend those raised at the Gartner Enterprise Architecture Summit of a few weeks ago – i.e. mobile, cloud, big data. I’m looking forward to hearing more tomorrow…

Next Page »

Follow

Get every new post delivered to your Inbox.

Join 801 other followers