Slide 1

Slide 1 text

FASTER MORE RELIABLE RELEASE MANAGEMENT AUTONOMOUS APPLICATION DELIVERY

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

MAKE SENSE NOW?

Slide 4

Slide 4 text

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

ENOUGH ABOUT ME

Slide 7

Slide 7 text

UNDERSTANDING THE PROBLEM

Slide 8

Slide 8 text

YOUR APPLICATION

Slide 9

Slide 9 text

OPERATING SYSTEM

Slide 10

Slide 10 text

OPERATING SYSTEM YOUR APPLICATION

Slide 11

Slide 11 text

IF ONLY IT WERE THAT SIMPLE

Slide 12

Slide 12 text

KERNEL

Slide 13

Slide 13 text

KERNEL LIB C

Slide 14

Slide 14 text

KERNEL LIB C USERLAND UTILITIES

Slide 15

Slide 15 text

KERNEL LIB C USERLAND UTILITIES PACKAGES

Slide 16

Slide 16 text

KERNEL LIB C USERLAND UTILITIES PACKAGES YOUR APPLICATION

Slide 17

Slide 17 text

OPERATING SYSTEM OPERATING SYSTEM YOUR APPLICATION

Slide 18

Slide 18 text

OPERATING SYSTEM OPERATING SYSTEM YOUR APPLICATION OPERATING SYSTEM YOUR APPLICATION

Slide 19

Slide 19 text

WHAT HAPPENS WHEN YOU UPGRADE?

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

WHY WOULD MY APPLICATION BREAK AFTER AN UPGRADE? ▸ Different versions of libraries ▸ Security fix forcing an incompatible application or library change ▸ General Deprecations

Slide 22

Slide 22 text

WHAT HAPPENS WHEN YOU NEED SOMETHING DIFFERENT, NEWER, OR THAT CONFLICTS?

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

SOMETHING THAT CONFLICTS ▸ Chroot / Containers ▸ Environment Manager: VirtualEnv (python), RVM (Ruby), ${JAVA_HOME}, ${LUA_PATH}, etc. ▸ Wait

Slide 25

Slide 25 text

AND WHAT ABOUT HOW YOU’RE DEPLOYING YOUR CODE?

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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.

Slide 28

Slide 28 text

THE SOLUTION ▸ Build your applications to be independent of the underlying OS and it’s packages

Slide 29

Slide 29 text

KERNEL

Slide 30

Slide 30 text

KERNEL LIB C

Slide 31

Slide 31 text

KERNEL LIB C USERLAND UTILITIES

Slide 32

Slide 32 text

KERNEL LIB C USERLAND UTILITIES SYSTEM PACKAGES APPLICATION DEPENDENCIES

Slide 33

Slide 33 text

KERNEL LIB C USERLAND UTILITIES YOUR APPLICATION SYSTEM PACKAGES APPLICATION DEPENDENCIES

Slide 34

Slide 34 text

KERNEL LIB C USERLAND UTILITIES YOUR APPLICATION SYSTEM PACKAGES APPLICATION DEPENDENCIES YOUR OTHER APPLICATION OTHER APPLICATION DEPENDENCIES

Slide 35

Slide 35 text

HOW DOES THIS HELP?

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

SOUNDS GREAT! HOW DO I GET STARTED?

Slide 38

Slide 38 text

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/

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

PKGSRC PORTABILITY ▸ FreeBSD ▸ Darwin/MacOS ▸ NetBSD ▸ OpenBSD ▸ DragonFlyBSD ▸ Illumos / Nexenta / SmartOS ▸ Minix ▸ MirOS ▸ Haiku ▸ AIX ▸ QNX ▸ HP-UX ▸ Linux ▸ Cygwin

Slide 41

Slide 41 text

OK SO WHAT’S IT LOOK LIKE?

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

QUESTIONS???