Back

Building web apps using the client-server architecture proved to be the main source of problems at the time. Given the stateless nature of the HTTP protocol, building something as simple as a shopping cart required complex synchronization between the client-side JavaScript (still in its infancy then) and server-side session stores. Database connections quickly emerged as a significant bottleneck. As user counts grew, apps would exhaust available connections, resulting in system failures. After all, one thing is building a desktop app to handle 25 to 75 users concurrently. The same practices and protocols weren’t designed to handle 5K users or more. … Service versioning became a particular nightmare. When service contracts changed, teams faced an impossible choice: Break existing clients or maintain multiple service versions indefinitely. Many organizations ended up supporting three or four versions of the same service, dramatically increasing operational complexity. Meanwhile, service discovery mechanisms like UDDI registries proved too cumbersome for practical use. UDDI registries were supposed to provide a central location where users could find the needed services, like a Yellow Pages catalog. Instead, what we found was hard-coded endpoints implemented on a per-project basis pointing to services no one was aware of.

Related Pain Points4