Internals Documentation
The internals documentation covers the design and functionality of ISM and related projects. The target audience is developers and operators.
Developers should have familiarity with:
- Isabelle: server and related components
- Golang: Basic Language knowledge around concurrent and network programming
- Linux: Basic knowledge around the network stack, cgroups, namespaces (user, network) and security
- systemd: Basic knowledge around services and cgroups integration
While operators only need familiarity with Linux and Isabelle.
Interesting Material
Below is a loose collection of interesting material for reading up on relevant topics. The documentation doesn't expect you to know all of this.
- LWN: Linux news and articles
- Namespaces, everything from the Kernel/Namespaces index but in particular:
- Network namespaces
- Namespaces in operation, part 7: Network namespaces
- systemd: system and service manager, backbone of ISM
- Linux Kernel: For FS and supervision layer
- Shared Subtrees
- Overlay Filesystems
- strace, very useful for debugging mount issues
- Golang
- Incus: Current/ New executor
Relevant courses
If you're a student at TUB you will benefit from having taken the courses:
- TKN Rechnernetze und verteilte Systeme
- Algorithmen und Datenstrukturen
- Systemprogrammierung
They will aid with network and concurrent programming.
Appendix
The nomenclature can be a bit confusing given the overuse of "server" and "instance". Below a small definition of used components and their names.
- server instance: A running systemd unit, managed by ISM, containing an isabelle server
- server handle: The internal representation of a server instance in ISM
- server pool: A pool of running server instances manged by the Agent and used by the Gateway
- Gateway: An ISM component facilitating the communication between clients and server instances
- Agent: An ISM component facilitating the monitoring of server instances and server pool management.
- Monitoring clients: ISM managed
isalink.IsaClients
used for monitoring by the agent