“A [person] thinks that by mouthing hard words he or she understands hard things.” – Herman Melville
How many times have you met with a team of engineers, architects, or even clients to talk about the designs of a software feature, and a single word used caused mass confusion because everyone had a slightly different definition? (Ugh, why are words so hard?!)
I have never found a more challenging concept to talk about than Representational State Transfer (REST). What does REST and being RESTful mean? Are resources the same thing as entities? Where do representations come into the mix? This blog post will answer these questions and describe the RESTful architectural style.
Continue reading “REST Architecture”
Kogito is a cloud-native business automation framework for building intelligent business applications. It is based on battle-tested runtime components (like Drools, jBPM, OptaPlanner), and it allows the development of process and business rules centric cloud-native applications for orchestrating distributed microservices and container-native applications. It takes advantage of the many benefits of the container-native platforms (like Kubernetes, OpenShift) as it was designed from the ground up for those platforms.
Some of the distinguishing characteristics of Kogito are as follows:
Continue reading “Cloud-native business automation with Kogito”
Container-native applications are becoming more and more complex, consisting of various services and features, each component with its own security constraints and complex network policy rules. This makes it more difficult to perform day two operations once the cloud-native applications are deployed.
While upgrades, patches, and provisioning can be done using Ansible playbooks or Helm Charts, application lifecycle, storage lifecycle, and other deeper analysis cannot be done and requires application support team intervention.
Operator Framework initiative introduced Operator-SDK framework several years ago to standardize Kubernetes Operators development and make it easier for the Kubernetes community to create Operators and control container-native applications lifecycle.
Continue reading “How to control Container-Native Applications with Ansible Operator”
This post is about an experience at a customer engagement in which I had the opportunity to use an open source library from the Java Spring Framework with which I was not familiar. The customer has a ReactJS web client using a RESTful service as a controller. The web client needs to invoke services on the back end. However, for security reasons, the web client has no direct access to the back end, so the web client calls a controller REST API, which in turn makes a pass-through call to the back end service REST API.
I was tasked to provide a way for the web client to be notified of ongoing events taking place on the back end whenever a long-running multi-step process was invoked. Since Spring Boot was used for both the web controller and back end, WebFlux was chosen.
Continue reading “Java Spring Webflux Experience”
Enterprises have various options to implement integration solutions. Some of them can be purchased as a pre-built product ready for installation or procured from an Integration Platform as a Service (PaaS). In contrast, others can be built from scratch if there are enough resources and funding available along with a desire to reinvent the wheel. Most of these products have both pros and cons. In this blog post, I discuss open-source ways to design and develop enterprise integration solutions using integration technologies from Red Hat.
Continue reading “Enterprise integration solution implementation made easy using Red Hat Integration”
I recently collaborated with fellow Red Hatters to create a whiteboarding video that introduces OpenShift Serverless at a high level. In this article, I build upon that YouTube video and my recent work with Quarkus to create a hands-on deep dive into OpenShift Serverless. This article walks you through using the OpenShift Serverless operator to seamlessly add serverless capabilities to an OpenShift 4.3 cluster and then using the Knative CLI tool to deploy a Quarkus native application as a serverless service onto that same cluster.
OpenShift Serverless helps developers to deploy and run applications that will scale up or scale to zero on-demand. Applications are packaged as OCI compliant Linux containers that can be run anywhere. Using the Serverless model, an application can simply consume compute resources and automatically scale up or down based on use. As mentioned in the introduction above, the whiteboarding YouTube video embedded below provides a high-level overview of OpenShift Serverless.
Continue reading “Hands on introduction to OpenShift Serverless”
Continue reading “Open Policy Agent, Part III — Integrating with Your Application”
This article was originally published on Ales Nosek – The Software Practitioner.
In the previous part of the series, we took a closer look at the event loop model. In this article, we are going to discuss several techniques that help you to prevent event loop delays.
The causes of event loop delays can be divided into two categories. The first category contains event loop delays caused by a handler calling a blocking API. The second category covers delays caused by a handler code taking a great amount of CPU time to complete. Let’s start with the first category and talk about blocking API calls.
Continue reading “Troubleshooting the Performance of Vert.x Applications, Part II — Preventing Event Loop Delays”