Application Isolation
Background
Application running on GEISA need separation / isolation from each other to ensure that one application doesn’t impact another. While some level of resource management and process isolation is provided by most operating systems, this isn’t robust enough to for GEISA.
There are several methods for providing advanced isolation including:
Containers
Virtual Machines / Hypervisors
Virtual Execution Environments (e.g. Java’s JVM, Erlang’s BEAM, .Net’s CLR)
Amazon’s Firecracker team released a whitepaper on their efforts which includes a helpful discussion of the advantages and disadvantages of these approaches.
Isolation Mechanism
Resource Management
Need mechanism for prioritization if there is resource contention. Also, need mechanism for observing total load on a device to allow for management of the application portfolio.
Define Container Resource Limits
CPU limit (% of CPU)
Memory Limit (in 1 KB units)
Storage Limit (in 1 KB units)
Allowed Network Bandwidth (in 1 KB units)
Ongoing Limit Outbound
Ongoing Limit Inbound
Burst Limit Outbound
Allowed Network Interfaces
HAN
LAN
Define Container Access Levels:
Level 0 - Read & Control - Core Features - Immutable
Level 1 - Read & Control - Utility
Level 2 - Read Only