Connected web applications that work over the internet form the backbone of modern businesses and human digital lives. As individuals, we use consumer-focused apps for social networking and communications, for e-commerce purchases, for travel bookings, to make payments and manage finances, for education, and to entertain ourselves, to name just a few. Likewise, business-focused applications are used across practically all functions and processes in an enterprise.
Today’s web applications are mind-bogglingly complex distributed systems. Users of these applications interact through web or mobile frontend user interfaces. But users rarely see the complex environment of backend services and software infrastructure components that respond to the user requests made through an app’s sleek user interfaces. Popular consumer apps have thousands of backend services and servers distributed in data centers around the globe. Each feature of an app may be executed on a different server, implemented with a different design choice, written in a different programming language, and located in a different geographical location. The seamless in-app user experience makes things look so easy. But developing modern web applications is anything but easy.