Washington Warblings

OSGi DevCon 2012 is underway.  The first day of the conference was all tutorial based and Neil Bartlett (aided by Gustavo Morozowski and Peter Kriens) gave a tutorial on “Mastering OSGi with Ease” to a packed room of 80 or so conference attendees.

Neil was also short listed for Bndtools in the Best Developer Tool category at EclipseCon.  Unfortunately he wasnt the overall winner, with the award going to the more than worthy Chronon Debugger, however making the final three from a submission list of 48 is a indication of the importance of Bndtools – well done Neil (and the other Bndtools contributors).

Day 2 of the conference is just starting and there are plenty of OSGi talks and presentations along with the OSGi BOF this evening.  For those of you who arent able to make it to Reston this evening for the BOF at 7pm the OSGi Alliance will be providing a live video and audio stream of the BOF via Ustream. You will be able to access this from the OSGi Channel here. We hope to be able to take questions from remote attendees via Twitter using #osgibof.

 

The line up for talks today is as follows:

10.30 – 11.15     Moving the Guidewire platform to OSGi     Paul D’Albora [Guidewire Software]

11.15 – 12.00    What’s new in the OSGi Enterprise Release 5.0     

                                                                                  David Bosschaert [Red Hat]Tim Diekmann [TIBCO Software Inc.]

13.30 – 14-15     Liberate your components with OSGi services     Alasdair Nottingham [IBM]

15.00 – 15.45     Smart Home Mashups: A New Application Opportunity     Walt Bowers [Hitachi CTA]

17.00 – 17.50     Micro Services in JavaScript     Simon Kaegi [IBM]

 

Then there will be the BOF at 19.00 with four more talks. Dont forget if you are in the Reston area the BOF is free and open for non-conference delegates too, and if you cant make it to Reston there will be a live video and audio stream. The BOF is being held in Reston Suites B.

If you are able to make it in person you will get the chance to enter a free prize draw to win a copy of:

  • OSGi in Action (Manning)
  • OSGi in Depth (Manning)
  • Java Application Architecture: Modularity Patterns with Examples Using OSGi (Prentice Hall)

The line up for the BOF is:

  • Java 8 Modules, OSGi and Jigsaw – Neil Bartlett [Paremus]
  • Subsystems: For those occasions where bundles are just too small… – Tom Watson [IBM]
  • How to simplify OSGi development using OBR – Peter Kriens [OSGi Alliance]
  • A surprise special session
Hope to see you at OSGi DevCon 2012.
  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

Are We There Yet?

Peter wrote a blog post yesterday about the OSGi Coordinator service, which is new in the R4.3 Compendium. I wanted to give a more concrete example of how it is used.

Sometimes we want to perform an expensive operation after a bunch of things have changed. For example, in the writable OBR repositories used by Bndtools we need to regenerate the index XML file after the user deploys a new resource into the repository. However, what if the user is deploying a hundred resources? It would be wasteful to regenerate the index after each of those deployments, because 99 times out of the hundred we will throw away the result.

The Coordinator service is therefore used as a way of chunking operations. When deploying a file to the repository, we check if a coordination is ongoing; if one is, then we join it and defer the regeneration of the index. Otherwise, we just regenerate the index immediately.

Here is the abbreviated code for put(), i.e. the method that does the deployment:

public File put(Jar bundle) throws Exception {
	File newFile = storageRepo.put(bundle);
	newFilesInCoordination.add(newFile);

	if (coordinator == null || !coordinator.addParticipant(this)) {
		finishPut();
	}
	return newFile;
}

When the coordinator service exists AND there is a current coordination, indicated by addParticipant returning true, we simply begin the put operation and remember the file that we have created in the context of this coordination. However when there is no coordinator or current coordination, we both begin and immediately finish the put operation. The finishPut method looks like this:

private void finishPut() throws Exception {
	regenerateIndex();
	newFilesInCoordination.clear();
}

In order to join the coordination we have to implement the Participant interface, which has two methods ended and failed. The ended method is very simple, we just call finishPut:

public void ended(Coordination coordination) throws Exception {
	finishPut();
}

In the failed method we clean up the changes that we started to make. The repository will be back in the state it was in before the put method was called:

public void failed(Coordination coordination) throws Exception {
	for (File file : newFilesInCoordination) {
		file.delete();
		// omitted some extra error handling and logging here
	}
	newFilesInCoordination.clear();
}

The thing I like about Coordinator is that it provides a very useful optimisation, but things can still work without it. In this case, when there is no Coordinator service available the repository regenerates the index on every put… which is exactly the behaviour that it had before I added Coordination support. Simply by adding a Coordinator bundle I can improve the performance of bulk repository updates.

There is a Coordinator implementation available in Equinox 3.8M6. As far as I know Felix does not have its own implementation yet, but the Equinox Coordinator works fine on Felix in my testing.

Incidentally, the use-cases for the Coordinator may remind you of the archetypal chunking problem in OSGi: when should the framework resolve bundles after a series of install, update and uninstall operations? Bundle resolution is not merely expensive but may actually produce spurious errors if done at inappropriate times, so the OSGi framework has always had the ability to chunk these operations: we call FrameworkWiring.refreshBundles method (or PackageAdmin.refreshPackages() prior to R4.3) to signal when we are done. The Coordinator service generalises this idea to make it available for our own applications.

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

OSGi DevCon 2012 – 26 to 29 March

 Read on to find out how you can get a $100 discount off our OSGi Training

OSGi DevCon 2012 is almost upon us.  Its being run in conjunction with EclipseCon again, however this year it is being held in Reston, Virginia instead of the traditional West Coast location.

As you would expect there is plenty of OSGi activity going on at the conference including an OSGi Tutorial by Neil Bartlett and Gustavo Morozowski from Paremus called Mastering OSGi with Ease. Richard Nicholson will also be giving a presentation on Cloud & OSGi – Looking Beyond the Virtual Machine which will include a demonstration of the Service Fabric.

The full list of the main conference OSGi DevCon talks and tutorials can be found on the EclipseCon website. Be sure to regsiter in advance to take advantage of the best prices for attending the conference, plus if you are an OSGi Alliance Member there is a $250 discount available.  Please see the OSGi Alliance DevCon homepage for details.

This isn’t all that’s happening though. There is also a free OSGi BOF and free OSGi Cloud Workshop, both of which are open to all.

OSGi BOF

The OSGi Alliance is hosting an OSGi BOF on the evening of Tuesday 27 March from 19,00hrs. This is open to all, OSGi DevCon / EclipseCon conference attendees and non-conference attendees.  The OSGi Users’ Forum DC Metro will be joining the session. The BOF will be held at the in the Reston Suites B room at the Hyatt Regency Reston [Map] conference hotel. There is no need to register so please just come along on the evening.

Topics for the BOF include:

  • Java 8 Modules, OSGi and Jigsaw
  • Subsystems: For those occasions where bundles are just too small…
  • How to simplify OSGi development using OBR
  • A surprise special session

OSGi Cloud Workshop

The OSGi Alliance will also be holding its second Cloud Workshop on Thursday 29 March between 09.00hrs and 13.00hrs.  This too is open to both main conference and non-conference attendees. Places are strictly limited for the Cloud Workshop and if you want to attend please Register Here. This workshop is a follow up to the workshop that took place at OSGi DevCon 2010 which led to the creation of RFP133 and anyone planning on attending is encouraged to review this RFP in advance.

 

There will be lots of Paremus  staff at the conference and OSGi events so be sure to grab us to say hi.

And if you are local to the area….or just interested in saving $100 off OSGi Training

Don’t forget we are holding a 4 day OSGi Training course in Herndon, VA between 4 to 7 June, 2012. If you catch one of the Paremus team at the conference we will be pleased to give you a special coupon code that provides a $100 discount off the early bird price.

Hope to see you in Reston next month.

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

Free OSGi BOF at DevCon 2012

The programme for the Birds-of-a-Feather (BOF) session at OSGi DevCon 2012 – co-hosted with EclipseCon 2012 – has been announced. I will be speaking about the Java 8 module system, Jigsaw and how they relate to OSGi: what are the differences; the pros and cons of each in different environments; and the potential for them to work together.

There will also be sessions on: OSGi Subsystems; simplifying development with the upcoming OSGi Bundle Repository (OBR) standard; and finally a surprise session from a mystery speaker.

The BOF is free to attend, you don’t need to be registered for OSGi DevCon/EclipseCon. So if you’re in the Washington DC area and interested in learning more about OSGi or meeting several of the top OSGi experts… you know where to go.

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

OSGi Training in 2012; London, NY, DC and Sydney

I will be running a series of OSGi training courses this year, with the first two being held in London and New York in February. The early bird pricing for London will expire in the next couple of days, so please do hurry to secure your place!

If you’re in North America and can’t make NY in February then there will be another chance to take the training in the Washington DC area (very close to Dulles airport). Then later in the year I will be down in Sydney, Australia.

You might be wondering about the “Masterclass in OSGi” series that I previously ran with Peter Kriens, who recently announced his resignation from the OSGi Alliance. Peter is very busy completing his duties for the Alliance and then will be fully engaged with his next venture, so he has told me that he is not able to participate in the masterclasses for the foreseeable future.

My new course is heavily based on the subjects and discussions that arose from the masterclasses that took place in 2010/11, though it is intended to be more accessible for OSGi beginners. I still believe it’s the absolute best way to quickly achieve a deep understanding and mastery of OSGi and modularity in Java, and I very much look forward to seeing you there.

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

Why modularity matters more than virtualization.

Ten years ago it all seemed so simple! Increase utilization of existing compute resource by hosting multiple virtual machines per physical platform; so consolidating applications onto fewer physical machines. As the virtual machine ‘shields’ its hosted application from the underlying physical environment, this is achieved without changes to the application.  As applications may now move runtime location without re-configuration; the idea of  virtual machine based ‘Cloud Computing’ was inevitable.

However, there are downsides.

Virtual machine image sprawl is now a well know phrase. If the virtual machine image is the unit of deployment; any software upgrade or configuration change, no matter how small, generates a new image. With a typical size of ~1 Gbyte  (see table 2 – http://www.ssrc.ucsc.edu/Papers/ssrctr-10-01.pdf) – this soon adds up! Large virtual environments rapidly consume expensive on-line and off-line data storage resource. This in-turn has driven the use of de-duplication technologies. So increasing storage cost and / or increasing operational complexity.

Once constructed, virtual machine images must be propagated, perhaps many times across the network, to the physical hosts. Also, a small configuration change, which results in a new virtual machine image, which needs to be deployed to many nodes; can generate hundreds of Gbytes of network traffic.

When used as the unit of application deployment; virtualization increases operation complexity, and increases the consumption of expensive physical network and storage resources: both of which are ironically probably more expensive than compute resource which virtualization is attempting to optimize the use of.

We’re not finished!

  • Some categories of application simply cannot be de-coupled from the physical environment. Network latency is NOT zero, network bandwidth is NOT infinite and locality of data DOES matter.
  • Virtualization complicates and obscures runtime dependencies. If a physical node fails, which virtual machines were lost? More importantly, which services were lost, which business applications were operationally impacted? Companies are now building monitoring systems that attempt to unravel these questions: further operational band-aids!
  • Centralized VM management solutions introduce new and operationally significant points of failure.
  • As the operational complexity of virtual environments is higher than their physical predecessors; there is an increased the likelihood of catastrophic cascading failure caused by simple human error.

Feeling comfortable with your virtualization strategy?

 

 

For all these reasons, the idea of re-balancing critical production loads by dynamically migrating virtual machine images, is I suggest a popular Marketing Myth. While many analysts, software vendors, investors and end users continue to see virtualization as the ultimate silver bullet! They are, I believe, deluded.

The move to the ‘virtual enterprise’ has not been without significant cost. The move to the ‘virtual enterprise’ has not addressed fundamental IT issues. Nor will moving to public or private Cloud solutions based on virtualization.

 

 

And so the Story Evolves

Acknowledging these issues, a discernible trend has started in the Cloud Computing community. Increasingly the virtual machine image is rejected as the deployment artifact. Rather:

  • Virtual machines are used to partition physical resource.
  • Software is dynamically installed and configured.
  • In more sophisticated solutions, each resource target has a local agent which can act upon an installation command. This agent is able to:
    • Resolve runtime installation dependencies implied by the install command.
    • Download only the required software artifacts.
    • Install, configure and start required ‘services’.
  • Should subsequent re-configure or update commands be received; the agent will only download the changed software component, and / or re-configure artifacts that are already cached locally.

Sort of makes sense, doesn’t it!?

The Elephant in the Room

Dynamic deployment and configuration of software artifacts certainly makes more sense than pushing around virtual machine images. But have we actually addressed the fundamental issues that organisations face?

Not really.

As I’ve referenced on many occasions; Gartner research indicates that software maintenance dominates IT OPEX (http://www.soasymposium.com/pdf_berlin/Anne_Thomas_Manes_Proving_the.pdf). In comparison hardware costs are only ~10% of this OPEX figure.

 

 

"Our virtual cloud strategy sounds awesome: but what are the business benefits again??"

 

To put this into perspective; a large organisation’s annual IT OPEX may be ~$2 billion. Gartner’s research implies that, of this, $1.6 billion will be concerned with the management and maintenance of legacy applications. Indeed, one organization recently explained that each line of code changed in an application generated a downstream cost of >$1 million!

The issue isn’t resolved by virtualisation, nor Cloud. Indeed, software vendors, IT end users, IT investors and IT industry analysts have spent the last decade trying to optimize an increasingly insignificant part of the OPEX equation; while at the same time ignoring the elephant in the room.

 

 

Modular Systems are Maintainable Systems

If one is to address application maintainability – then modularity is THE fundamental requirement.

Luckily for organizations that are pre-dominantly Java based; help is at hand in the form of OSGi. OSGi specifications and corresponding OSGi implementations provide the industry standards upon which an organisation can being to modularise their portfolio of in-house Java applications; thereby containing the on-going cost of application maintenance. For further detail on the business benefits of OSGi based business systems; see http://www.osgi.org/wiki/uploads/Links/OSGiAndTheEnterpriseBusinessWhitepaper.pdf).

But what are the essential characteristics of a ‘modular Cloud runtime’: characteristics that will ensure a successful OSGi strategy? These may be simply deduced from the following principles:

  • The unit of maintenance and the unit of re-use are the same as the unit of deployment. Hence the unit of deployment should be the ‘bundle’.
  • Modularity reduces application maintenance for developers. However, this must not be at the expense of increasing runtime complexity for operations. The unit of operational management should be the ‘business system’.

Aren’t these requirements inconsistent? No, not if the ‘business system’ is dynamically assembled from the required ‘bundles’ at runtime. Operations: deploy, re-configure, scale and up-date ‘business systems’. The runtime internally maps these activities to the deployment and re-configuration of the required OSGi bundles.

Simple.

In addition to these essential characteristics:

  • We would still like to leverage the resource partitioning capabilities of  virtual machines. But the virtual machine image is no-longer the unit of application deployment. As the runtime dynamically manages the mapping of services to virtual and physical resources; operations need no longer be concerned with this level of detail. From an operational perspective, it is sufficient to know that the ‘business system’ is functional and meeting its SLA.
  • Finally, it takes time to achieve a modular enterprise. It would be great if the runtime supported traditional software artifacts including WAR’s, simply POJO deployments and even non-Java artifacts!

Are there any runtime solutions that have such characteristics? Yes, one: the Paremus Service Fabric. A modular Cloud runtime - designed from the ground-up using OSGi; for OSGi based ‘business systems’. The Service Fabric’s unique adaptive, agile and  self-assembling runtime behaviors minimizes operational management whilst increasing service robustness. To get you started – the Service Fabric also supports non OSGi artefacts.

A final note: even Paremus occasionally bends to IT fashion :-/ Our imminent Service Fabric 1.8 release will support deployment of virtual machine images: though if you are reading this blog hopefully you will not be too interested in using that capability!

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

OSGi DevCon 2012 – Call For Papers Deadline Approaching

OSGi DevCon 2012 was announced last month and is taking place March 26 to 29 next year.  Its being run in conjunction with EclipseCon again, however in a break from tradition this year, its being held at the Hyatt Regency in Reston, Virginia rather than Silicon Valley.

If you plan on submitting a talk then dont delay as you only have just over a month left. The submission deadline is November 11, 2011.

Dont forget to tag your proposal as “OSGi DevCon” to make sure that it gets reviewed by the OSGi DevCon Program Committee. For full details on how to make a submission please take a look at the conference web site.

This is the biggest OSGi conference of the year with sessions for all levels. If you are using, exploring or just interested in finding out more about OSGi then be sure to put the dates in your diary and make plans to attend. There will be plenty of opportunity to meet with the experts, network with your peers and get the low down on the latest additions to the OSGi specifications.

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

Eclipse Dock Icons on Mac OS X

If you’re a heavy Eclipse user on Mac OS, you’re probably just as sick as I am of seeing the following in your Dock:

Dock

… and the following in your Application Switcher:

Switcher

How on Earth am I supposed to keep track of all those icons?? Well I just can’t, and I’ve been struggling with this nonsense for years. I’ve tried changing the Dock icon, and the name of the application, but these settings are still shared by all the workspaces that run with that copy of Eclipse.

Enough is enough, I need a per-workspace label for my dock icons, so I created a plug-in that I’m calling the Workspace Badge Plug-in for Mac OS. It looks like this:

Dock

… and this:

Switcher

By default it uses the last segment of your workspace path, but there isn’t much space so that often gets shortened with ellipses. So you can set your own short string in the workspace using a preference page:

Preference Page

The amazing thing is, this is probably the tiniest plug-in I have ever written for Eclipse, and is likely to be one of the most useful! If you want to try it out, install from the following update site URL (Marketplace listing coming soon):

http://macbadge-updates.s3.amazonaws.com/

The plug-in has not been exhaustively tested. It works for me on Eclipse 3.7 Indigo. I have no idea what would happen – and take no responsibility for what might happen – if you try to install it on an OS that is not Mac OS.

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

Coming In From The Cold – JavaOne

Seems like JavaOne was put firmly back on track this week. Great news after last years apparent discontent of it playing second fiddle to Oracle OpenWorld. Congrats to Oracle for steadying the good ship JavaOne and reigniting all the positive passions of the extensive and vocal Java Community.

OSGi also had more coverage than ever before at a JavaOne, 16 sessions in total, 3 of which were from the OSGi Alliance, and many others on open source projects and user case studies.

Not surprisingly Cloud seems to have been a dominant topic at the conference, with Oracle announcing their Public Cloud, not to mention the controversy and spin around the last minute dumping of, oops sorry apparently it had never been scheduled, Mark Benioff’s presentation.

From a Paremus perspective the conference excited us way more than we could have hoped. Firstly, Jason McGee (IBM Distinguished Engineer, Chief Architect, Websphere XD, Project Zero) endorsed the need for OSGi in the Cloud “for reducing footprint” in his presentation.

Secondly, Cameron Purdy (Oracle VP, Development), as reported by internet.com, described how the Service Fabric deals with provisioning applications:

“……….that application will come with a set of requirements,” Purdy said. “It’s going to show up in the data center, declare the requirements and the container will be responsible for injecting those things into the application.”

So it appears that both IBM and Oracle expect the next generation of Cloud to consist of  the dynamic installation of software components, rather than the pushing out of software images that is offered by Amazon, RackSpace, and most other Cloud Providers today. The Paremus CEO, Richard Nicholson, clearly called this out at the OSGi Community Event in Darmstadt last month.

So its great news that two of the largest software companies on the planet are now seeming to support an approach that Paremus has been pursuing since 2005 with the Service Fabric (we called it a Distributed OSGi Runtime back then!).

It would be fair to say that at times it has certainly felt like, as the picture at the top of this post shows, we have been running on our own in the cold!

We are sure we are not all the way yet, and we will certainly keep on running, but it certainly feels like we are, in the words of Bob Marley….. Coming In From The Cold.

For now, perhaps we can indulge in a few marshmallows toasted on the fire, as a taster for whats to come with the Dawn of Composite Clouds……. oh yum……..sticky, sweet and warm…..

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks

OSGi Community Event 2011 Over for Another Year

What a great couple of days this week at the OSGi Community Event 2011 in Dramstadt.  There were lots of great presentations and plenty of opportunity to network with everyone there. Our hosts, Deutsche Telekom, were great providing great meeting facilities and ensuring we were all fed and watered well.

All of the slides from the presentations at the event are now available from the OSGi Alliance web site. These include the ones from Richard and Neil which can also be found below. The video of the demo from slide 21 of the above slides can be found on YouTube.





 

 

  • Print
  • RSS
  • Twitter
  • Facebook
  • LinkedIn
  • DZone
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks