+ All Categories
Home > Documents > Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C)...

Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C)...

Date post: 24-May-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
67
COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) Microservice Patterns Implemented by Eclipse MicroProfile Ivar Grimstad Jakarta EE Developer Advocate, Eclipse Foundation
Transcript
Page 1: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Microservice Patterns Implemented by Eclipse MicroProfile

Ivar GrimstadJakarta EE Developer Advocate, Eclipse Foundation

Page 2: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad

https://github.com/ivargrimstad

https://www.linkedin.com/in/ivargrimstad

Page 3: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Page 4: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Eclipse MicroProfile

Page 5: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 6: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

MicroP

rofile 3

.2

November

1, 20

19

Page 7: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Open Liberty

Page 8: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

java -jar dukes.jar

Page 9: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 10: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Getting Started

Page 11: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 12: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 13: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Microservice Patterns

Page 14: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

1. Health Check API 2. Application Metrics 3. Externalised Configuration 4. Circuit Breaker 5. Access Token 6. Distributed Tracing 7. API Description

Page 15: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Health Check API

Page 16: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

How to detect that a running service instance is unable to handle requests?

Page 17: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

MicroProfile Health API

Page 18: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 19: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

DEMO

Page 20: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Application Metrics

Page 21: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

How to understand the behavior of an application and

troubleshoot problems?

Page 22: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

MicroProfile Metrics

Page 23: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 24: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

DEMO

Page 25: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Externalised Configuration

Page 26: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

How to enable a service to run in multiple environments

without modification?

Page 27: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Configuration for MicroProfile

Page 28: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

System Properties System.getProperties()

Environment Variables System.getenv()

Application Configuration META-INF/microprofile-config.properties

Page 29: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 30: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

DEMO

Page 31: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

location

http://localhost:8484/data/location

Response

in Sofia

Page 32: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Circuit Breaker

Page 33: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

How to prevent a network or service failure from cascading

to other services?

Page 34: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 35: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 36: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

DEMO

Page 37: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

location

http://localhost:8484/data/location

Response

in Sofia

day

http://localhost:8080/data/day

Tuesday

time

http://localhost:8383/data/time

16:20

Response

conference

http://localhost:8282/data/conference

Response

Java2Days Talkgreeting

http://localhost:8181/data/hello

You have a Java2Days Sofia Tuesday at

16:20

ResponseOpe

Open Liberty

Fallback

Fallback

Fallback

Page 38: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Access Token

Page 39: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

How to communicate the identity of the requestor to the services

that handle the request?

Page 40: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Basic Authentication

Page 41: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

POST /hello HTTP/1.1Host: localhost:8080Authorization: Basic c25vb3850nBhc3M=User-Agent: HTTPie/0.9.9Accept: */*Content-Type: application/jsonContent-Length: 26

{“message”:“Hello, Duke!”}

Page 42: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

OAuth 2.0

Page 43: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

POST /hello HTTP/1.1Host: localhost:8080Authorization: Bearer 2YotnF2FEjrlzCsidMWpAAUser-Agent: HTTPie/0.9.9Accept: */*Content-Type: application/jsonContent-Length: 26

{“message”:“Hello, Duke!”}

POST /hello HTTP/1.1Host: localhost:8080Authorization: Basic c25vb3850nBhc3M=User-Agent: HTTPie/0.9.9Accept: */*Content-Type: application/jsonContent-Length: 26

{“message”:“Hello, Duke!”}

POST /hello HTTP/1.1Host: localhost:8080Authorization: Bearer 2YotnF2FEjrlzCsidMWpAAUser-Agent: HTTPie/0.9.9Accept: */*Content-Type: application/jsonContent-Length: 26

{“message”:“Hello, Duke!”}

Page 44: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

JSON Web Token (JWT)

Page 45: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

POST /hello HTTP/1.1Host: localhost:8080Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiQmVhcmVyIiwiYXVkIjoic2ltcGxlYXBwIiwic3ViIjoiYm9iIiwidXBuIjoiYm9iIiwiY3VzdG9tQ2xhaW0iOiJjdXN0b21WYWx1ZSIsImdyb3VwcyI6WyJhZG1pbiIsInVzZXIiXSwiaXNzIjoiaHR0cDovL29wZW5saWJlcnR5LmlvIiwiZXhwIjoxNTI1MzM5MjU5LCJpYXQiOjE1MjUyNTI4NTl9.nDDpCR2wMWsENaDGORQblErOCJ6ii1R-N6iSzVsAz2RoUlvM2PrST2qT6kje-Nz9vcptbSpOSlF1OuJydvP8Tg3puJKI5vGyL4RMowgJHwdvv7hMZvrK1loNrPfbyv727L9UwJSZMdzL_sibiXDuj-bIBIr6yGjVF86aQnh-PWBV8HHM1iW8l1_y351lp2CAPkfjKwLU91iIT1jO1QCwItF8Dv-zAzmhd_rOIF58eB809_5rm0MMGIuAXdgUiU2bdEJQCkTWJKNNaSu5oddZzlKaCX4hIgBdrVV6447DM0i31YRhLpYHfbzh_NlRrRPjGPNgzOIN1RInwPC8jdg_gUser-Agent: HTTPie/0.9.9Accept: */*Content-Type: application/jsonContent-Length: 26

{“message”:“Hello, Duke!”}

Page 46: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

POST /hello HTTP/1.1Host: localhost:8080Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiQmVhcmVyIiwiYXVkIjoic2ltcGxlYXBwIiwic3ViIjoiYm9iIiwidXBuIjoiYm9iIiwiY3VzdG9tQ2xhaW0iOiJjdXN0b21WYWx1ZSIsImdyb3VwcyI6WyJhZG1pbiIsInVzZXIiXSwiaXNzIjoiaHR0cDovL29wZW5saWJlcnR5LmlvIiwiZXhwIjoxNTI1MzM5MjU5LCJpYXQiOjE1MjUyNTI4NTl9.nDDpCR2wMWsENaDGORQblErOCJ6ii1R-N6iSzVsAz2RoUlvM2PrST2qT6kje-Nz9vcptbSpOSlF1OuJydvP8Tg3puJKI5vGyL4RMowgJHwdvv7hMZvrK1loNrPfbyv727L9UwJSZMdzL_sibiXDuj-bIBIr6yGjVF86aQnh-PWBV8HHM1iW8l1_y351lp2CAPkfjKwLU91iIT1jO1QCwItF8Dv-zAzmhd_rOIF58eB809_5rm0MMGIuAXdgUiU2bdEJQCkTWJKNNaSu5oddZzlKaCX4hIgBdrVV6447DM0i31YRhLpYHfbzh_NlRrRPjGPNgzOIN1RInwPC8jdg_gUser-Agent: HTTPie/0.9.9Accept: */*Content-Type: application/jsonContent-Length: 26

{“message”:“Hello, Duke!”}

Page 47: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile

✦Header ✦ JSON, Base64 URL Encoded ✦ Algorithm, Type

✦Payload ✦ JSON, Base64 URL Encoded ✦ Standard + Custom entries

✦Signature ✦ Binary, Base64 URL Encoded ✦ The actual signature

Page 48: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

POST /hello HTTP/1.1Host: localhost:8080Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiQmVhcmVyIiwiYXVkIjoic2ltcGxlYXBwIiwic3ViIjoiYm9iIiwidXBuIjoiYm9iIiwiY3VzdG9tQ2xhaW0iOiJjdXN0b21WYWx1ZSIsImdyb3VwcyI6WyJhZG1pbiIsInVzZXIiXSwiaXNzIjoiaHR0cDovL29wZW5saWJlcnR5LmlvIiwiZXhwIjoxNTI1MzM5MjU5LCJpYXQiOjE1MjUyNTI4NTl9.nDDpCR2wMWsENaDGORQblErOCJ6ii1R-N6iSzVsAz2RoUlvM2PrST2qT6kje-Nz9vcptbSpOSlF1OuJydvP8Tg3puJKI5vGyL4RMowgJHwdvv7hMZvrK1loNrPfbyv727L9UwJSZMdzL_sibiXDuj-bIBIr6yGjVF86aQnh-PWBV8HHM1iW8l1_y351lp2CAPkfjKwLU91iIT1jO1QCwItF8Dv-zAzmhd_rOIF58eB809_5rm0MMGIuAXdgUiU2bdEJQCkTWJKNNaSu5oddZzlKaCX4hIgBdrVV6447DM0i31YRhLpYHfbzh_NlRrRPjGPNgzOIN1RInwPC8jdg_gUser-Agent: HTTPie/0.9.9Accept: */*Content-Type: application/jsonContent-Length: 26

{“message”:“Hello, Duke!”}

Page 49: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

{ “alg”: “RS256”, “typ”: “JWT}{ “token-type: “access-token”, “username”: “duke”, “scopes”: [ “java”: “everywhere” ], “exp”: 1474280963, “iat”: 1474279163 “jti”: “66881b068b249ad9”}nDDpCR2wMWsENaDGORQblErOCJ6ii1R-N6iSzVsAz2RoUlvM2PrST2qT6kje-Nz9vcptbSpOSlF1OuJydvP8Tg3puJKI5vGyL4RMowg-JHwdvv7hMZvrK1loNrPfbyv727L9UwJSZMdzL_sibiXDuj-bIBIr6yGjVF86aQnh-PWBV8HHM1iW8l1_y351lp2CAPkfjKwLU91iIT1jO1QCwItF8Dv-zAzmhd_rOIF58eB809_5rm0MMGIuAXdgUiU2bdEJQCkTWJKNNaSu5oddZzlKaCX4hIgBdrVV6447DM0i31YRhLpYHfbzh_NlRrRPjGPNgzOIN1RInwPC8jdg_g

Page 50: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 51: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

DEMO

Page 52: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

greeting

locationconference

Fallbackhttp://localhost:8181/data/hello

http://localhost:8282/data/conference http://localhost:8484/data/location

You have a Java2Days Sofia Tuesday at

16:20

Response

ResponseResponse

OpeOpen Liberty

Java2Days Talkin Sofia

day

http://localhost:8080/data/day

time

http://localhost:8383/data/time

16:20 Tuesday

ResponseResponse

Fallback

Fallback

Secured

JWT

Page 53: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Distributed Tracing

Page 54: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

How to understand the behavior of an application and

troubleshoot problems?

Page 55: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile

Page 56: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 57: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

DEMO

Page 58: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

greeting

locationconference

Fallbackhttp://localhost:8181/data/hello

http://localhost:8282/data/conference http://localhost:8484/data/location

You have a Jakarta EE Tech Talk on the

Internet Wednesday at 17:00

Response

ResponseResponse

OpeOpen Liberty

Jakarta EE Tech Talk on the Internet

the Internet

day

http://localhost:8080/data/day

time

http://localhost:8383/data/time

17:00 Wednesday

ResponseResponse

Fallback

Fallback

Secured

JWT

Page 59: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

API Description

Page 60: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Which knowledge should be shared between an API provider and its clients?

How should this knowledge be documented?

Page 61: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 62: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

DEMO

Page 63: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

Summary

Page 64: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Page 65: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

@ivar_grimstad#MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0)

1. Health Check API 2. Application Metrics 3. Externalised Configuration 4. Circuit Breaker 5. Access Token 6. Distributed Tracing 7. API Description

Page 66: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0 (EPL-2.0) @ivar_grimstad#MicroProfile

Microservice Patterns http://microservices.iohttps://microservice-api-patterns.org/

Samples https://github.com/ivargrimstad

Microprofile http://microprofile.io

Jakarta EE https://jakarta.ee

Page 67: Microservice Patterns - Java2Days · 2019-12-27 · API Description #MicroProfile COPYRIGHT (C) 2019, ECLIPSE FOUNDATION, INC. | MADE AVAILABLE UNDER THE ECLIPSE PUBLIC LICENSE 2.0

Duke's Choice Award Winner


Recommended