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

Autonomous Application Delivery (RootConf 2017)

Autonomous Application Delivery (RootConf 2017)

Dd28ac933e65e7a60844ca6868b88ece?s=128

G. Clifford Williams

May 11, 2017
Tweet

Transcript

  1. FASTER MORE RELIABLE RELEASE MANAGEMENT AUTONOMOUS APPLICATION DELIVERY

  2. LET’S CLARIFY WHAT IS AUTONOMOUS APPLICATION DELIVERY? ▸ Your OS

    provides a set of features ▸ Libraries, System Calls, Packages, etc. ▸ Your (internally developed) application requires a set of features ▸ Libraries, System Calls, Packages, etc. ▸ Decouple your application from the OS for more flexibility
  3. MAKE SENSE NOW?

  4. GCW@8IONS.COM ABOUT ME

  5. A BIT ABOUT ME GCW@8IONS.COM G. CLIFFORD WILLIAMS ▸ “G.”

    is for George, and I loathe that name. I go by Cliff ▸ married: 0 kids, 2 dogs, 4 nieces, 3 nephews ▸ Highly opinionated // practically agnostic ▸ My day job: ▸ putting things in the cloud ▸ deploying software all day ▸ building CI/CD pipelines ▸ automating all the things
  6. ENOUGH ABOUT ME

  7. UNDERSTANDING THE PROBLEM

  8. YOUR APPLICATION

  9. OPERATING SYSTEM

  10. OPERATING SYSTEM YOUR APPLICATION

  11. IF ONLY IT WERE THAT SIMPLE

  12. KERNEL

  13. KERNEL LIB C

  14. KERNEL LIB C USERLAND UTILITIES

  15. KERNEL LIB C USERLAND UTILITIES PACKAGES

  16. KERNEL LIB C USERLAND UTILITIES PACKAGES YOUR APPLICATION

  17. OPERATING SYSTEM OPERATING SYSTEM YOUR APPLICATION

  18. OPERATING SYSTEM OPERATING SYSTEM YOUR APPLICATION OPERATING SYSTEM YOUR APPLICATION

  19. WHAT HAPPENS WHEN YOU UPGRADE?

  20. WHAT HAPPENS WHEN YOU UPGRADE? AFTER AN UPGRADE OF THE

    OS OR PACKAGES ▸ Maybe your application breaks ▸ rework your code ▸ backtrack/downgrade ▸ Maybe it’s fine
  21. WHY WOULD MY APPLICATION BREAK AFTER AN UPGRADE? ▸ Different

    versions of libraries ▸ Security fix forcing an incompatible application or library change ▸ General Deprecations
  22. WHAT HAPPENS WHEN YOU NEED SOMETHING DIFFERENT, NEWER, OR THAT

    CONFLICTS?
  23. DIFFERENT OR NEWER ▸ Maybe there’s a private repository you

    can add/use ▸ Maybe you can download and compile it yourself ▸ Maybe you can reach out to the package maintainer and get them to bump the version
  24. SOMETHING THAT CONFLICTS ▸ Chroot / Containers ▸ Environment Manager:

    VirtualEnv (python), RVM (Ruby), ${JAVA_HOME}, ${LUA_PATH}, etc. ▸ Wait
  25. AND WHAT ABOUT HOW YOU’RE DEPLOYING YOUR CODE?

  26. WAYS TO DEPLOY ▸ Ship a tarball and extract it

    ▸ Package your app “natively” as an RPM, .DEB, .Pac, etc ▸ Package your app as a runtime package: Ruby Gem, Lua Rock, Python Egg, etc. ▸ Use a Makefile, Maven, Ant, etc. ▸ Use Puppet, Chef, Ansible, SaltStak, Tivoli, Bladelogic
  27. THE PROBLEM STATEMENT ▸ When you build your application on

    top of the facilities provided by your Operating System you could be locking yourself into an echo system that doesn’t meet the needs of your application and/or customers.
  28. THE SOLUTION ▸ Build your applications to be independent of

    the underlying OS and it’s packages
  29. KERNEL

  30. KERNEL LIB C

  31. KERNEL LIB C USERLAND UTILITIES

  32. KERNEL LIB C USERLAND UTILITIES SYSTEM PACKAGES APPLICATION DEPENDENCIES

  33. KERNEL LIB C USERLAND UTILITIES YOUR APPLICATION SYSTEM PACKAGES APPLICATION

    DEPENDENCIES
  34. KERNEL LIB C USERLAND UTILITIES YOUR APPLICATION SYSTEM PACKAGES APPLICATION

    DEPENDENCIES YOUR OTHER APPLICATION OTHER APPLICATION DEPENDENCIES
  35. HOW DOES THIS HELP?

  36. BENEFITS OF THIS APPROACH ▸ Application Autonomy — meaning you

    can upgrade your OS and Packages without worrying about breaking dependencies for your application ▸ You can create multiple application silos that contain conflicting libraries, tools, etc. ▸ Deployments can be standardized across multiple Operating Systems making it easy to migrate from platform to platform ▸ You can isolate exposure to security flaws in underlying libraries ▸ The features of your application can develop at your pace not the pace of your OS’s package maintainers ▸ You still have access to all of your system packages
  37. SOUNDS GREAT! HOW DO I GET STARTED?

  38. HOW TO GET STARTED FRAMEWORKS THAT ALLOW AUTONOMOUS APPLICATION DELIVERY

    ▸ PkgSrc - https://www.pkgsrc.org ▸ OpenPkg - https://www.openpkg.org ▸ Nix - https://nixos.org/nix/
  39. PKGSRC WHY I PREFER PKGSRC ▸ 1700+ Packages ▸ Your

    choice of binary or source builds or a mix of the two ▸ It’s easy to get setup ▸ multiple PREFIX’s allow for easy peer installations ▸ Simple straightforward process to package your application ▸ Easy to fork the repository and add the dependencies you need ▸ Unprivileged operation
  40. PKGSRC PORTABILITY ▸ FreeBSD ▸ Darwin/MacOS ▸ NetBSD ▸ OpenBSD

    ▸ DragonFlyBSD ▸ Illumos / Nexenta / SmartOS ▸ Minix ▸ MirOS ▸ Haiku ▸ AIX ▸ QNX ▸ HP-UX ▸ Linux ▸ Cygwin
  41. OK SO WHAT’S IT LOOK LIKE?

  42. WHAT’S IT LOOK LIKE #installing/bootstrapping pkgsrc git clone https://github.com/jsonn/pkgsrc.git cd

    pkgsrc/bootstrap ./bootstrap #building a package cd pkgsrc/devel/memcached make install clean
  43. QUESTIONS???