Modern App Dev

Announcing .NET Core 2.2 for Red Hat Platforms

Announcing .NET Core 2.2 for Red Hat Platforms

We are very excited to announce the general availability of .NET Core 2.2 for Red Hat Enterprise Linux and OpenShift platforms! This general availability is in lock-step with Microsoft’s release yesterday.

.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.2 continues to broaden its support and tools for application development in an open source environment. The latest version of .NET Core includes the following improvements:

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

Share
Quickly try Red Hat Process Automation Manager in your cloud

Quickly try Red Hat Process Automation Manager in your cloud

It’s been some time since I last talked with you about putting JBoss BPM Suite (now called Red Hat Process Automation Manager) into your cloud, and with the new release, it’s time to talk AppDev in the cloud again.

It’s time to update the story and see how to put Red Hat Process Automation Manager in your cloud so you are set up with a standard configuration to start your first business rules project.

With the easy installation demo project described below, you can leverage process automation tooling through the business central web console running containerized on any Red Hat OpenShift.

Let’s take a closer look at how this works.

Continue reading “Quickly try Red Hat Process Automation Manager in your cloud”

Share
How Kotlin’s coroutines improve code readability

How Kotlin’s coroutines improve code readability

Programs must be written for people to read, and only incidentally for machines to execute. — Abelson and Sussman

Kotlin is a new practical language designed to solve real-world problems. It is based on JVM but there are many differences between Kotlin and Java. Kotlin is a null-safe and concise language with support for functional programming. You can try programming in Kotlin here.

Kotlin coroutines provide an easy way to write highly scalable code, using the traditional style of programming, while avoiding having a thread allocated to each task.

In this article, I focus on code readability and how, in my opinion, coroutines provide a cleaner approach to writing code compared to a reactive approach. I have used Project Reactor to showcase the reactive code; however, the example can be extended to any reactive library, for example, RxJava and CompleteableFuture. Note that coroutine-based code scales as well as code written using a reactive approach. To me, coroutines are a win-win situation for developers.

Continue reading “How Kotlin’s coroutines improve code readability”

Share
Common architectural elements for modern integration architectures (Part 2)

Common architectural elements for modern integration architectures (Part 2)

In Part 1 of this series, we explored a use case around integration being the key to transforming your customer experience.

I laid out how I’ve approached the use case and how I’ve used successful customer portfolio solutions as the basis for researching a generic architectural blueprint. The only thing left to cover was the order in which you’ll be led through the blueprint details.

This article, which is Part 2 of the series, starts the real journey at the very top, with a generic architecture from which we’ll discuss the common architectural elements one by one.

Continue reading “Common architectural elements for modern integration architectures (Part 2)”

Share
How integration is key to customer experience (Part 1)

How integration is key to customer experience (Part 1)

For the past few months, I’ve been digging into my new role with a group of Portfolio Architects, looking specifically at integration as the key to omnichannel customer experience.

It’s an interesting challenge in that we’ve been given the mission of creating architectural content based on common customer adoption patterns. That’s very different from most of the traditional marketing activities usually associated with generating content for the sole purpose of positioning products for solutions. When you’re basing the content on actual execution in solution delivery, you’re cutting out the chuff. 

What’s that mean?

It means that it’s going to provide you with a way to implement a solution using open source technologies by focusing on the integrations, structures, and interactions that actually have been proven to work.

What’s not included is any vendor promises that you’ll find in normal marketing content: those promises that, when it gets down to implementation crunch time, might not fully deliver.

Enter the term architectural blueprint. 

In this series of articles, let’s look at these blueprints, how they are created, and what value they provide for your solution designs.

Continue reading “How integration is key to customer experience (Part 1)”

Share
Solving the challenges of debugging microservices on a container platform

Solving the challenges of debugging microservices on a container platform

Microservices have become mainstream in the enterprise. This proliferation of microservices applications generates new problems, which requires a new approach to managing problems. A microservice is a small, independently deployable, and independently scalable software service that is designed to encapsulate a specific semantic function in the larger applicationl. This article explores several approaches to deploying tools to debug microservices applications on a Kubernetes platform like Red Hat OpenShift, including OpenTracing,  Squash, Telepresence, and creating a Squash Operator in Red Hat Ansible Automation.

Continue reading “Solving the challenges of debugging microservices on a container platform”

Share
Extending support to Spring Boot for Red Hat OpenShift Application Runtimes

Extending support to Spring Boot for Red Hat OpenShift Application Runtimes

What Red Hat is providing

Red Hat OpenShift Application Runtimes (RHOAR) is a recommended set of products, tools, and components for developing and maintaining cloud-native applications on the Red Hat OpenShift platform. As part of this offering, Red Hat is extending its support to Spring Boot and related frameworks for building modern, production-grade, Java-based cloud-native applications.

Spring Boot lets you create opinionated Spring-based standalone applications. The Spring Boot runtime also integrates with the OpenShift platform, allowing your services to externalize their configuration, implement health checks, provide resiliency and failover, and much more. To learn more about how Spring Boot applications integrate with the wider Red Hat portfolio, check out the following OpenShift Commons Briefing by Thomas Qvarnstrom:

Continue reading “Extending support to Spring Boot for Red Hat OpenShift Application Runtimes”

Share
Leveraging OpenShift or Kubernetes for automated performance tests (part 1)

Leveraging OpenShift or Kubernetes for automated performance tests (part 1)

This is the first article in a series of three articles based on a session I hold at Red Hat Tech Exchange EMEA. In this first article, I present the rationale and approach for leveraging Red Hat OpenShift or Kubernetes for automated performance testing, give an overview of the setup, and discuss points that are worth considering when executing and analyzing performance tests. I will also say a few words about performance tuning.

In the second article, we will look at building an observability stack, which—beyond the support it provides in production—can be leveraged during performance tests. Open sources projects like Prometheus, Jaeger, Elasticsearch and Grafana will be used for the purpose. The third article will present the details for building an environment for performance testing and automating the execution with JMeter and Jenkins.

Continue reading “Leveraging OpenShift or Kubernetes for automated performance tests (part 1)”

Share
Eclipse MicroProfile for Spring Boot developers

Eclipse MicroProfile for Spring Boot developers

By now you have probably heard of Eclipse MicroProfile (MP). It is a community-driven initiative to define specifications for enterprise Java microservices. MicroProfile is only two years old, yet it has delivered eight innovative specifications and is evolving fast. It provides metrics, API documentation, health checks, fault tolerance, distributed tracing, and more. With it, you can take full advantage of cutting-edge cloud-native technologies and do it in a vendor-neutral fashion!

For developers familiar with Spring Boot, we have prepared this article, which compares the basics of developing applications with Spring Boot and with MicroProfile. We wrote two applications, one with each solution. In this article, we will go through the differences between them. You can find the source code for both projects on GitHub.

For the MicroProfile application, we use Thorntail (formerly know as Wildfly Swarm), but except for the setting up part, Open Liberty, Payara, TomEE, or any other implementation would look exactly the same.

Throughout this article, we assume you know Spring Boot and we focus on what is different in MicroProfile.

Continue reading “Eclipse MicroProfile for Spring Boot developers”

Share
Support Lifecycle for Clang/LLVM, Go, and Rust

Support Lifecycle for Clang/LLVM, Go, and Rust

On the heels of our recently announcement, General Availability of Clang/LLVM 6.0, Go 1.10, and Rust 1.29, I want to share how we’ll be supporting them going forward. Previously, these packages had been in “Technology Preview” status, which means that they were provided for “you to test functionality and provide feedback during the development process”, and were “not fully supported under Red Hat Subscription Level Agreements, may not be functionally complete, and are not intended for production use”.

So now that we’ve promoted them to fully supported status, what does that mean? In the simplest terms, General Availability (GA) means that these packages have officially entered the “Full Support Phase” of their lifecycle:

Continue reading “Support Lifecycle for Clang/LLVM, Go, and Rust”

Share