In this V9 Chats series, we go to the source and interview Commerce experts from the Development, Services and Support teams, who share their insight into the new features and capabilities of WebSphere Commerce V9.
Deployment Strategy and Docker
Q: What are the main deployment changes compared to previous versions?
Yi: Deployment has changed completely from V8. We now use Docker and deployments are done with Docker images. We've adopted a micro-services architecture. And the Commerce solution is split in function-based servers. While before there were Commerce and Search servers, in V9 there are 5 servers (Transaction, Search, Store, Web, Customization) and an extra server for utilities. But the major difference in v9 is we entirely removed the concept of "Installation" from establishing a runtime environment. With Dockerization, rolling out an environment is fast and simple.
Q: Let's start with Docker. What are the advantages?
Dima: There are many important advantages. For starters, environments are created from images, so you spend a lot less time with installation and configuration. Actually, you could say there is no install process anymore. You no longer need to install WC as you used to in V8. Instead, you now deploy your customizations on top of the out-of-the-box images and spin new environments. Your custom images can then travel from development to QA to prod. This ensures consistency and helps avoid issues. In V7 or V8, you might have ran into issues where an iFix wasn't applied to an environment. With Docker in V9 that won't happen. Another huge advantage is in scalability. With an orchestration framework you can basically add and remove servers with the click of a button.
Q: What tools do I need to run the containers?
Dima: In non-production environments, you can use Docker Compose, which helps you run multiple containers together. Remember all the servers (Transaction, Search, Store, etc.) run under their own container.
For production, and in general for all multi-server environments, you need to setup an orchestration tool such Kubernetes or Docker Swarm. These tools will allow you scale environment easily. You should also look into tools such as Vault, and GrayLog or ELK (Kibana) for log management. As containers come and go, it's important to setup a log management tool to ensure logs are persisted in a centralized location. The setup of the infrastructure requires some planning. I'll reference some good articles under the "Reading Material" section.
Q: What is the process for adding customizations to the out-of-the-box images?
Dima: The high-level steps are as follows: download V9 images from IBM, push them to your local image registry, add your customizations, create your own images, and deploy them to your environment. You can use WebSphere Commerce Build tool to build package for deployment, and then use this package to build a new image to include your custom code. To do that, you can create Dockerfile and use 'docker-compose' and 'docker build' to have a new custom image.
To automate this process you should build CI/CD (Continuous Integration/Continuous Delivery) pipeline.
The CI/CD pipeline can automate the whole process of taking your code from GitHub, pulling the latest out-of-the-box images, creating the new custom images, and running automation testings. Tools like Jenkins can be used for this. I added a reference to a whitepaper below that shows you how to setup a pipeline step by step.
Q: Is running the containers on the cloud an option?
Yi: Yes, the containers are standard and can be deployed to a Cloud solution that support Docker. For example, you can use IBM Cloud Private, which is based on Kubernetes. As the containers make deployment easier, Cloud deployment is a very interesting solution for V9 that you should consider. A whitepaper from DeveloperWorks is referenced below.
The authors shared the following links to continue learning about the topic: