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

Autonomous Application Delivery (RootConf 2017)

Autonomous Application Delivery (RootConf 2017)

G. Clifford Williams

May 11, 2017
Tweet

More Decks by G. Clifford Williams

Other Decks in Technology

Transcript

  1. 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
  2. A BIT ABOUT ME [email protected] 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
  3. 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
  4. WHY WOULD MY APPLICATION BREAK AFTER AN UPGRADE? ▸ Different

    versions of libraries ▸ Security fix forcing an incompatible application or library change ▸ General Deprecations
  5. 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
  6. SOMETHING THAT CONFLICTS ▸ Chroot / Containers ▸ Environment Manager:

    VirtualEnv (python), RVM (Ruby), ${JAVA_HOME}, ${LUA_PATH}, etc. ▸ Wait
  7. 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
  8. 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.
  9. KERNEL LIB C USERLAND UTILITIES YOUR APPLICATION SYSTEM PACKAGES APPLICATION

    DEPENDENCIES YOUR OTHER APPLICATION OTHER APPLICATION DEPENDENCIES
  10. 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
  11. 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/
  12. 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
  13. PKGSRC PORTABILITY ▸ FreeBSD ▸ Darwin/MacOS ▸ NetBSD ▸ OpenBSD

    ▸ DragonFlyBSD ▸ Illumos / Nexenta / SmartOS ▸ Minix ▸ MirOS ▸ Haiku ▸ AIX ▸ QNX ▸ HP-UX ▸ Linux ▸ Cygwin
  14. 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