Introduction to the IBM Inventory Dealer pattern
The IBM Inventory Dealer software is an easy inventory buying and selling pattern, the place you’ll be able to create numerous inventory portfolios and add shares of inventory to every for a fee. It retains observe of every portfolio’s whole worth and its loyalty degree, notifying you of adjustments in degree, which have an effect on the fee charged per transaction. It additionally enables you to submit suggestions on the appliance, which can lead to incomes free (zero fee) trades, primarily based on the tone of the suggestions. (Tone is set by calling the Watson Tone Analyzer, which shall be lined in a future article).
The pattern is meant to showcase what one would possibly count on after performing a lift-and-shift of a conventional monolithic, on-premises software to 1 that has been refactored as Docker(container)-based microservices working inside a contemporary Kubernetes-based setting. It intentionally reveals off the way to use the standard Java EE programming fashions, resembling JDBC and JMS, to entry conventional system-of-record sources, resembling a relational database or a message queueing infrastructure. Be aware that whereas the appliance often makes use of IBM Db2 and MQ, it additionally works nice with open supply applied sciences, like Apache Derby because the relational database, and with the JMS server constructed into Open Liberty, an open-source cloud-native Java runtime.
The idea demonstrates the way to run a microservices-based software in a Kubernetes setting. Initially examined in a MiniKube, the appliance is usually deployed to a Kubernetesplatform in public clouds like IBM Cloud Kubernetes Service or as hybrid cloud deployment atop Pink Hat OpenShift Container Platform. This pattern demonstrates utilization of varied IBM middleware merchandise, resembling Db2, MQ, and ODM, every of that are deployed with their Helm charts containers to Kubernetes, referred to as from Java-based micro-services working atop Open Liberty.
The entire supply code is publicly out there in GitHub. There are eight repositories beneath the IBMStockTrader org, every of which represents a separate microservice that delivers a selected functionality. For instance, the /stock-quote repository, offers the performance of wanting up the value of a given inventory and takes care of caching such values in Redis for a configurable time frame.
The constructed variations of every of those repositories can be found in public DockerHub. For instance, to work with the stock-quote microservice, you would wish entry to ibmstocktrader/stock-quote, otherwise you would pull it right down to your Docker register utilizing
docker pull ibmstocktrader/stock-quote.
Whether or not you like to clone the supply code from GitHub and construct every microservice your self, or simply use the pre-built photos in DockerHub, you’ll be able to simply get this pattern up and working in your personal Kubernetes setting.
As said earlier, this pattern has been factored right into a set of microservices that work collectively to ship the general software. The next diagram reveals the interactions between these microservices:
As you’ll be able to see, the portfolio microservice sits on the middle of the appliance, serving because the controller in a typical Mannequin View Controller (MVC) structure, accessed by a alternative of purchasers that present the view. This microservice takes care of persistence utilizing JDBC, messaging utilizing JMS, and makes REST calls to get inventory quotes or to drive a enterprise rule in IBM Operational Resolution Supervisor (ODM); plus, it drives Watson and invokes APIs in API Join within the public IBM Cloud. There’s additionally one old style Enterprise Java Bean (EJB) — particularly a Message Pushed Bean (MDB), which listens for the messages despatched from portfolio, and which invokes a notification service. Utilizing an Istio routing rule that may be specified per portfolio, it sends its notification both to a Slack channel (utilizing a “serverless” IBM Cloud Capabilities motion sequence) or as a tweet to the @IBMStockTrader Twitter account.
Although all the back-end microservices on this pattern are written in Java, we enter the world of polyglot programming in relation to which person interface you select. One is written in Java, and the opposite in Node.js/Vue.js. Each name the very same REST providers from the portfolio microservice, however every renders the outcomes differently within the net browser.
Be taught extra
Test it out on GitHub
Study IBM StockTrader on Git Hub and contribute to its code.
Be taught extra in regards to the open-source cloud-native Java runtime, Open Liberty
Get hands-on studying and constructing with the APIs and applied sciences talked about within the article utilizing one of many Open Liberty guides:
MicroProfile and Jakarta EE
See what MicroProfile and Jakarta EE supply when it comes to open cloud-native Java APIs for Java builders.