Main

Fusion Middleware Archives

July 7, 2007

A Coherent Story

Oracles Latest Technology Acquisition

This week I managed to sit in on just over half a new training course on Oracles new Coherence product, acquired through the purchase of Tangosol.  Coherence is described as a data grid, although as we will see that is not a particularly helpful image.  I knew that Steve Harris, our VP of Java Products was keen to acquire something like a data grid, whether by buying one or building one, and it looks like now his wish has been granted.

What is Coherence

Describing coherence as a data grid is a little like describing the QE2 as a boat.  It is 100% accurate but does nothing to convey what is possible.  At the heart of Coherence is some clever Java based cluster software that dynamically adds new members and more importantly keeps all members informed about who is a member of the cluster (coherence).  Layered on top of this is a distributed caching mechanism that distributes cached items across the cluster and replicates the data for high availability.  Changes to entries in the cache cause events to fire, these events can be captured by any or all nodes in the cluster providing a consistent view of the distributed data.

What is it Good For

There are lots of scenarios where Coherence adds value.
  • Data Caching
Data can be lazily loaded from a database and stored in the cache, providing a huge reduction in database load and accelerating the access of applications to the data.  Different kinds of application can access the same data from memory.  This might be useful for an online retailer, providing easy access to the stock descriptions and at the same time providing a consistent view of stock levels across the whole product range without any complicated coding in the applications or any extra load on the database.
  • Isolation of Database
By storing all data in Coherence (loaded from a database) and then providing a lazy write mechanism into the database then it is possible to guarantee that all changes will be written to the database, even if the database goes down or individual nodes in the Coherence cluster go down.  This is a major step forward in HA configuration as normally the availability of a system is the product of the availability of its individual tiers, with coherence we can remove the database from the equation improving the availability percentage.
  • Distributed Processing
In addition to distributing data across the cluster we can also execute code locally in the cache against a set of objects, removing the need to transfer large amounts of data into a single point for processing.  This can be thought of as similar to stored procedures in a database, but inherently distributed and scalable making it possible to perform large scale calculations on distributed data sets..
  • Event Driven Processing
The ability to monitor state changes in the cached items allows us to build very event driven systems.  A change in a particular data item would allow us to trigger any action that was necessary such as a database update or the launch of a BPEL process.  Filtering allows us to notice only those events we are interested in.

Future Possibilities

The acquisition of Coherence will probably have profound implicatoins for fusion middleware moving forward.  Already there is integration with the session handling code in OC4J.  Looking further afield we can envisage any component that requires clustered operation making use of the underlying coherence framework.  Some possibilities include
  • A JMS implementation that is memory based but highly available and with guaranteed delivery capability.
  • BPEL persistence being distributed through the cache before being written to the database.
  • Events being transmitted to a clustered BAM engine.
  • BAM taking advantage of the filtering to enhance its event engine.
  • A notification service to inform middle tier components of updates in the database.
I suspect over time we will see Coherence embed itself very firmly into the underlying fusion middleware infrastructure, adding data grid capabilities to a variety of components.  It will be interesting to see how the acquisition is absorbed into the rest of the middleware stack, watch this space.


August 8, 2007

Off the Shelf Remarks

Off the Shelf Remarks

Thought I would mention some of the books on my bookshelf that I find useful time and time again with BPEL and Fusion Middleware.  These are generally reference books and are not the best tutorials but I find them invaluable for looking things up.
  • XSLT Cookbook by Sal Mangano published by O'Reilly

    • This is the sort of book that you go to with the a question such as how do I calculate the sum of node values in an XML document and it has a pre-built solution for you.  If the template you need isn't there then there is often something that can be easily adapted.  Very useful.
  • XSLT by Doug Tidwell published by O'Reilly
    • Useful reference book for XPath functions and rules as well as XSLT.  I find appendix A "XSLT Reference" and appendix C "XSLT and XPath Function Reference" extremely useful.  It also contains a very useful appendix D  "XSLT Guide" which is actually a brief FAQ that provides ideas for how to achieve particular ends in XSLT, such as how do I list all the elements in an XML document.
  • XML Schema by Eric van der Vlist published by O'Reilly
    • A good combination tutorial and reference book for defining and understanding XML Schemas.  Doesn't just explain the types but gives good examples of their use and also considers the bigger picture of what is an isn't good practice.
  • Java in a Nutshell by David Flanagan published by O'Reilly
    • A couple of months ago I sold my original first edition of this book, along with a third edition copy.  This was one of the first Java books available and in my opinion is still the best.  Handy reference to the language and the core libraries.  Unfortunately the huge growth of the Java class libraries means that this book can only cover core language features and over the years other topics, such as Swing,  have had to slip out to make room for the newest core language features.
  • Business Process Execution Langauge for Web Services by Matjaz B. Juric et al published by Packt
    • Still the only decent guide to the BPEL language outside of the manuals.  I only have the first edition which covers all the essentials and more.  The second edition appears to have more context on BPEL and SOA and also more about Oracle BPEL Process Manager.  Does a great job of covering Oracle BPEL PM!
There are lots of other books in my computer science bookscase but these are the ones I keep having to take off my desk to tidy it up!

January 18, 2008

BEA Joins the Team

BEA Acquisition Thoughts

You may not be surprised to me hear me say this but I am really excited by Oracles recent acquisition of BEA, expected to complete in October of this year.  If you haven't read about it yet then here is the official Oracle announcement and press release.  On Wednesday Larry and Alfred took to the phone to explain the move to analysts (see transcript).  Already the pundits are giving their views which are generally positive.  Below are a few views I found on the net.
I think this is great news for a number of reasons.
  • Firstly the combination of BEA and Oracle will really give IBM something to worry about in the middleware space, the combined company and product stack will show superiority over IBM in almost every area of middleware.
  • Secondly the combination will provide a Java middleware powerhouse that will increasingly carry the fight to .Net, particularly in the user experience area.
  • Thirdly it removes the chance of SAP buying BEA (I know they are chalk and cheese in philosophy and management styles but it was still a worry).
  • Synergies will be easy to find.  Both BEA and Oracle have a strong standards focus.  It took Thomas Kurian to get Oracle Middleware firmly onto a standards based view of the world, but it is now there.  BEA has always had a strong standards based approach in its WebLogic range.  Because of these standards based appproaches key pieces of Fusion Middleware already run on the WebLogic, providing customers with lots of ways to rapidly combine the best of both Oracle and BEA middleware.  It will also enable the engineering teams to share a lot of functionality across what will probably become convergent platforms.
  • Fusion Middleware has a "hot-pluggable" approach that allows components to be mixed and matched.  The acquistion of BEA will give a new impetus to making sure that "hot-pluggable" is easy and provides a mechanism
  • From a purely selfish view it will let Oracle focus on its two main midleware competitors - Microsoft and IBM.
Of course we will have to wait for October 2008 for the deal to complete so we won't actually see any action on the ground until 2009, but then it will get interesting.

Disclaimer - these are my own views and not those of Oracle Corporation.

April 29, 2008

BEA Completes

Today the EU gave approval for the Oracle acquisition of BEA and so completed the acquisition.
Now that the bean counters have had their fun it is the engineers turn.  Although individual products will continue to be supported it will be exciting to see a convergent road map for Fusion Middleware, WebLogic and AquaLogic.  Both companies invested heavily in standards based computing and so there are lots of opportunities for convergence and synergies between the product stacks.
The acquisition of BEA also gives Oracle access to a whole new set of contacts within their customer base.  Although Oracle and BEA have a large overlap in their customer base they tend to talk to very different parts of the business.  The combination of both companies will open up new opportunities for existing Oracle product lines as well as for the newly acquired BEA product lines.
The next few months will be very interesting times.

July 1, 2008

Fusion Middleware Roadmap

I spent last week in Redwood Shores listening to product development outline their plans and directions for Fusion Middleware in the light of the BEA acquisition.  Today we made those plans public through a webcast hosted by Charles Phillips and Thomas Kurian.

I think some of the former BEA folks were a little surprised to see WebLogic Server chosen as the Oracle JEE platform over OC4J, but it makes a lot of sense – which product has the larger deployed base, which has the greater developer mindshare, which did we just spend billions of dollars acquiring.  I was delighted that Thomas and Steve Harris (our VP for Java products) were able to make such a clear decision so early on, as it gives the market a great deal of clarity.

Similarly I think the decision to promote the AquaLogic Server Bus into the Oracle SOA Suite as the preferred ESB is again the right decision.  Personally this is causing me a lot of problems because I am in the midst of writing a book about the SOA Suite and now I have to revise it to use the Oracle Service Bus (nee ALSB) rather than the old Oracle ESB :-(  But otherwise it is a good thing.

Over the last few months as I have looked into the BEA product set I have been surprised how complementary much of the technology actually is.  For example one area where Oracle has been weak in product is around the governance space.  This area will receive a big boost from the Oracle Enterprise Repository.

The area of Business Process Management is an interesting one, because in the past we have pushed BPEL – which is really a service orchestration engine – as a BPM tool.  The addition of BPEL to ALBPM in the BPM Suite will strengthen the ALBPM story and at the same time continue to allow BPEL to be used as a service orchestration engine in the SOA Suite.  In the longer term the plan to converge the two products into a single run time will be worth watching.

I think the most surprising area to me was in the area of transaction processing.  Certainly there are strong synergies between JRockit Real Time and Coherence – boosted by the WebLogic Application Grid offering.  But the surprising bit was the emphasis that Thomas Kurian made on Tuxedo.  It seems as though the Tuxedo guys are being rehabilitated after years in the wilderness at BEA since the WebLogic acquisition.  I was amazed at the increase in connectivity and functionality that has occurred in Tux since I last came into contact with it some ten years ago.

So all told, I am happy about the stated product directions.  They all seem to drive towards Thomas’ goal of a single, complete and integrated middleware suite.  The next couple of years may be a bit bumpy as we smooth out the differences between the two product sets, but even today I think we have a cracking offering that is a world beater – not that I am biased of course!

November 5, 2008

Setting the Context

Setting the Context with Oracle Enterprise Manager

The last few weeks I have being trying to get my head around some of Oracles recent acquisitions in the operations management space and it struck me how they all talk about context but all mean something different by it.  Within Oracle these products come under the Enterprise Manager banner and specifically I have been looking at Oracle Real User Experience Insight (acquired from Moniforce), Oracle Application Diagnostics for Java and Oracle latest acquisition Clearapp.

What do they mean by context?

Each of these products talks about context but means different things.

Oracle RUEI means the goup of pages that make up a web session, that is context as expressed through a user session being held between web pages.  This allows it to monitor usage of web resources and provide information for example about which stage of a sales process customers give up on, providing useful insight into how look/buy or look/book ratios might be improved.  So in this case context is used to drive direct business information.

Oracle AD4J means the call stack and any related database sessions, so much of this is focused around stack traces, threads and related database sessions.  This allows it to monitor and identiofy code bottlenecks across the Java and database tiers in the context of the sequence of call made, providing context for a single request in a JVM and its related database activity.

ClearApp has yet another definition of context, in this case context is at the SOA level of relationships between components.  So context means which entry point drives traffic into which other components in the system.  This context provides information about how one component calls another in a SOA infrastructure, potentially across multiple JVMs and multiple invocations.

The same but different!

I just thought it was sort of intersting how the same word got used for different meanings.I

f I am analysing web site performance then I am interested in the context of calls from a single user perspective and what type of experience that user has of my web site.  This is the RUEI context.

If I am trying to monitor dependencies between SOA components and identify bottlenecks for particular SOA entry points then I am interested in the relations between components and which components are placing limits on the scalability or performance of my system.  This is the ClearApp context.

Finally if I have performance problems with my JEE code and its database usage then I am interested in the code path taken for particular servlets, jsps and ejbs.  I can use this to examine where my code is spending its time for a particular entry point and take action to improve its performance. This is the AD4J context.

At the moment these are all separate components in separate packages in Enterprise Manager but there are some obvious synergies between them and I can see operators wanting to take information gleaned from one and use it in another.  For example I detect a slow web page using RUEI.  I examine that web pages code usage in AD4J and discover that it is spending most of its time in a web service call.  I note that web service call and examine it using ClearApp where I discover that the problem is actually related to a BPEL process which I then ask my developers to tune to improve the web [age response time.

More SOA toys but this time more for operators than developers.

December 19, 2008

My Application is Too Fast … NOT!

My Application is Too Fast … NOT!

I have lost track of the number of customers who come up to me and say “Antony, I’m worried that my application is too fast”.  Actually I have just checked my notebooks and I can announce that the number is zero.  What I do get asked a lot is what technologies does Oracle have to help me cache my data.  Obviously there are lots of caching options in different Oracle products, but there are three key technologies that focus specifically on caching to improve application performance;

Some customers (and Oracle sales reps) get confused by these products and which is most appropriate for particular situations so I thought I shed a little light on the subject.

A Simple Application Model

Before considering all the caching options it is worth considering a simple model for web based applications.  A typical application receives a request from a browser, parses the request, does some processing in the application server, requests data and/or updates a database, formats a response and returns the response to the browser.  Lots of opportunity in there for things to go slowly.

image

With this simple, but surprisingly accurate model we can examine where the 3 caching products fit.

Database Caching

The typical database server spends a lot of time ensuring that frequently accessed data is available in memory so what can be done to improve an already optimised process?  Well the use of Times Ten as an in-memory database can give a significant performance boost when reading data because it holds a subset of data from the database in memory, usually on the same machine as the application server.  This avoids the network hop associated with accessing the database server, it also eliminates any need to read data from disk.  Times Ten can be configured to act as a pass through cache so that any requests that cannot be satisfied by Times Ten are passed on to the database transparently, requests may not be satisfied because the data is not being cached, or because the SQL construct being used are not supported in times ten.  Updates may also be processed in Times Ten with support for write through (update cache and write to database as part of request) and write behind operation (write data in background after client thinks request has been processed).  This is important because it enables Times Ten to be largely transparent to the clients, meaning that it is easy to add Time Ten to an existing application by just re-configuring its database connections.

image

To summarise Times Ten can cache data in memory next to the application that requires it, providing a performance boost, and continues to provide a SQL interface to that data, so the addition of Times Ten can be made transparent to the application.  Times Ten can be used to accelerate performance of SQL queries where the data sets can be held in memory.  Introduction of Times Ten should have no impact on existing code so it is an easy component to try out to see how it improves performance.

Web Caching

When we look at what the application is doing in our simple model we are struck by the amount of work required to generate a web page.  The Web Cache sits in front of the application server and returns cached pages without the need to call the application server.  Unlike Times Ten, the Web Cache caches data on demand, so it will only give a performance boost the second and subsequent times it is asked for the same data.  If Web Cache does not have a page that has been requested then it transparently requests the page from the application server and then saves it locally in memory before returning the response to the client.  Web Cache is configured to decide what content is cached and which content, such as updates, is always passed to the application server.  The Web Cache has several ways of caching data;

  • Whole page caching – the whole web page is cached, this is non-intrusive to the application, requiring no changes to be made to how the application operates.  This is a good way to start using web cache.  Web Cache understands parameters to pages and can be made to ignore certain parameters if they do not affect the content of the page.
  • Partial page caching – the application is modified to return the page in multiple logical sections, often these sections are re-used across pages.  For example a portal will often use this technique, each portlet being a logical section.  Even though no user may have the same page, each user may be using the same data in portions of the page that are also used by other users.  The Web Cache will assemble the multiple portions of the page into a single page that is returned to the browser.  This approach allows a much higher degree of caching than the whole page approach but it does require the application server to return partial pages rather than whole pages.  This is a little intrusive in that the application must be modified to take advantage of partial page caching, however often applications are written this way and have a top level page that includes a number of smaller page segments.  Applications that use jsp:include are very easy to modify to take advantage of partial page caching.

image

To summarise Web Cache can cache both whole pages and partial pages with minimal modification to the application.  Interestingly the partial page markup uses the same tags as the Akamai content delivery network which places servers at key points in the Internet and provides caching of content closer to the browser.  The Web Cache can provide a large performance boost to principally read only sites such as e-tailers.  The ability to control the freshness of the data and support for explicit data invalidation means that the Web Cache can actually cache far more scenarios than most people appreciate.

In Memory Data Grid

The poster child of the Oracle caching technologies is the Oracle Coherence in memory data grid.  It provides a way to cache very large data sets in memory by not limiting the memory to that available in a single machine but instead using the memory of multiple machines, the grid, to cache the data.  For caching purposes Coherence can be set up as a three layer cache, a local cache for recently used data, a distributed cache across multiple machines to store large volumes of data, and a backing store to retrieve data that is not held in memory.  For example a very large data set of terabytes in size may have a subset of some tens or hundreds of gigabytes frequently used, with individual applications having a working subset of a few tens of megabytes.  The working subset may be stored in a local cache (just by specifying that there is a local cache and its aging and eviction policies, no need to explicitly decide which data is cached), the frequently used sub set may be stored in the data grids distributed cache (again using the same kind of rules as the local cache, but now acting on a larger data set) and finally any cache misses can be satisfied by going to backing store, which is usually a large database.  Writing of data may be done in either a write through approach where the client waits for the data to be written to the backing store or in write behind mode where the data is written into the cache (which replicates the data for safety) but only written into the backing store when it is convenient whilst the client continues processing.  To further improve performance queries for data may be distributed across the data grid and aggregation calculations are also done in parallel on all data grid nodes.  The ultimate performance boost can be obtained by moving processing into the data grid itself, moving the processing to the data rather than the other way round.

All this sounds ideal and begs the question why don’t we use Coherence for everything.  Well within Oracle there is a move to use Coherence extensively within a number of products, but this is an aspiration rather than a reality for most products currently.  The reason is that Coherence is an intrusive technology that requires the application to be modified to take advantage of it.  To use Coherence for simple caching generally requires the least modification to the application and exploiting the distributed processing capabilities of the data grid often requires the most modification.

image

In summary Coherence can provide a tremendous performance boost to both read and write intensive applications, but it requires modification of the application to get this benefit.  Many customers have found it well worth their while to make these modifications but it does increase the time taken to introduce Coherence into an environment.  In the future expect to see more and more Oracle products providing a Coherence option to boost performance.

Summary

If you believe your database is a bottleneck in your performance then consider Times Ten as a transparent way to boost SQL performance for both read and write operations.  If you want to also reduce the load on your application servers then consider the user of Web Cache as a front end for read intensive sites.  For more powerful distributed caching and massive scalability consider using Coherence.  Note that both Coherence and Times Ten can be used with any application, not just web applications, whilst Web Cache by its nature can only cache HTTP and HTTPS responses, indeed many customers use Coherence not just as a data grid but as an application platform, making data grid the core of some of their environments.

Personally I don’t believe there are many sites that couldn’t benefit from caching technologies, all three technologies have their place and all of them can boost the performance of even supposedly “uncacheable” data.  The benefits of using caching are three-fold;

  • Reduced response time (latency) – users get their response faster
  • Improved scalability (throughput) – better use is made of resources to potentially allow increase in use of computing resources to grow at a lower rate than the increase in use of the application.
  • Reduced hardware (efficiency) – better use of made of resources and so a need for less hardware.

So which cache is best for you?  I have no idea, but hopefully you can now make a more informed decision!

March 31, 2009

Useful Oracle Links

Useful Oracle SOA Links

I recently put together some useful Fusion Middleware links for a customer and thought I might as well share them here.

General SOA Material

Samples

Oracle by Example Home Page has lots of samples.

BPEL Material

Rules Material

Security material

Repository Material

Supported Configurations

Books (Links to Amazon)

These are not endorsements of these books, just an indication of Oracle SOA/IDM specific books of which I am aware, of course I do endorse the first one which I co-wrote with Matt Wright :-)

April 2, 2009

Coherent Management

Managing a Coherence Data Grid

One of the challenges with Coherence has been the limited management tools.  There is a built support for cluster wide JMX, but this only provides a limited management capability and requires a JMX console, see documentation for more details.  Using a JMX console is fine but it isolates the management of the cluster from other management tools, such as database and web servers.  Last month Oracle released a new Enterprise Manager pack, the Oracle Management Pack for Oracle Coherence.  This pack enables you to manage and monitor Coherence from within Enterprise Manager.  If you are running Coherence as part of WebLogic Suite or WebLogic Application Grid then the management pack is included in those suites.  If you are running a standalone Coherence (standard, enterprise or grid edition) then the management pack is available separately.  So go and give it a try by downloading Enterprise Manager 10.2.0.5.

April 6, 2009

How to Build a Product Suite

image How to Build and Manage a Product Suite

I was in Redwood Shores this week with a customer and we were lucky enough to have Thomas Kurian speak to us for an hour in a Q&A session.  One of the customers I was accompanying, Michael, asked a really useful question, well actually he asked several but I am only blogging about one of them.  Michael is in charge of his company’s largest software development that will redefine the types of service that can be offered by his company.  Quite naturally he is feeling a little pressured so his question to Thomas was not related to technical issues but to the philosophy of integrating different products into a consistent product stack.  Obviously Thomas has a great track record on this, WebLogic Suite combines products from Oracle, BEA and Tangosol in a single product stack; SOA Suite combines products from Oracle, BEA and Oblix into a single product stack etc.

Thomas identified the following steps that can be applied when integrating products into a consistent product set:

  • Group similar functionality together into Suites.
    This enables a focus on related pieces of functionality and avoids being overwhelmed by the sheer size of the product stack.  it also simplifies the messaging that has to be communicated to the market.
  • Get the pieces to work together.
    Within a suite the emphasis is on making the components work well together, eliminating duplication of function.
  • Pick up dependencies in a single way.
    Everyone should access the functionality in the same way.  This takes advantage of common abstractions and makes it easier for clients of the suite to take up new functionality in a seamless fashion.
  • Suite pricing encourages big picture thinking
    Customers generally want several related pieces of technology.  Bundling them together into suites at a combined price focuses the development teams not just on their small piece of the puzzle but on the wider suite, giving them an incentive to make sure it all works together.
  • Mandate
    In addition to the carrots mentioned above, force people to pick up functionality in a single way and to be consistent across components in the suite.

In conclusion Thomas identified three principles that guide the above steps

  • Unify – using suites
  • Simplify – everyone accesses functionality in the same way
  • Mandate – force everyone in your organization to play by the rules

Thomas was adamant that Fusion Middleware would be more than a simple branding.  Over the last 5 years Thomas has moved the Fusion Middleware towards tighter and tighter integration.  The latest demonstration of this will come later this year with the release of SOA Suite 11g.

Michael wasn’t looking for a silver bullet, but I think he did appreciate Thomas’ thoughts on this one.

About Fusion Middleware

This page contains an archive of all entries posted to Antony Reynolds' Blog in the Fusion Middleware category. They are listed from oldest to newest.

Development is the previous category.

Miscellaneous is the next category.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type and Oracle