Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java + PaaS + Drift = Sant

Avatar for Anders Sveen Anders Sveen
September 11, 2013

Java + PaaS + Drift = Sant

Foredrag holdt på JavaZone 2013. Video tilgjengelig på http://vimeo.com/album/2525252/video/74444252 . Sorry, Norwegian only.

Avatar for Anders Sveen

Anders Sveen

September 11, 2013

Other Decks in Technology

Transcript

  1. Cloud? •  AutomaOsert!   •  Enkelt  og  kjapt  å  endre

     resursser   •  “Ubegrenset”  med  resursser   •  Standard  kontrakter   •  Standard  oppseV  
  2. Java 2 Enterprise Edition API   Standard   Roller  

    •  Tar  kontroll  over   classpath   •  Store  produkter   •  For  lite  automaOsering   •  Tregt  
  3. Java 2 Enterprise Edition •  Pakker:  war,  ear   • 

    Cluster:  Session  fail  over,  deploy   •  Datasource   •  Kø   •  Transaksjoner  
  4. Application Deployer and Administrator The  applicaOon  deployer  and  administrator  is

     the  company  or  person  who  configures  and  deploys  applicaOon   clients,  web  applicaOons,  Enterprise  JavaBeans  components,  and  Java  EE  applicaOons,  administers  the  compuOng   and  networking  infrastructure  where  Java  EE  components  and  applicaOons  run,  and  oversees  the  runOme   environment.  DuOes  include  se`ng  transacOon  controls  and  security  aVributes  and  specifying  connecOons  to   databases.     During  configuraOon,  the  deployer  follows  instrucOons  supplied  by  the  applicaOon  component  provider  to  resolve   external  dependencies,  specify  security  se`ngs,  and  assign  transacOon  aVributes.  During  installaOon,  the  deployer   moves  the  applicaOon  components  to  the  server  and  generates  the  container-­‐specific  classes  and  interfaces.     A  deployer  or  system  administrator  performs  the  following  tasks  to  install  and  configure  a  Java  EE  applicaOon  or   components:   •  Configures  the  Java  EE  applicaOon  or  components  for  the  operaOonal  environment   •  Verifies  that  the  contents  of  the  EAR,  JAR,  and/or  WAR  files  are  well  formed  and  comply  with  the  Java  EE   specificaOon   •  Deploys  (installs)  the  Java  EE  applicaOon  or  components  into  the  Java  EE  server   hVp://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html  
  5. Mosso Unlike  compeOtors  such  as  Joyent  or  Amazon,  Mosso's  system

      does  not  offer  customers  root  level  access  to  their  servers.   Instead,  servers  are  preconfigured  with  a  range  of  soDware   opOons  and  are  fully  managed  similar  to  a  shared  hosOng   environment.  Keeping  their  hosOng  plamorm  standardized  is   what  allows  them  to  easily  monitor  and  scale  the  service  as   needed.  For  example,  last  week  Mosso  experienced  a   significant  spike  in  load  on  its  PHP  cluster  and  added  10  servers   without  customers  noOcing,  company  execuOves  told  me.   hVp://readwrite.com/2008/02/18/mosso_cloud_compuOng  
  6. PaaS vs. IaaS? •  Mindre  frihet   •  Mer  automaOkk

      •  Mindre  å  tenke  på   •  Dynamikk   •  Kombinere?  
  7. Google App Engine •  Deploy  WAR  i  en  servlet  container

      •  Belastes  for  bruk   •  Bruk  bestemte  API  for  bestemte  oppgaver   –  Persistens   –  Cache   –  Disk   •  Veldig  begrenset  modell   •  Får  smertefri  skalering  og  redundans  
  8. Heroku •  Maven   –  Kompilérer   –  Kjører  tester

      –  Pakker  sammen   •  Java  (m.  bash)   –  Start   –  Stop   •  LyV  på  port   •  Custom  build  packs  
  9. Heroku •  Bash…   •  Wget?   •  Unzip?  

    •  Start  java-­‐uOl   •  Start  python?   •  Start  java   •  Custom  buildpacks…  
  10. Java •  Maven  Appassembler   •  Maven  Assembly  plugin  

    •  Pakk  med  alle  avhengigheter   •  Ta  kontroll  over  classpath   •  LiV  bash  
  11. MinApp v1.7.5 •  Stack:  Glassfish  3.2.1   •  Tjenester  

    –  Oracle  11.0.2.4.18   –  LDAP  1.6.2   •  Deployment   –  512MB  minne   –  4  instanser,  max  20   –  Load  Balancer,  sOcky  session   •  Konfigurasjon   –  S3Bucket:  87d98sa7dasdsa987   –  AWS_Password:  hdsajhasd7921   –  AWS_User:  87291d2  
  12. Stack •  RunOme   •  Byggeverktøy   •  Porter  

    •  Defaults  deployment?   •  Biblioteker?   •  TilleggssoDware?   •  Tjenester?  
  13. Deployment •  Minne   •  CPU   •  Disk  

    •  Instanser   •  ResponsOd  
  14. Applikasjonen •  Beskriv  hva  du  trenger   •  Informasjon  injectes

     runOme   •  Deploy  for  forskjellige  miljøer  fra  samme  kilde    
  15. PaaS Plattform PaaS   Node  1   Node  2  

    Node  3   Node  4   A#1   A#1   A#2   A#2   A#3   A#1   A#3   A#2   A#5   A#4   A#1   A#3   A#5   A#4   A#2  
  16. Drift •  Leverer  versjoner  av  stacks   •  Leverer  versjoner

     av  tjenester   •  Monitorerer   •  Utvider   •  Varsler  
  17. Utvikling •  Lager  applikasjoner   •  Provisjonerer   •  Velger

     stack   •  Velger  tjenester   •  Deployer   •  Skalerer   •  Monitorerer  
  18. Drift •  Stabiliserer  driDen  av  playormen   •  Tydelig  skille

      •  Tilbyr  support  og  hjelp  med  utvikling  på   playormen   •  Vet  lite  om  hver  enkelt  applikasjon   •  Utvikler  nye  tjenester  og  stacks  
  19. Utvikling •  Self  service   •  Bestem  selv  hvilke  stacks

     og  tjenester  du  skal  ha   •  Deploy  når  du  vil   •  Det  forandrer  hva  du  gjør,  og  det  endrer  hvor   oDe  du  gjør  det  J  
  20. Jump! •  DriD   –  Utvikling  av  stabiliserte  tjenester  

    –  Bredere  spekter  av  tjenester   –  Vet  lite  om  applikasjonene   •  Utvikling   –  Robusthet  og  ytelse   –  Ansvar  for  applikasjonene   –  Vaktordninger  
  21. Jump! •  SluV  å  lage  manuelle  ruOner   •  SluV

     å  gjøre  endringer  uten  release   •  Alt  må  automaOseres   •  Alt  må  versjonskontrolleres   •  Èn  kommando  deploy   •  Noen  få  minuVer  på  deploy  
  22. In house PaaS •  Tydelig  grensesniV  mellom  utvikling  og  driD

      •  Tydelige  konsepter  for  utvidelse   –  Stack   –  Tjeneste   •  Dynamikk   –  Monitorering   –  Feilhåndtering   –  Ressursallokering   •  Sikkerhet  og  mulO-­‐tenancy   •  Harmonisering  av  miljø   •  Self  service  og  fleksibilitet  
  23. In house PaaS? •  AutomaOsering  av  deploy  og  applikasjoner  

    •  Ansvarsforhold   •  Robusthet  og  feiltoleranse   •  Modenhet   •  Kompleksitet   –  I  feilsituasjoner   –  Ved  utvikling  av  nye  applikasjoner  
  24. The contenders •  “Heroku  style”   •  Open  Source  

    •  Commercial  support   •  Det  finnes  mye  annet  også…  J  
  25. CloudFoundry •  VMWare/Pivotal  Labs   •  IBM  er  med  

    •  V2  ute  nå   •  Enkle  konsepter   •  “StøVe”  for  Heroku  buildpacks   •  AkOv  community   •  Modent  minus   •  For  mye  kompleksitet?  (BOSH)  
  26. OpenShift •  RedHat   •  V1.2  ute  nå   • 

    “Enkel”  implementasjon  med  få  knytninger  Ol   underliggende  lag   •  Kommandolinje-­‐verktøy   •  Puppet  oppseV   •  Modent  minus   •  Noe  svakere  community  
  27. Flynn •  Open  Source  Heroku   •  Basert  på  Docker

      •  MVP  i  Oktober   •  “Kickstarter”  80.000  USD   •  2  fyrer  med  lang  erfaring   •  “We’ll  do  it  anyway,  it’ll  just  take  longer”  
  28. Roll your own? •  I  pity  the  fool…   • 

    Hovedumordringer   –  Overvåkning  og  monitorering   –  Isolasjon  mellom  Stacks   –  Rammeverk  for  Tjenester   –  Sikkerhet   –  Ressurs  isolasjon   •  Se  på  Heroku  sine  buildpacks   •  Se  på  Docker   –  Isolasjon   –  Sikkerhet  
  29. Here be dragons •  We’re  not  there  yet…   • 

    Playorm  for  videre  utvikling,  finnes  ingen  enkelt   playorm  som  dekker  alt   •  Robusthet,  skalerbarhet  og  ytelse  kommer  først   og  fremst  an  på  applikasjonen   •  Må  det  virkelig  være  så  komplekst?  
  30. More… •  The  twelve-­‐factor  app  –  hVp://12factor.net/   •  Docker

     –  hVp://docker.io   •  OpenShiD  –  hVps://openshiD.redhat.com/   •  CloudFoundry  –  hVp://cloudfoundry.com/   •  Flynn  –  hVps://flynn.io/   •  Juju  –  hVp://juju.ubuntu.com