unikernelize your java application

67
Unikernelize your Java Application Mario Zagar [email protected]

Upload: mario-zagar

Post on 12-Apr-2017

293 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Unikernelize your Java Application

UnikernelizeyourJava ApplicationMario [email protected]

Page 2: Unikernelize your Java Application

Agendawhat are unikernelswhy should you carehow does java fit in

build java unikernel app

Page 3: Unikernelize your Java Application

www.infobip.com

Java, .NET, nodejs, reactjsmicroservices

continuous delivery practitioners100+ deploys daily / 6 datacenters

300M+ messages per day200+ hypervisors

up to 20 VMs per hypervisor

Page 4: Unikernelize your Java Application

What are unikernels?

Page 5: Unikernelize your Java Application

“specialized, single-address-space machine images constructed by using library operating

systems.”

Page 6: Unikernelize your Java Application

App code +

OS parts actually needed=

unikernel

Page 7: Unikernelize your Java Application

Typical cloud deployment

Page 8: Unikernelize your Java Application

Hardware

Hypervisor

OS + Kernel

App code & config

App runtime & libraries

VM

Typical cloud deployment

Page 9: Unikernelize your Java Application

Hardware

Hypervisor

OS + Kernel

App code & config

App runtime & libraries

VM

Typical cloud deployment

OS + Kernel

App code & config

App runtime & libraries

VM

Page 10: Unikernelize your Java Application

Containerized deployment

Page 11: Unikernelize your Java Application

Hardware

Hypervisor

Kernel on host OS

OS

App code & config

App runtime & libraries

Container

Containerized deployment

Page 12: Unikernelize your Java Application

Hardware

Hypervisor

Kernel on host OS

OS

App code & config

App runtime & libraries

Container

OS

App code & config

App runtime & libraries

Container

Containerized deployment

Page 13: Unikernelize your Java Application

What if…

Page 14: Unikernelize your Java Application

Hardware

Hypervisor

Unikernel

Unikernel deployment

App code & config

App runtime & libs

Specialized kernel

Page 15: Unikernelize your Java Application

Hardware

Hypervisor

Unikernel

Unikernel deployment

App code & config

App runtime & libs

Specialized kernel

Unikernel

App code & config

App runtime & libs

Specialized kernel

Page 16: Unikernelize your Java Application

immutable server

Page 17: Unikernelize your Java Application

Hardware

Hypervisor

OS + Kernel

App code & config

App runtime & libraries

VM

Hardware

Hypervisor

Kernel on host OS

OS

App code & config

App runtime & libraries

Container

Hardware

Hypervisor

Unikernel

App code & config

App runtime & libs

Specialized kernel

Isolation Resource sharing Specialization

Abstraction

Abstraction

Abstraction

Abstraction

AbstractionAbstraction

Page 18: Unikernelize your Java Application

"just enough" of the OS to run your code, nothing more.

Page 19: Unikernelize your Java Application

Why should I use this?

Fast bootHighly optimized

Reduced attack surface

Page 20: Unikernelize your Java Application

Why should I use this?

Small footprintFast boot

Highly optimizedReduced attack surface

Page 21: Unikernelize your Java Application

Why should I use this?

Small footprintFast boot

Highly optimizedReduced attack surface

Page 22: Unikernelize your Java Application

Why should I use this?

Small footprintFast boot

Highly optimizedReduced attack surface

Page 23: Unikernelize your Java Application

Why should I use this?

Small footprintFast boot

Highly optimizedReduced attack surface

Page 24: Unikernelize your Java Application

No, really… why should I use this?

Page 25: Unikernelize your Java Application

same amount of workon less powerful VMs…

…saves $$$

Page 26: Unikernelize your Java Application

Cons ?

no fork() or exec()hard to debug

“secure” is just a matter of timetroubleshooting tools

Page 27: Unikernelize your Java Application

Cons ?

no fork() or exec()hard to debug

“secure” is just a matter of timetroubleshooting tools

Page 28: Unikernelize your Java Application

Cons ?

no fork() or exec()hard to debug

“secure” is just a matter of timetroubleshooting tools

Page 29: Unikernelize your Java Application

Cons ?

no fork() or exec()hard to debug

“secure” is just a matter of timetroubleshooting tools

Page 30: Unikernelize your Java Application

Cons ?

no fork() or exec()hard to debug

“secure” is just a matter of timetroubleshooting tools

Page 31: Unikernelize your Java Application

What’s out there ?

Page 32: Unikernelize your Java Application
Page 33: Unikernelize your Java Application

How does java fit in ?

Page 34: Unikernelize your Java Application
Page 35: Unikernelize your Java Application
Page 36: Unikernelize your Java Application

new OS designed for the cloudC++

native Linux apps, JVMsingle address space

boots < 1 secLower administration & OS support costs

Page 37: Unikernelize your Java Application

Hypervisor support

KVM, XEN - fullyVMW, VBox – exp

Page 38: Unikernelize your Java Application

Cloud support

EC2 - fullyGCE – exp

Page 39: Unikernelize your Java Application

a little “fatter”min image size ~20MB

Java image ~120MB

Page 40: Unikernelize your Java Application

REST APIJMX/Jolokia API

cloud-init

Page 41: Unikernelize your Java Application

Benchmarksredis

50% more TPSmemcached

20% more req/secTCP

20% better latency

Page 42: Unikernelize your Java Application

How to build a java unikernel app?

Page 43: Unikernelize your Java Application

Capstan build tool(feels dockerish)

Page 44: Unikernelize your Java Application

Capstanfile

Page 45: Unikernelize your Java Application

Capstanfile

base: cloudius/osv-openjdk8

build: mvn package

files: /app.jar: target/app.jar

cmdline: /java.so -jar /app.jar

Page 46: Unikernelize your Java Application

$ capstan build -p vbox

Page 47: Unikernelize your Java Application

$ mvn package$ capstan run target/app.jar

Page 48: Unikernelize your Java Application
Page 49: Unikernelize your Java Application
Page 50: Unikernelize your Java Application
Page 51: Unikernelize your Java Application
Page 52: Unikernelize your Java Application
Page 53: Unikernelize your Java Application
Page 54: Unikernelize your Java Application
Page 55: Unikernelize your Java Application
Page 56: Unikernelize your Java Application
Page 57: Unikernelize your Java Application
Page 58: Unikernelize your Java Application
Page 59: Unikernelize your Java Application
Page 60: Unikernelize your Java Application

So where is this all going ?few users

hard to shiphard to buildhard to run

Page 61: Unikernelize your Java Application

Community

Page 62: Unikernelize your Java Application
Page 63: Unikernelize your Java Application

unikernels + docker

Page 64: Unikernelize your Java Application
Page 65: Unikernelize your Java Application
Page 66: Unikernelize your Java Application

”next big thing in the cloud”

Page 67: Unikernelize your Java Application

Thank you!