Kulla, a container-centric construction model for building infrastructure-agnostic distributed and parallel applications - Reyes-Anastacio, Hugo G.; Gonzalez-Compean, J.L; Sosa-Sosa, Victor J.; Carretero, Jesus; Garcia-Blas, Javier (The Journal of systems and software, 2020)
This paper presents the design, development, and implementation of Kulla, a virtual container-centric construction model that mixes loosely coupled structures with a parallel programming model for building infrastructure-agnostic distributed and parallel applications. In Kulla, applications, dependencies and environment settings, are mapped with construction units called Kulla-Blocks. A parallel programming model enables developers to couple those interoperable structures for creating constructive structures named Kulla-Bricks. In these structures, continuous dataflow and parallel patterns can be created without modifying the code of applications. Methods such as Divide&Containerize (data parallelism), Pipe&Blocks (streaming), and Manager/Block (task parallelism) were developed to create Kulla-Bricks. Recursive combinations of Kulla instances can be grouped in deployment structures called Kulla-Boxes, which are encapsulated into VCs to create infrastructure-agnostic parallel and/or distributed applications. Deployment strategies were created for Kulla-Boxes to improve the IT resource profitability. To show the feasibility and flexibility of this model, solutions combining real-world applications were implemented by using Kulla instances to compose parallel and/or distributed system deployed on different IT infrastructures. An experimental evaluation based on use cases solving satellite and medical image processing problems revealed the efficiency of Kulla model in comparison with some traditional state-of-the-art solutions. •Kulla creates infrastructure-agnostic distributed and parallel processing structures.•Kulla-Structs for apps(Block), for chained apps(Brick), and assembly(Box) available.•Parallel/distributed patterns are on-demand built by coupling Kulla-structs.•Kulla-Structs implicitly manage I/O, dataflows, parallelism, and data distribution.•The automatic scale-In/Out deployment yields portability and resource profitability.