The new IBM Digital Commerce platform brings to the table a couple of key gems for developers and administrators. In my opinion, which may or may not mean much to you, the two primary pieces of this new platform that make it a first class eCommerce platform are Liberty and Docker.
Before I start spewing out posts on Digital Commerce I need to put some definition around the architecture and how Digital Commerce will benefit you as an organization who supports an eCommerce platform.
Let’s start with Liberty. What is Liberty you ask? Liberty is a highly composable, fast to start, dynamic application server runtime environment. If you are a long time reader of my blog and have possibly even seen some of the articles I have published on DeveloperWorks, I was a pretty big OSGI fan when I worked on the IBM Notes Client in my last job at IBM. I even published an OSGI EventAdmin bridge which allows decoupled Eclipse plugins to communicate with each other in a pub/sub model. That lead to the Property Broker in the Notes Client where I wrote about how I extended the OSGI console in the Notes client to assist in debugging. However, that is not what we will be talking about here.
Liberty is based on OSGI, or Open Services Gateway Initiative. The OSGI runtime allows for an optimized run time for loading and unloading code. It is a dynamic platform that optimizes memory and processing by making sure the only code loaded into memory is code that needs to be run and if done correctly, can even unload code when necessary.
OSGi (Open Service Gateway Initiative) is a Java framework for developing and deploying modular software programs and libraries. OSGi has two parts. The first part is a specification for modular components called bundles, which are commonly referred to as plug-ins.
OSGi has two parts. The first part is a specification for modular components called bundles, which are commonly referred to as plug-ins. The specification defines an infrastructure for a bundle’s life cycle and determines how bundles will interact. The second part of OSGi is a Java Virtual Machine (JVM)-level service registry that bundles can use to publish, discover and bind to services in a service-oriented architecture (SOA). – link.
It is this framework that is now at the core of the IBM Digital Commerce platform. It is the key technology under the covers that will allow you to apply custom code to your server without worrying about whether or not it will be removed or overwritten during upgrades to the system. IBM Digital Commerce is actually split out into several Liberty Servers for optimal performance and extensibility: Search Server, Store Server, Transaction Server, and lastly but not least the Customization Server. As of this article, the Digital Commerce supports the following customizations (reference from the knowledge center):
|Component to be customized or configured||Available customizations or configurations||Projects used for task||For more information|
|Storefront||Store flow customization that run on the Store server||
||Creating your custom store|
||Customizing Digital Commerce Search|
|Configurations and verification tests||
||Extending Digital Commerce with xC extensions|
||Configurations of optional settings and features||transaction-config projects||Configuring optional features|
There will be more posts about customizations later but let’s move on to the second game changer you get with Digital Commerce, Docker!
Docker enables true independence between applications and infrastructure and developers and IT ops to unlock their potential and creates a model for better collaboration and innovation. A Docker container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings.
If you look at the diagram from the Knowledge Center you can see the separation of code into different Liberty Servers. You can also see how the code in Eclipse maps to the different Docker containers:
When you follow the instructions to setup your development environment it walks you through all of the commands you will use to configure the IBM Digital Commerce SDK locally on your machine. Docker will actually download images from IBM Bluemix and set up the Transaction server (app), Search server (search), IBM DB2 database (db), and IBM HTTP Server (web) Docker containers. Once complete you can now use Eclipse to code any of your extensions locally, test them out, and then push your code to the Digital Commerce instance in the cloud. Once you complete the setup instructions your workspace should look similar to this with your servers running:
This also means the local digital commerce server should be fully configured and running, including the search server. The final instruction in the setup is to launch the locally running store in a browser (notice the URL is localhost running on port 8443):
Being a first class, scalable, eCommerce platform isn’t easy, and as everyone knows upgrading a system is even harder in most cases. By having things like a clear separation for the store front and a clear separation for customizations (the xC architecture) you remove 99% of that frustration going forward. I look forward to seeing more extensions in the future but for now this is a wonderful start and in my opinion a brand new beginning for IBM commerce customers.