Snapshot dotCMS 3.3Dec 07, 2015
Recently we’ve been talking internally about how we see dotCMS as one of the most flexible open source CMS and digital experience platforms available. With the introduction of dotCMS Enterprise Cloud, dotCMS is clearly leading in the category of flexibility for building advanced and high performing content authoring and publishing environments. Now with the release of dotCMS 3.3, we’re taking dotCMS performance and flexibility to an even higher level. Here’s a snapshot of some of the performance enhancing options you’ll have for tuning your dotCMS set-up with the new 3.3 release.
Focused on a handful of key points in this version, the main new feature in dotCMS 3.3 is the ability to externalize cache and the inclusion of a Redis cache layer/provider. Also on our priority list was to continue to build performance and reliability into dotCMS Push Publishing, a feature that more and more of our customers are using. And thirdly, we identified a few bugs and issues to be addressed, many of them coming directly from feedback from the dotCMS Community. Thank you for the feedback btw. Join the dotCMS Community here (shameless self promotion).
DotCMS Advanced Caching Schemes with External Cache
First and foremost, the new advanced caching schemes with external cache are just the sort of thing you’ll want to use in high availability and low latency situations. It’s a new way sys admins can gain added control and enhance performance in heavy load environments and as a business result, it’s one way you can keep your systems running better, faster and with fewer downtimes.
Highlights of dotCMS Advanced Caching
- Supports four caching providers: Guava, H2 (disk), Timed Memory, Redis (external cache service)
- Supports multi region caching - Set-up caching chains across caching regions, of which there are more than 60
- Ability to add/define your own cache providers - via plugin
- Configurable cache chains - by setting a property
- View cache region settings by name in dotCMS: System -> Maintenance and press the Refresh Stats button
- Note that configuration of cache chains and providers are available only in dotCMS Enterprise licensed editions. DotCMS Community editions use the default GuavaCache provider
- Note that there are some types of data and content that cannot be cached except in memory. More info here.
- Do not add any cache provider to the cache.velocitymemoryonlycache.chain property as velocity macros may not respond well.
- Recommended: Make all changes to caching schemes to the dotmarketing-config.properties file through a ROOT folder plugin.
About the New Redis Cache Provider
With 3.3, a Redis Cache Provider is now included with dotCMS Enterprise. Redis allows offloading cache to networked servers or a cluster of servers. The primary benefit realized with this approach:
- Redis caching servers can be scaled independently and at runtime in order to add or remove cache capacity and can improve performance
- External caching with Redis removes the dotCMS cache from the Java heap, which lowers the dotCMS memory requirement and may significantly speed up Java GC
- Cache “puts” and “removes” are network-wide
- There is no external syncing mechanisms that can fail - improved reliability
- dotCMS servers can be restarted with their caches fully loaded which is really cool, and speeds restarts which is most welcome in most situations.
- Supports master/slave environments - read from one, write to another
By the way… here’s what Amazon says about the benefits of their external caching service: “The service improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory caches, instead of relying entirely on slower disk-based databases.” Clearly the business value for this new feature in dotCMS is improved performance and reliability.
Because we’re an Amazon Technology Partner we’ve tested Redis caching using their ElastiCache service. If you are running on Amazon AWS this would be the first place to test and try out these new features. Not surprisingly, we’ve got detailed documentation fresh into cache (Ha!) and we strongly recommend you check it out before you jump in. TIP: Because environments tend to be unique with each dotCMS implementation, we encourage you to test, tweak and try different caching schemes to identify the ones that work best in your situation.
The new version of dotCMS brings our powerful push publishing feature added stability and fault tolerance with a series of bug and use-case fixes. The integrity checker has also been enhanced and we’ve added the ability to directly push languages and add languages to bundles with this release. We’ve added new docs too. Particularly helpful are push publishing dependencies and docs about push publishing with multi-lingual sites.
A few other noteworthy items included in version 3.3:
- Logging - Sys admins will want to be aware that in 3.3 we’ve upgraded to use Log4j version 2. You’ll want to check out docs here for the full story.
- Reindexing - dotCMS admin now has a Stop Reindex and Make Active button to allow you to safely stop the reindexing process from within dotCMS. Further, the reindexing process has also been improved by adding the ability to configure the number of times a failed record is retried. Logging and notifications of index failures have been improved with buttons added to display failed records and auto switch to a new index if needed.
- Viewtools - A User Agent View Tool is now available that gets user agent info e.g. Device Type, Operating System, from within a widget/Velocity code.
- CMIS - The CMIS library has been updated to version 1.3 and includes a couple fixes.
- Images - Note, in 3.3 when using the image editor, URLs are now comprised of content identifiers to facilitate use across multi-site implementations.
Important Info about Upgrading
There are some important considerations to be aware of when upgrading from previous versions to 3.3. They are spelled out in some detail here. Of course it goes without saying, yet we’ll say it again: before you upgrade please read the ChangeLogs and by all means have a working back up… our experience tells us that you might want to skip these steps… resist the urge! We hope you enjoy this newest, freshest and even more flexible dotCMS.
Editor's Note: By the way, for Agile and Lean development fans… since the release of 3.2.4, you might like to know that we’ve adopted an agile development approach/methodology with our dev teams here at dotCMS. We’re encouraged by the results and we are looking forward to bringing the same improvements we’ve experienced in our internal processes to our customers by way of added business impact and quality in our upcoming releases in 2016. If you ever want to talk Agile, drop us a note on the community forum. It’s been a great transition for our team and we expect it to benefit you as well.