List of Application Dependencies

Docker and containers in general are revolutionising the way we think about application development and operations. As a new packaging technology I think it perfectly defines the interface between an application and the host it will be running on. In order to better understand why this is so, I have looked at this interface and how it captures application dependencies and what it leaves out. Because many different packaging technologies have been used. Here’s a historic list of those that I have ever been using:

  • C64 BASIC source code (actually it is byte code but can be seen as equivalent)
  • C64 6502 machine code
  • Atari ST executable plus RSC file
  • Unix shell source code
  • Unix executable plus libs plus conf
  • NextStep application package in a tar
  • Windows installer package with executables, registry, libs, files, services (a nightmare)
  • Linux RPMs and other packaging formats
  • Java JAR, EAR, WAR
  • Virtual machine
  • Docker containers
  • Unikernels

By looking specifically at the dependencies that applications in these packaging formats need to consider I came up with this list:

  • Hardware
  • Hypervisor
  • Operating system
  • Runtime environment (interpreter, middleware, …)
  • Libraries
  • Filesystem structure, size and specific files
  • Registry and other application configuration
  • System services
  • Networking
  • Other application components
  • Other enterprise services
  • Internet / external services

About Grischa Ekart

Follow me on Twitter: @gekart. I am a trainer and consultant for AWS, Docker, Kubernetes, Machine Learning and all things DevOps.
This entry was posted in DevOps and tagged . Bookmark the permalink.