Asynchronous Middleware for Parallel Systems
Home Overview Problems Architecture Benefits Developers Products Add-Ons Contact
  Problems
| Determinism | Locks | Race Conditions | Concurrency problems | Multi-Threading | Multi Processing | Distribution | Cloud Computing

The more general problem: Blending of concerns

Threaded design patterns have evolved over decades as special cases of a more general problem; “Blending of problem specific concerns with runtime specific concerns”.
While writing code, the programmer is concerned with a mix of different issues. Some of them are specific to the problem that he is trying to reduce to computer code, while others are related to the runtime where the code is going to execute. One example being the threads themselves which are totally a runtime specific issue.
While recent attempts like Java and .NET have given a quantum leap forward in separating such concerns, we argue that they have taken a slightly wrong direction.
While they have separated managed code from unmanaged code and explicit memory management from implicit management and introduced common language runtimes to abstract out the code from its execution environment, they have not addressed the core issues correctly; that is of the “separation of problem specific concerns from runtime specific concerns”.
One problem specific concern is the inherent parallelism available in it. To exploit this parallelism, the programmer still needs to concern himself with run time formalisms. The programmer is  dealing with the run-time via system calls related to threads and their synchronization, spawning new threads, terminating them on the fly, managing thread pools, creating and acquiring locks and mutexes, dealing with deadlocks and their avoidance and prevention, waiting on conditions and semaphores  to name a few .
The programmer doesn’t know at program time whether the code is going to run on a single core, single processor system or would be running on a multi-core, multi-processor system. And what about scaling the application to a cluster of servers or even out to the cloud?
Take e.g. a problem that programmer faces when passing a simple message. If it is passed by reference, it can only be run by another process running on the same shared memory. If it passes by copy, it can be run on a process running in a separate memory context but then it is an unnecessary burden on a system with shared memory. There is no way a programmer can handle this at coding time for all deployment scenarios.
In theory once the program has been reduced to correct executable code, the code should be able to run on all deployment scenarios without having to go back to the programmer to adjust his code as per new runtime environment. Easier said than done.
We argue that the correct separation is between “problem specific concerns and runtime specific concerns”. The job of the programmer is not to find “how” to exploit the parallelism. His job is only to mention “what” the parallelism is. To deal with runtime, we need to introduce a ‘middleware’ and i t is the job of the ‘middleware’ to find out “how” to use the parallelism on the given runtime. The programmer does this by making the ‘middleware’ aware of the inherent parallelism in the problem and for this, specific formalisms need to be provided. Once this awareness exists, it is the job of the middleware to exploit the runtime environment provided to it and ‘map’ problem specific abstractions correctly to runtime.
When and if this is done correctly, the same code should run as good on a single computer as it runs on a cloud based distributed structure, obviously exploiting all the powers of the cloud.

Same analogy goes to other types of parallelisms. There are Task Parallelisms and there are Data Parallelisms. AMPS provides such separation of concerns.
News & Events

1st October 2009
A complete Service Delivery Platform for telecommunications applications is released all built on top of AMPS. SDP is showcased name Augur is available at http://Augur.biz

1st July 2009
AdvOSS launches a complete Diameter AAA server built on AMPS. The server is tested with very high load of millions of subscribers and worked well.

1st April 2009
AdvOSS launches full suite of Diameter applications built on top of AMPS. These include a HSS (Home Subscriber Server), Offline Charging and Online Charging. These complete a full suite of AAA applications for IMS (IP Multimedia Sub-System)

1st Jan 2009
Diameter Stack Launched. AdvOSS has launched a full Diameter protocol stack. This protocol is at the heart of next generation AAA and requires implementations that support higher processing and require scalability. This stack is now an integral part of AMPS.