The Karoo System

Services
Products
Contact us
Karoo Project
Docs
Index
ZWARTBERG Research & Development

The basic idea behind The Karoo System, is to closely couple many individual applications into one virtual "super application".

More stable

Namespace separation

The "super application" is divided into logical modules, and sub-modules. The larger modules are self contained, and only communicate with each other via a well-defined API. They also don't have any access to the memory of the other modules. Other smaller sub-modules will interract quite closely with each other and have access to the memory of other sub-modules. These smaller sub-modules are run in multiple threads in the same application... but the larger, self-contained modules are run in separate operating system processes.

Separate applications rather than forking

The Linux system has long provided us with the ability to fork a process into a new process... so much of what I've described already seems to exist. But not really. What if a forked process dies? What if you want the processes to be running on different hosts? What if you want to modify one of the modules, and replace it, while the "super application" is running?

Less Fragile

Lets face it, we all write bugs.

The more things that are going on in a program, the more likely that bugs will surface. Some bugs are pretty much impossible to find, because they only kick in when some obscure combination of things is happening in the program.

The more threads, the more race conditions and memory accesses after its been freed. The frequency of these bugs seems to increase exponentially with the number of concurrent threads.

Therefore, a program will be more stable if its split into a number of processes, and each of these has just a few concurrent threads.

More Convenient

Easier To Develop

By dividing the "super application" into many individual applications, its much easier to divide responsibility for each module, among programmers in a team. If the module is an idividual application, and it fails... its pretty clear who's fault that is!

As they will each be small individual applications, it will be much easier to do unit testing.

In The Karoo System, a module can be modified and replaced while the rest of the "super application" is still running. If its an online service, then just one part of that service will be paused briefly while the module is stopped, replaced, and restarted.

Multi-Threading library

The Karoo System also provides a convenient way to do multi-threading.

It provides queues, where you can add a runnable object. So its possible to multiplex a lot of tasks into just a handful of threads.

Zwartberg Reseach & Development is a registered trading name of Open Source Software Consulting CC.
Phone:+27235411462, fax:+27235411379, mobile:+27796977082,
brian@zwartberg.com, P.O. Box 2, Prince Albert, 6930, South Africa.