> For the complete documentation index, see [llms.txt](https://ibm-developer.gitbook.io/get-your-java-microservice-up-and-running/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ibm-developer.gitbook.io/get-your-java-microservice-up-and-running/readme.md).

# README

This workshop demonstrates how to build a Microservice with Java and how to deploy it to Kubernetes on the IBM Cloud. The Microservice in this workshop is kept as simple as possible, so that it can be used as a starting point for other Microservices. The Microservice has been developed with Java EE and [Eclipse MicroProfile](https://microprofile.io/).

* > Useful playlist on YouTube related to this workshop: [Build and deploy a microservice to Kubernetes](https://ibm.biz/BdzVRY)

## What's a Microservice

There are small variations of microservice definitions out there, here is one definition of [Gartner](https://www.gartner.com/en/information-technology/glossary/microservice):

* > A microservice is a service-oriented application component that is tightly scoped, strongly encapsulated, loosely coupled, independently deployable and independently scalable.
* > [More additional information related to microservices provided by IBM.](https://www.ibm.com/cloud/learn/microservices)

## Architecture

In the gif below you see the Authors Microservice, which we will run locally in a Docker container. We will deploy this Authors Microservice to Kubernetes on IBM Cloud. The gif shows the steps of exercise 3 how we deploy that Microservice to IBM Cloud.

![overview](https://1786616095-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MG3nxFYptsAGAKhoxq6%2Fsync%2Ff9e32f496347a20eefca588bb387a8121846096a.gif?generation=1598886673347650\&alt=media)

## Estimated time and level

| Time     | Level     |
| -------- | --------- |
| one hour | beginners |

## Objectives

After you complete this workshop, you'll understand the following topics:

* Java implementation of a Cloud Native RESTFul Java Microservice built on open technologies MicroProfile and OpenLiberty.
* Describe how to effectively build and run a Microservice on a local machine in a container
* Understands the steps needed to deploy a single Microservice to Kubernetes and on the IBM Cloud Kubernetes service

You can verify your learning in the **Cloud Native Starter Badge - Level 1**

![Cloud Native Starter Badge - Level 1](https://1786616095-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MG3nxFYptsAGAKhoxq6%2Fsync%2Ff0f974db42577a8ecd0c059615f12584edc028bf.png?generation=1598887700918153\&alt=media)

> To be prepared to pass the test of the [**Cloud Native Starter Badge - Level 1**](http://ibm.biz/cloud-native-starter-level-1-badge), you should run the hands-on workshop **virtual** or **face to face**, but you can also run the workshop as a **self service**.

## About this workshop

The introductory page of the workshop is broken down into the following sections:

* [Agenda](#agenda)
* [Compatibility](#compatibility)
* [Technology Used](#technology-used)
* [Credits](#credits)
* [What\`s next?](#whats-next?)

## Agenda

These are the sections of this workshop, go through all of them in sequence, start with `Setup local and IBM Cloud Environment`:

1. [Setup local and IBM Cloud Environment](/get-your-java-microservice-up-and-running/setup-local-and-ibm-cloud-environment/pre-work.md)
2. [Running the Java Microservice locally](/get-your-java-microservice-up-and-running/exercises/exercise-01.md)
3. [The Java implementation](/get-your-java-microservice-up-and-running/exercises/exercise-02.md)
4. [Deploy to the Kubernetes](/get-your-java-microservice-up-and-running/exercises/exercise-03.md)

Optional labs:

1. [Deploy to Code Engine](https://github.com/IBM/get-your-java-microservice-up-and-running/blob/master/workshop/optional-lab-01/README.md)

## Compatibility

This workshop has been tested on the following platforms:

* **IBM Cloud Kubernetes Service**: Kubernetes Version 1.17 on IBM Cloud
* **Docker desktop**: Version 2.3.0.4

## Technology Used

* [Microservices architecture](https://en.wikipedia.org/wiki/Microservices)
* [Jakarta EE](https://jakarta.ee/)
* [MicroProfile](https://microprofile.io/)
* [Open Liberty](https://openliberty.io/)
* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [cURL](https://curl.haxx.se/download.html)
* [IBM Cloud CLI](https://cloud.ibm.com/docs/home/tools) [IBM Cloud CLI releases](https://github.com/IBM-Cloud/ibm-cloud-cli-release/releases)
* [Docker](https://docs.docker.com/v17.12/install/)
* [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)

## Credits

* [Niklas Heidloff](https://twitter.com/nheidloff)
* [Harald Uebele](https://twitter.com/Harald_U)
* [Thomas Südbröcker](https://twitter.com/tsuedbroecker)

## Additional resources

[Here](https://github.com/IBM/cloud-native-starter#documentation---kubernetes-and-microprofile) are some documentations of the project.
