How to setup the reactive Cloud Native Starter sample application on OpenShift in IBM Cloud

In this blog post I want to point out that I just created a 5 min YouTube video related to the great Hands-on workshop: Reactive Endpoints with Quarkus on OpenShift. In that short video I show the setup of the example application to show reactive programming.

The image below shows the major architecture of the reactive programming example. There are three Java Microservices, one Vue.js UI application and two infrastructure components running on OpenShift (Kubernetes).

reactive-architecture

 


I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

PS:  You can try out Cloud Foundry Apps or Kubernetes on IBM Cloud. By the way, you can use the IBM Cloud for free, if you simply create an IBM Lite account. Here you only need an e-mail address.

#IBMDeveloper, #IBMCloud, #OpenShift, #Kafka, #Postgres, #MicroProfile, #Java #reactive

 

 

Write and execute a JUnit test for a Java microservice based on MicroProfile and run both in the OpenLiberty development mode

This blog post has the focus on: how to develop a JUnit test for the Authors microservice from the Cloud Native Starter example and run both the Authors microservice and the JUnit test on OpenLiberty in the development mode.

That blog post hasn’t the objective to be a blueprint or a ‘how to guide’ for writing JUnit tests,  JUnit test organization, test strategy and so on. The objective is to get technically started along one concrete microservice example from the Cloud Native Starter project.

The Authors microservice has one RESTful api endpoint called getAuthor. The endpoint provides one parameter for the Author name. The endpoint returns Author data in a JSON format.

Keep the end in mind: The gif shows a sample JUnit test execution for the Author microservice using OpenLiberty in the Visual Studio Code editor:

junit-on-openliberty-run-test

Note: As an alternative or in addition, you can also visit the OpenLiberty tutorial “MicroProfile or Jakarta EE application” to start with that topic.

Let’s start with: What do we need and how do we realize the implementation?

We need to ..

    •  invoke the REST endpoint of the Authors microservice with a REST Client.
    •  transform the JSON response of the REST endpoint to an Author data class
    •  handle different values to invoke the REST Endpoint parameter for the Author name to run tests with variations of the Author name.
    • compare the actual response value with an expected value and document the result.

Continue reading

Run a MicroProfile Microservice on OpenLiberty in a Remote development container in Visual Studio Code

In this blog post I want to show, how to setup a local remote Java development container for Eclipse MicroProfile with OpenLiberty in Visual Studio Code.

I did that for the Authors microservice from the Cloud Native Starter project with MicroProfile 3.2, OpenJDK Java 11, and the latest OpenLiberty version.

That blog post is structured in:

  • Setup and configuration of Visual Studio Code
  • Run the Authors microservice in the remote development container
  • Debug the Authors microservice in the remote development container

The documentation of remote development with Video Studio Code is here and Java Dev Environments with Containers is a great blog post, which does also cover the remote development with container.

Continue reading

Deploy the Reactive Cloud Native Starter example to IBM Cloud

The Cloud Native Starter project now contains the new great topic, the development of Reactive Microservices  with Java, quarkus, MicroProfile and Vue.js as front-end. The Reactive example implementation runs on minikube, local OpenShift and on IBM Cloud Kubernetes. Here are the instructions on GitHub.

But what does reactive mean? Here is an extract of the definition in  The Reactive Manifesto.

“Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.” 

But be aware, our example is not a full Reactive System it shows reactive programming techniques.

Note: To understand the difference between these two topics, that badge on cognitiveclass is useful Reactive Architecture: Introduction to Reactive Systems.

In our reactive programming example, you see directly changes in the database on the Web UI, without refreshing the browser.

reactive-sample

In this blog post I want to share, how you deploy that awesome Reactive example to a free IBM Cloud Kubernetes Cluster and using the free quota of the IBM Cloud Container Registry. We avoid for the setup that you have to use any paid IBM Cloud services, because you want just to see how the Reactive example works on IBM Cloud.
To create a free Cluster you need a feature code to create a Trial Account or you create a pay as you go account and you only use the free services of IBM Cloud.

That is the major architecture of the Reactive example. Three Java Microservices, one Vue UI application and two infrastructure components running on Kubernetes.

reactive-architecture

But what is reactive programming in more detail? If you want to get more details of the Reactive topic, just visit the blog post Development of Reactive Applications with Quarkus from Niklas Heidloff and if you want to explore the setup for local OpenShift take a look into the blog post Cloud Native Starter on Red Hat OpenShift 4 from Harald Uebele.

Continue reading

Be aware of “opentracinqZipkin”, when you update to “MicroProfile 3.0” using “OpenTracing” with “OpenLiberty”

Today, just a very short note. You should be aware of opentracinqZipkin when you use  MicroProfile OpenTracing with OpenLiberty, because I noticed with the update to MicroProfile 3.0 I had a problem with usr:opentracinqZipkin-0.31. I created an issue on OpenLiberty

“MicroProfile 2.1 includes mpOpenTracing-1.2. MicroProfile 3.0 includes mpOpenTracing-1.3. Please make sure you are using the Zipkin sample built for mpOpenTracing-1.3. It can be downloaded at https://github.com/WASdev/sample.opentracing.zipkintracer/releases/tag/1.3

I got that solution from Felix Wong.

But inside the server.xml will not reflect the version change, it will remaining the same feature name usr:opentracingZipkin-0.31.

<server description=”OpenLiberty Server”>
  <featureManager>
      <feature>microProfile-3.0</feature>
     <feature>webProfile-8.0</feature>
     <feature>usr:opentracingZipkin-0.31</feature>
</featureManager>
<httpEndpointid=”defaultHttpEndpoint”host=”*”httpPort=”8080″httpsPort=”9443″/>
….
</server>

I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

PS: You can try out Cloud Foundry Apps or Kubernetes on IBM Cloud. By the way, you can use the IBM Cloud for free, if you simply create an IBM Lite account. Here you only need an e-mail address.

#ibmdeveloper, #MicroProfile, #Java, #OpenTracing

A small source code update, when you use MicroProfile Health

I just want to highlight a small change for the MicroProfile Health, because I noticed with the update to MicroProfile 3.0 that the annotation @Health is deprecated.

mp-health-dep-2.1

It took me a little bit, because it was still listed in the MicroProfile documentation .

mp-health-dep-2.1-01.jpg

But I figured out in the blog post from Philip Riecks , when you replace the annotation @Health with @Readiness and import org.eclipse.microprofile.health.Readiness that it will work:

mp-health-dep-21.-02

I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

PS: You can try out Cloud Foundry Apps or Kubernetes on IBM Cloud. By the way, you can use the IBM Cloud for free, if you simply create an IBM Lite account. Here you only need an e-mail address.

#ibmdeveloper, #MicroProfile, #Java, #Health, #Readiness

Create one Java Microservice with OpenLiberty and MicroProfile – made for beginners

Today I created a YouTube video, where I developed one Microservice. The level of content of that video is for beginners. The video was “live” recorded and I made some minimal editing and the video takes 18 min.
The recoding is related to Java Microservices with MicroProfile and OpenLiberty in Visual Studio Code . The source code is available in the open sourced Cloud Native Starter GitHub project.

Check it out:

Maybe you are interested, how did I setup the IDE and the Project? … here are the basics.

Continue reading

Handle mircoservice resiliency with MicroProfile – a short teaser video

Today I finished the last part of my   “Let’s get started with cloud native Java applications on Kubernetes hands-on workshop”  3-minutes teaser videos series on youtube.

This short 3-minute teaser video is about: Handle mircoservice resiliency with MicroProfile in context of the cloud native starter project and workshop on GitHub project.

Check it out:

You can get more detailed information about the topic: Developing resilient Microservices with Istio and MicroProfile in one of the blog posts of @Niklas.

Continue reading

Expose and consume a REST API built with MicroProfile – a short teaser video

Part 4 is ready for my   “Let’s get started with cloud native Java applications on Kubernetes hands-on workshop”  3-minutes teaser videos series on youtube.

This short 3-minute teaser video is about: expose and consume a REST API built with MicroProfile in context of the cloud native starter project and workshop on GitHub project.

Check it out:

You can get more detailed information about the topic: Invoking REST APIs from Java Microservices in one of the blog posts of @Niklas.

Continue reading

How to build a container – a short teaser video

I recorded a new 3-minute video for my “Let’s get started with cloud native Java applications on Kubernetes hands-on workshop” teaser video series on youtube.

This short 3-minute teaser video is about: how build a container for a miroservice in context of the cloud native starter project and workshop on GitHub.

Check it out:

You can get more detailed information about How to build a container in one of my blog posts.

Continue reading