This page documents our decision process for initial DATIM / OpenHIE packaging strategy in 2015.

Upfront Presumptions:

  • Implementers of this package will be "interested parties", to include ministries of Health, large implementing partners, and other country stakeholders.
  • The OpenHIE DATIM distro will include functionality to support 1.0 OpenHIE workflows, plus additional pre-release versions of metadata synchronization and aggregate data exchange workflows
  • All reference OpenHIE components will be included in the package
  • Implementation site requirements include:
    • Single server-level computer (specs to be determined) with a Linux-based OS installed
    • Working, active internet connection
    • Expertise in the installation of Linux-based software, modification of configuration files

Approach being considered:

  • Two-pronged packaging approach:
    • Installer packaging process for those with a machine available at the location of the implementation
    • Cloud-hosted images through 1 or 2 service providers for those who want to work with a remotely hosted service

Binary / Standalone

A binary or standalone package usually consists of a .zip or .tar.gz file that will first need to extracted.  After extraction, a binary or script is executed to run the application. 

Pros

  • No additional software should need to be installed.
  • Does not require any specific hardware support.
  • Does not require internet access for installation. 
  • Performance is great.
  • Easiest to install.

Cons

  • Specific binaries need to be created for each OS supported.
  • No easy way of getting updates.
  • Requires extra effort from software maintainers to put the standalone package together.

Installer Packages

Installer packages consist of platform specific packages that, when executed, install the application to a specific directory and also can run some post installation configuration.  File extensions typically are .exe or .msi for Windows and .deb or .rpm for linux. 

Pros

  • Does not require any specific hardware support.
  • Performance is great.
  • Easily updated if configured to use a repository.
  • Easy to install using native OS tools.

Cons

  • May require extra software dependencies.
  • Packages are specific to OS.
  • Installation may require internet access.

Virtual Machine Image

Virtual machine images consist of a base operating system with the application preinstalled and preconfigured.  This is then distributed as a .ova or .vmdk files. 

Pros

  • Does not require a specific base OS.
  • Easy to install.
  • Easy to upgrade after initial install. *(If updating packages in the virtual machine.)

Cons

  • Requires VM software to be installed (e.g. VirtualBox)
  • Requires Hardware support 
  • Performance is not as good as native.

Docker image

A docker images consists of virtual container containing a minimal OS and the application pre installed and preconfigured.  The most common form of distribution is in a source repository, or through Docker Hub.

Pros

  • Performance is very close to native.
  • Easy to get new updates once installed.

Cons

  • Requires docker and base os it be installed before running image.
  • Requires Hardware support on non linux OS.
  • Host OS and image OS must match. (e.g. Linux os will run only linux images.)
  • Requires internet access to get base image

Cloud Host Image

A cloud host image is a pre made virtual machine image built to run on a specific cloud hosting provider.  The most common format is Amazon's Amazon Machine Image(ami). 

Pros

  • Easy to setup when using Amazon EC2.
  • Performance is good with the option to scale up using EC2.
  • Easy to upgrade after initial install. *(If updating packages in the vm.)

Cons

  • Requires internet access for installation AND operation.
  • Cost of running EC2 instances.

 

Packaging SolutionRequires Additional SoftwareRequires Hardware SupportRequires Operating System SupportRequires Internet AccessPerformance(1-5)Ease of Install(1-5)Easy to update
Standalone BinaryNoNoStandalone is specific to OSNo55No
Installer PackagesYes, dependenciesNoPackages are specific to OSYes54Yes
Virtual Machine ImagesYes, VM softwareYes, AMD-V or VT-xNoNo34Yes*
Docker ImagesYes, docker and OS imgYes, if using boot2dockerHost os and docker OS must matchYes4.52Yes
Cloud Host ImagesN/AN/AN/AYes, even for operation.55*Yes*

Blockers for each packaging method

Standalone Binary

You should not use the standalone binary if any of these are true.

  • Need easy updates in the future.
  • Using a non supported OS

Installer Packages

You should not use the installer packages if any of the following are true.

  • No internet access during install. This prevents installation of additional software.
  • Using a non supported OS.

Virtual Machine Images

You should not use the virtual machine images if any of the following are true.

  • Do not have hardware support for virtualization.
  • If you do not have internet access and do not have virtualization software already installed.
  • Need the maximum amount of performance from your hardware.

Docker Image

You should not use the Docker image if any of the following are true.

  • You need an easy to install method.
  • Using a non linux OS and do not meet the hardware virtualization requirements.
  • No internet access during install and do not have docker and all images needed to run the application. 

Cloud Host Image

You should not use the Cloud hosting image if any of the following are true.

  • You do not have reliable internet access.  
  • You need your data on site.
  • Cloud provider is too expensive. 

 

  • No labels