We have seen that the World Wide Web is a distributed system of interlinked hypermedia resources, based on URI, HTTP and hypertext document formats like HTML. The persisting success of the web has pushed web-based applications into the limelight. Browsers are becoming the most used local applications for computers, providing access to a myriad of different applications via the web. Even in the mobile area, web applications designed for mobile usage successfully challenge native mobile apps.
Web applications designed for millions of users are faced with extraordinary challenges, including the reasonable handling of inherent parallelism and the profound ability to scale.
Hence, concurrency is not just a trait of a web architecture. It is also a mandatory and crucial principle when programming and implementing large-scale web applications in order to utilize hardware capacities to the fullest. As concurrent programming is a non-trivial procedure, we are in need of appropriate abstractions and usable programming models.
The scalability requirement of large web architectures obliges us to think about growth from the beginning. The provision of additional resources later on should provide us with the maximal increase in performance and power possbile for our application. As the vertical scalability of a single node is limited, we must take into account horizontal growth, which also brings in distribution compulsively.