unikernels: in search of a killer app and a killer ecosystem

50
Unikernels: in search of a killer app and a killer ecosystem Roman Shaposhnik, Director of Open Source @Pivotal, @rhatr

Upload: rhatr

Post on 15-Apr-2017

152 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Unikernels: in search of a killer app and a killer ecosystem

Unikernels: in search of a killer app and a killer ecosystem

RomanShaposhnik,DirectorofOpenSource@Pivotal,@rhatr

Page 2: Unikernels: in search of a killer app and a killer ecosystem
Page 3: Unikernels: in search of a killer app and a killer ecosystem
Page 4: Unikernels: in search of a killer app and a killer ecosystem
Page 5: Unikernels: in search of a killer app and a killer ecosystem
Page 6: Unikernels: in search of a killer app and a killer ecosystem
Page 7: Unikernels: in search of a killer app and a killer ecosystem

Unikernels•  “Unikernels:libraryopera?ngsystemsforthecloud”cameoutin2013

•  A“library”opera?ngsystem•  Akernelthatcanonlysupportoneprocess•  An‘executable’thatneedsvirtualiza?ontorun– Qemu,VB,VMWare,Xen,PublicCloud

Page 8: Unikernels: in search of a killer app and a killer ecosystem

Anykernels•  Programmingdisciplineforkernelcodereuse•  “TheDesignandImplementa?onoftheAnykernelandRumpKernels”byAnVKantee

•  Capabili?es– NetBSDfilesystemsasLinuxprocesses– User-spaceTCP/IPstack

•  Buildingblocksfor…anykernels

Page 9: Unikernels: in search of a killer app and a killer ecosystem

AnVKantee:Back-AlleyDoctorofNetBSD

Page 10: Unikernels: in search of a killer app and a killer ecosystem

Whatunikernelsareavailable•  MirageOS–  EmergedfromXen,OCamlspecific,research

•  Clive– Gospecific,Plan9lineage,research

•  RumpKernels(broughttoyoubyA.Kantee)–  Rumprununikernel,“sta?clinking”downtothekernel

•  OSv

Page 11: Unikernels: in search of a killer app and a killer ecosystem

UniK:UnikernelBuilds&Deployment•  Anopensourcetool–  heps://github.com/emc-advanced-dev/unik

•  AfamiliarDocker-likeCLI•  Abstractsawaydetailsofvirtualiza?onbackends•  IntegrateswithDocker&CloudFoundry•  PluggablesupportforUnikernels– OSv&rump

Page 12: Unikernels: in search of a killer app and a killer ecosystem

Interac?veIntermission:Disaggrega?ontrend

Page 13: Unikernels: in search of a killer app and a killer ecosystem
Page 14: Unikernels: in search of a killer app and a killer ecosystem
Page 15: Unikernels: in search of a killer app and a killer ecosystem

TheraiseofthePaaS:CloudFoundry

Page 16: Unikernels: in search of a killer app and a killer ecosystem

CloudFoundry

Page 17: Unikernels: in search of a killer app and a killer ecosystem

No,butseriously?

myApp $cfpush …

service#N

service#1

App#N

App#1

Page 18: Unikernels: in search of a killer app and a killer ecosystem

Cloud-na?veappsAKA12factor.net•  Codebase•  Dependencies•  Config•  Backingservices•  Build,deploy,run•  Statelessprocesses

•  Portbinding•  Concurrency•  Disposability•  Dev==prod•  Logs==streams•  Adminprocesses

Page 19: Unikernels: in search of a killer app and a killer ecosystem

> cd /path/to/my/app > tree . ├── README.md ├── app.groovy ├── application.properties ├── manifest.yml

Page 20: Unikernels: in search of a killer app and a killer ecosystem

> cat manifest.yml --- applications: - name: cf-spring memory: 512M instances: 3 random-route: true

Page 21: Unikernels: in search of a killer app and a killer ecosystem

> cf push my-app

Using manifest file /Users/verney/workspace/cf-sample-app-spring/manifest.yml

Creating app cf-spring in org pivot-jules / space test as [email protected]...

OK

Page 22: Unikernels: in search of a killer app and a killer ecosystem

Uploading cf-spring...

Uploading app files from: /Users/vereny/workspace/cf-sample-app-spring Uploading 1M, 44 files Done uploading OK

Page 23: Unikernels: in search of a killer app and a killer ecosystem

Runtime Container

Droplets

Staging Container

App Source Code

Buildpack

DropletFile System (‘Stack’)

Page 24: Unikernels: in search of a killer app and a killer ecosystem

> cf scale my-app –i 8

Page 25: Unikernels: in search of a killer app and a killer ecosystem
Page 26: Unikernels: in search of a killer app and a killer ecosystem

Anatomyofadroplet

Hardware

“Stuff”

[Java]VirtualMachine

μservicecode

Page 27: Unikernels: in search of a killer app and a killer ecosystem

Howarewedoingittoday?

JailedFS,net,etc.

Hardware

[Java]VirtualMachinelibFS,libC,libJVM

μservicecode

Applica?on-specificsta?clinking

OCI“runc”image

Common,sharedkernel

Page 28: Unikernels: in search of a killer app and a killer ecosystem

Isthereabeeerway?

vHardware

Hardware

[Java]VirtualMachinelibFS,libC,libJVM

μservicecode

Applica?on-specificsta?clinking

TinyVMimageAKAunikernel

Hardware-assistedvirtualiza?on

Page 29: Unikernels: in search of a killer app and a killer ecosystem

Imageby@GrahamDumpleton

Page 30: Unikernels: in search of a killer app and a killer ecosystem

OSvfromCloudiusSystems•  Aunikernelfor“POSIX”andmemorymanagedplaqorms(JVM,Go,Lua)

•  Anykernel’ish–  E.g.ZFS

•  RunsontopofKVM,Xen,VirtualBox,VMWare•  LookslikeanapptothehostOS•  Small,fastandeasytomanageatscale

Page 31: Unikernels: in search of a killer app and a killer ecosystem

OSvmanifesto•  Runexis?ngLinuxapplica?ons•  Runexis?ngLinuxapplica?onsfaster•  Makeboot?me~=exec?me•  ExploreAPIsbeyondPOSIX•  Leveragememorymanagedplaqorms(JVM,Go)•  Stayopen

Page 32: Unikernels: in search of a killer app and a killer ecosystem

What’sinside?

singleaddressspacein“kernelmode”

“kernelthreads”“userthreads”

diskZFS vir?oC++kernelcode

dynamiclinker

libjvm.soifconfig.so

TCP/IP

iface

Page 33: Unikernels: in search of a killer app and a killer ecosystem

Anythingitcan’tdo?•  A100%replacementforaLinuxkernel– Nofork()ing

•  Noprocessisola?on•  Theleastamountofdevicedriversever

Page 34: Unikernels: in search of a killer app and a killer ecosystem

Virtualiza?onvs.performance•  Network-intensiveapps:–  unmodified:25%gaininthroughput47%decreaseinlatency

–  non-POSIXAPIsuseforMemcached:290%increaseinperformance

•  Compute-intensiveapps:–  YMMV

Page 35: Unikernels: in search of a killer app and a killer ecosystem

VanJacabson’snetchannelssocket

TCP

IP

iface

socket

TCP

IP

iface

lock

lock

lock

Tradi?onalTCP/IPstack

appthreadkernel(IRQ)

send/recv

socket

TCP

IP

iface

channel

classifier

iface

lock

OSvTCP/IPstack

appthreadkernel(IRQ)

send/recv

Page 36: Unikernels: in search of a killer app and a killer ecosystem

MemorymanagementinUNIX

OSMemory

ProcessMemory

JVMHeap

ProcessMemory

JVMHeap

Page 37: Unikernels: in search of a killer app and a killer ecosystem

MemorymanagementinOSv

OSMemory

ProcessMemory

JVMHeap

Page 38: Unikernels: in search of a killer app and a killer ecosystem

JVMbalooning(nomore-Xmx)

JVMHeap

OSobject

Page 39: Unikernels: in search of a killer app and a killer ecosystem

TurbochargingJVMGC

object1 object2

Page 40: Unikernels: in search of a killer app and a killer ecosystem

TurbochargingJVMGC

object1 object2

Page 41: Unikernels: in search of a killer app and a killer ecosystem

TurbochargingJVMGC

object1 object2

CPUMMUassistedtrackingtable

Page 42: Unikernels: in search of a killer app and a killer ecosystem

Whyshoulditworkthis?me?•  Unikernels/exokernelsbackin’90•  JVM-on-bare-metal(Azul,BEA,etc.)backin‘00•  Thingstheydidn’thavebackthen– HW-assistedvirtualiza?on(KVM,XEN,etc.)–  Elas?cinfrastructureorientedarchitectures–  CloudFoundry(PaaS)

Page 43: Unikernels: in search of a killer app and a killer ecosystem

No,reallyweneedPaaS

Page 44: Unikernels: in search of a killer app and a killer ecosystem

No,reallyweneedPaaS

Page 45: Unikernels: in search of a killer app and a killer ecosystem

Elas?c,nextgenera?ondatacenter•  Commodity,rack-provisionedHardware•  JeOS(CoreOS,SmartOS,Xen+JeOS)–  aglorifieddevicedriver:anything2vir?o–  op?onally:awaytovirtualizea“dom0”kernel

•  Docker++asthenewELFformat– witheithernokernelorunikernelinside

•  CloudFoundrytorulethemall

Page 46: Unikernels: in search of a killer app and a killer ecosystem

FinallykillingDevOps•  Ops(IT)maintainsthebareOS•  Devsmaintaintheμservices•  PaaSmapsμservicestoimagesandorchestrates

Page 47: Unikernels: in search of a killer app and a killer ecosystem

FinallykillingDevOps•  Ops(IT)maintainsthebareOS•  Devsmaintaintheμservices•  PaaSmapsμservicestoimagesandorchestrates

Page 48: Unikernels: in search of a killer app and a killer ecosystem

Andonemorething…

Page 49: Unikernels: in search of a killer app and a killer ecosystem

Ques?ons?

By@cloud_opinionImaginenoplaqormsIwonderifyoucanNoneedforxAASAbrotherhoodofbaremetalImaginethereisnoVMIt'seasyifyoutryNohostbelowusAboveusonlyapps

Page 50: Unikernels: in search of a killer app and a killer ecosystem