Concurrency is an essential part of network services, and it is of outstanding importance for scalable web architectures. Thus we will have a detailed look on concurrency in three distinct areas of web architectures--connection handling, application logic and backend persistence. For each stage, we will discuss its main challenges and issues and explain existing approaches to tackle concurrency. We will then compare and assess the different solutions, while illustrating their advantages and disadvantages.
By dedicating our analysis to concurrent programming for scalable web architectures and their applications, to some extent we will also have a look at general concurrency techniques. However, topics such as parallel programming, parallel algorithms and high performance computing are out of scope for this review. We will also focus on pragmatic concurrency approaches instead of theoretical concurrency models. In a later chapter, we will dare to take a glance at possible concurrency concepts in future programming languages.
Furthermore, we will solely consider scalability in regard to concurrency, not taking into account other design and architectural decisions in detail.