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

I am a DevOps consultant writing about Docker, Kubernetes, AWS, IT, strategy, management, mobility, business cases, apps, consumer electronics and MBA education. Talk to me on Twitter: @gekart.
This entry was posted in DevOps and tagged . Bookmark the permalink.