Introduction to Modern Web Application Development
According to the Stack Overflow developer survey 2019 (https://insights.stackoverflow.com/survey/2019#developer-roles), full stack developer is the most popular developer title. The software industry defines a full stack developer as someone who can work on different areas of an application stack. The term stack refers to the different components and tools that make up an application.
In terms of web application development, the stack can be broadly classified into two areas—frontend and backend stack, also known as the client-side and server-side stack. The term frontend generally refers to the part of the code that is responsible for the user interface, and the term backend refers to the part that is responsible for the business logic, database interactions, user authentication, server configuration, and so on. There...
Modern full stack web development
The life of a full stack developer would be worthy of a whole book by itself, so let's leave that topic for another day.
Instead, let's look at a user story from a full stack Java web application and see what is involved.
Let's use an example of developing a user management module for a typical Java web application. Let's assume that you would be writing unit test cases for all of the code, and so we won't look at it in detail here:
- You would start by designing the architecture for the feature. You would decide on the plugins and frameworks to use, patterns to follow, and so on.
- You will be modeling the domain model for the feature depending on the database technology used.
- Then, you would create server-side code and database queries to persist and fetch data from the database.
- Once the data is ready, you would implement...
Web architecture patterns
The full stack landscape is further complicated by the different web architecture patterns commonly used these days. The widely used web application architecture patterns today can be broadly classified into two patterns—monolithic architecture and microservice architecture, the latter of which has become mainstream (fashionable) in recent years.
Monolithic web architecture
A monolithic architecture is the most widely used pattern for web applications because of its simplicity to develop and deploy. Though the actual moving parts will differ from application to application, the general pattern remains the same. In general, a monolithic web application can do the following:
- It can support different...
Choosing the right pattern
When starting a new project these days, it is always difficult to choose an architecture pattern. There are so many factors to take into account, and it is easy to get confused with all the hype surrounding different patterns and technologies (see the blog post on Hype Driven Development (HDD)) at https://blog.daftcode.pl/hype-driven-development-3469fc2e9b22). The following are some general guidelines on when to choose a monolithic web application architecture over a microservice architecture and vice versa.
When to choose a monolithic architecture
The following list can be used as a general guide when choosing a monolithic architecture. This is not a definitive list, but it gives you an idea of...
Summary
So far, we've learned what full stack development is and compared two of the most prominent architecture patterns. We also learned about the advantages and disadvantages of monolithic and microservice architecture, which helps us to choose the right pattern for our use case.
In the next chapter, we will take a deep dive into the JHipster platform and look at all the options it provides. We will also learn how to install JHipster and set up our tools and development environment.