Chapter 4: Structured JavaScript Architecture

The 2010's have been an extraordinary decade for JavaScript. What was once a "toy language" used for interactivity on small websites, is now the most popular and inescapable programming language of the world. Even at the beginning of the last decade, most large websites would sprinkle on some JavaScript and jQuery here and there. Adding JavaScript was merely an afterthought to large server-side rendered applications. If you were to have told me in 2010 that an entire application, or better yet, an entire business could be built on just JavaScript, I would have said, "use something more mature and proven like Java!". But this is the world that we live in now, a world where 100% of the stack could be built just on JavaScript and JavaScript alone.

This new and improved way of writing applications has introduced many problems which were previously unknown in the JavaScript community. There are now hundreds of large JavaScript-based applications that are unmaintainable, unscalable, and unfathomably horrific to work with. The good news is that we, as JavaScript developers do not have to reinvent the wheel, but rather take what has already worked in other communities and apply them to ours.

In this chapter, we will explore some of the problems that JavaScript developers face when building large applications. We will see why building a monolithic application does not scale a project properly in the long term and why the community has had such a hard time structuring larger applications.

We then take a page from domain-driven design (DDD) and learn about the layered architecture. We'll dive into the classic MVC pattern and then deeper into how we can extend MVC into repositories and services.

We will also take a look at the microservices architecture and why it has become the poster child of the past decade and why buzzwords like services oriented architecture and distributed systems are not what we, as JavaScript Developers, should focus on.

Last updated