I finally wrote up some things that have been bouncing around in my head, various email conversations and touched on in a few presentations. I've cross-posted here in case anyone's interested.
Norman has written up an excellent piece about the new Reactive Streams effort with which he's been involved. Take a look and provide feedback as well as watching what we do in this are.
Hopefully it's obvious, but everything these days really has to be open. Open standards, such as those activities within the W3C or OASIS, and open source. Vendor lock-in needs to be a thing of the past and open source empowers people to ensure that is the case! Why does open source matter? Open source is at the heart of many of the technological advances over the past decade. Whether it's cloud with Linux, JBoss with Java EE, or Android for mobile, you don't have to look far to see open source footprints. The success of these waves and others is due to the communities that naturally build up around open source, the rapid feedback that users and developers can provide to those projects and, of course, the fact that it's easier to tailor the technologies to the problems at hand.
So what does the platform for the second decade of the 21st Century look like, apart from being open source? It has to be lightweight with a minimal footprint, built for cloud - not the limited definition of it we have today with just servers, but the more natural and future version which includes IoT. It also needs to be dynamic, adaptable, autonomous, self-healing … in some ways similar to a living organism. From a JBoss perspective technologies such as Fuse Fabric8 provide some of these capabilities today. And of course data management (virtualisation) is at the heart of the platform: being able to store and represent data in a range of ways, not just relational, and at such hugh scales, is a necessity.
This is really about modernising the application development platform, turning the development experience from what was needed at the turn of the 21st century to something that will define the next decade and beyond. I've outlined what this new platform needs to do in terms of functionality, but how will it happen? Or let me rephrase: how are we delivering this platform today so that it can be used by a wider range or people to develop an even wider range of applications?
Well for a start SOA is at the heart of this. Whether it's due to integration of disparate services across the clouds and clients, or what some people are calling Micro Services (which is really just SOA so don't be fooled) we're building on Fuse technologies such as Camel, A-MQ and of course Fuse Service Works, including Switchyard and S-RAMP. Back in the early cloud days we'd talk about the Internet Service Bus as a cloud version of the ESB, but these days there really shouldn't be a distinction. The SOA infrastructure, of which ESB is just a part, must be cloud enabled and mobile enabled and IoT enabled (you get the point) from the start. And of course where SOA and services are concerned you need a way of tying them together into business activities or tasks. The act of doing that immediately propels us into a different group of people: we're no longer talking about service developers but business analysts and that requires a very different approach, with very different tools. Fortunately jBPM, Drools and our acquisition of Polymita over a year ago have enabled us to create the new BPM Suite which targets business analysts.
Now we could obviously deploy these services and others into the cloud as individual components. But that fails to see that there are so many common requirements that they share, so many groups of developers or analysts will want to use more than one at the same time, that to not pull them together into a single platform is inefficient to say the least. This common platform is what we call xPaaS and it's definitely an example of where the whole is much more than the sum of the individual parts! Our xPaaS implementation is evolving even as I type, but today it consists of OpenShift and many key JBoss technologies such as:
- Application Container Services Based on Red Hat JBoss Enterprise Application Platform, the application container service delivers aPaaS capabilities that enable developers to build and deploy complex enterprise applications in the cloud.
- Integration Services (currently in developer preview) – Based on Red Hat JBoss Fuse and Red Hat JBoss Data Virtualization, Red Hat’s integration services allow developers to create connections to, in, and with cloud and on-premise applications and data.
- Business Process Services (currently in developer preview) – Based on Red Hat JBoss BPM Suite, the business process services are designed to enable business users to build, run, integrate, and manage business process applications that automate workflows and business processes within and across organisations.
- Mobile Services – Based on the AeroGear project, mobile services simplify and streamline support for numerous mobile client types while extending applications to those devices through capabilities such as push notifications.
And we’ll be releasing more components into xPaaS over the coming weeks and months! If you want an enterprise level Platform-as-a-Service then xPaaS from Red Hat/JBoss is the only implementation that matches the needs of developers today and will continue to evolve as those needs evolve.
What I've mentioned so far is here today. But what about the future? I've already mentioned that the platform we need today is very different from those which we've used in the past, but this is a never ending evolution. For instance, whilst EAP is core to everything we do today and so is Java EE, we're already seeing people develop serious applications with new frameworks such as node.js or Vert.x. For several years we've been talking about JBoss Everywhere and this continues today with our view to these new reactive platforms: we will be ensuring that where these frameworks need transactions, security, caching, replication etc. then we'll use those that we've got rather than reinventing the wheel. And it'll be polyglot too.
Red Hat has strong links for a number of academic institutions around the world. However, certainly within JBoss our strongest links are with Newcastle University, where we work closely with the students, teaching staff and researchers. It's no surprise that many of the JBoss team in our local office have come from there. Therefore, I'm very pleased to hear that the University has received one of only a handful of Centres for Doctoral Training (CDT). We've worked closely with the University on their proposal, which is around Big Data and Analytics, combining the practical elements of a traditional Computer Science PhD with the more theoretical/formal methods from statistical analysis. Congratulations to all of those involved in putting together the submission and getting it approved. And I look forward to the research that is done over the next years and working closely with the University team.