Smart-Meter Data Processing Using Apache Kafka on OpenShift

There is a major push in the United Kingdom to replace aging mechanical electricity meters with connected smart meters. New meters allow consumers to more closely monitor their energy usage and associated cost, and they enable the suppliers to automate the billing process because the meters automatically report fine-grained energy use.

This post describes an architecture for processing a stream of meter readings using Strimzi, which offers support for running Apache Kafka in a container environment (Red Hat OpenShift). The data has been made available through a UK research project that collected data from energy producers, distributors, and consumers from 2011 to 2014. The TC1a dataset used here contains data from 8,000 domestic customers on half-hour intervals in the following form:

Continue reading “Smart-Meter Data Processing Using Apache Kafka on OpenShift”

Share

Contract-First API Design with Apicurio and Red Hat Fuse/Camel

This is part one of my two-article series that demonstrates how to implement contract-first API design using Apicurio and Red Hat Fuse.  It covers how to create an OpenAPI standard document as the contract between API providers and consumers using Apicurio Studio. It also shows how to quickly create mock tests using Red Hat Fuse which is based on Camel.

There are two common approaches when it comes to creating APIs:

  • Code first (top-down)
  • Contract first (bottom-up)

Continue reading “Contract-First API Design with Apicurio and Red Hat Fuse/Camel”

Share

Why Kubernetes is The New Application Server

Have you ever wondered why you are deploying your multi-platform applications using containers? Is it just a matter of “following the hype”? In this article, I’m going to ask some provocative questions to make my case for Why Kubernetes is the new application server.

You might have noticed that the majority of languages are interpreted and use “runtimes” to execute your source code. In theory, most Node.js, Python, and Ruby code can be easily moved from one platform (Windows, Mac, Linux) to another platform. Java applications go even further by having the compiled Java class turned into a bytecode, capable of running anywhere that has a JVM (Java Virtual Machine).

The Java ecosystem provides a standard format to distribute all Java classes that are part of the same application. You can package these classes as a JAR (Java Archive), WAR (Web Archive), and EAR (Enterprise Archive) that contains the front end, back end, and libraries embedded. So I ask you: Why do you use containers to distribute your Java application? Isn’t it already supposed to be easily portable between environments?

Continue reading “Why Kubernetes is The New Application Server”

Share

Next DevNation Live: Advanced Microservices Tracing with Jaeger, June 21st, 12pm EDT

A significant challenge of moving from a traditional monolithic application design to a microservices-based architecture is the ability to monitor the business transaction flow of events throughout your entire distributed system. Join us for the next online DevNation Live on June 21st at 12pm EDT for Advanced Microservices Tracing with Jaeger, presented by Red Hat software engineers Pavol Loffay and Juraci Paixão Kröehling.

In this session, we’ll examine in detail the Cloud Native Computing Foundation (CNCF) OpenTracing API, a consistent, expressive, vendor-neutral API for distributed tracing and context propagation. We will also analyse Jaeger, an open source distributed tracing system inspired by Google Dapper and OpenZipkin.

Join us to gain an understanding of Jaeger’s open source distributed tracing system and how it can help you monitor and troubleshoot microservices-based distributed systems.

Watch the video of the recorded session:

Session Agenda

Continue reading “Next DevNation Live: Advanced Microservices Tracing with Jaeger, June 21st, 12pm EDT”

Share

Announcing .NET Core 2.1 for Red Hat Platforms

We are very pleased to announce the general availability of .NET Core 2.1 for Red Hat Enterprise Linux and OpenShift platforms!

.NET Core is the open-source, cross-platform .NET platform for building microservices. .NET Core is designed to provide the best performance at scale for applications that use microservices and containers. Libraries can be shared with other .NET platforms, such as .NET Framework (Windows) and Xamarin (mobile applications). With .NET Core you have the flexibility of building and deploying applications on Red Hat Enterprise Linux or in containers. Your container-based applications and microservices can easily be deployed to your choice of public or private clouds using Red Hat OpenShift. All of the features of OpenShift and Kubernetes for cloud deployments are available to you.

.NET Core 2.1 continues to broaden its support and tools for microservice development in an open source environment. The latest version of .NET Core includes the following improvements:

Continue reading “Announcing .NET Core 2.1 for Red Hat Platforms”

Share

Building Container-Native Node.js Applications with Red Hat OpenShift Application Runtimes and Istio

For developers working on a Kubernetes-based application environment such as Red Hat OpenShift, there are a number things that need to be considered to fully take advantage of the significant benefits provided by these technologies, including:

  • How do I communicate with the orchestration layer to indicate the application is operating correctly and is available to receive traffic?
  • What happens if the application detects a system fault, and how does the application relay this to the orchestration layer?
  • How can I accurately trace traffic flow between my applications in order to identify potential bottlenecks?
  • What tools can I use to easily deploy my updated application as part of my standard toolchain?
  • What happens if I introduce a network fault between my services, and how do I test this scenario?

These questions are central to building container-native solutions. At Red Hat, we define container-native as applications that conform to the following key tenets:

  • DevOps automation
  • Single concern principle
  • Service discovery
  • High observability
  • Lifecycle conformance
  • Runtime confinement
  • Process disposability
  • Image immutability

This may seem like a lot of overhead on top of the core application logic. Red Hat OpenShift Application Runtimes (RHOAR) and Istio provide developers with tools to adhere to these principles with minimal overhead in terms of coding and implementation.

In this blog post, we’re specifically focusing on how RHOAR and Istio combine to provide tools for DevOps automation, lifecycle conformance, high observability, and runtime confinement.

Continue reading “Building Container-Native Node.js Applications with Red Hat OpenShift Application Runtimes and Istio”

Share

Eclipse Che 6.6 Release Notes

[This article is cross-posted from the Eclipse Che Blog.]

Eclipse Che 6.6 Release Notes

Eclipse Che 6.6 is here! Since the release of Che 6.0, the community has added a number of new capabilities:

  • Kubernetes support: Run Che on Kubernetes and deploy it using Helm.
  • Hot server updates: Upgrade Che with zero downtime.
  • C/C++ support: ClangD Language Server was added.
  • Camel LS support: Apache Camel Language Server Protocol (LSP) support was added.
  • <strong”>Eclipse Java Development Tools (JDT) Language Server (LS): Extended LS capabilities were added for Eclipse Che.
  • Faster workspace loading: Images are pulled in parallel with the new UI.

Quick Start

Che is a cloud IDE and containerized workspace server. You can get started with Che by using the following links:

Continue reading “Eclipse Che 6.6 Release Notes”

Share

Next DevNation Live: Your Journey to a Serverless World—An Introduction to Serverless, June 7th, 12pm EDT

Join us for the next online DevNation Live on June 7th at 12pm EDT for Your Journey to a Serverless World—An Introduction to Serverless, presented by Kamesh Sampath and hosted by Burr Sutter.  Serverless computing is an emerging architecture that represents a shift in the way developers build and deliver software systems. By removing application infrastructure concerns, development and deployment are simplified, allowing developers to focus on writing code that delivers value.  Additionally, operational costs can be reduced by only consuming resources when needed to respond to application events.

In this session, we’ll learn what serverless is and what it means to a developer. Then, we’ll quickly deploy a serverless platform using Apache OpenWhisk on Kubernetes. Using this platform, we’ll demystify which Java™ programming model you should use in a serverless environment. And finally, we’ll look at tools that can make your serverless journey quick, easy, and productive.

Watch the recorded session and view the slides.

Session Agenda

Continue reading “Next DevNation Live: Your Journey to a Serverless World—An Introduction to Serverless, June 7th, 12pm EDT”

Share

How to install Python Flask on Red Hat Enterprise Linux 7

I recently got my zero-dollar developer copy of Red Hat Enterprise Linux (RHEL, version 7.5) and built a virtual machine (VM) to run it. There it was, on my PC, running in VirtualBox…a gleaming, shiny, brand-spanking-new VM running RHEL. Whatever shall I do with it?

Then I got the idea: I’ll install the Red Hat Container Development Kit (CDK) and build some Python-based containers. I’ll use Flask, a terrific microframework that makes building RESTful services easy.

Continue reading “How to install Python Flask on Red Hat Enterprise Linux 7”

Share

Introducing the Kafka-CDI Library

Using Apache Kafka in modern event-driven applications is pretty popular. For a better cloud-native experience with Apache Kafka, it’s highly recommended to check out Red Hat AMQ Streams, which offers an easy installation and management of an Apache Kafka cluster on Red Hat OpenShift.

This article shows how the Kafka-CDI library can handle difficult setup tasks and make creating Kafka-powered event-driven applications for MicroProfile and Jakarta EE very easy.

Continue reading “Introducing the Kafka-CDI Library”

Share