Understanding the goals of application development

Before we move on to the concepts of microservices and cloud-native applications, let's take some time to understand the common goals that we have when we develop applications. Understanding these goals will help us understand why applications are moving toward microservices architecture.

First of all, we should remember that the software industry is still a relatively young industry. One thing that's been a constant in my decade-and-a-half of experience with developing, designing, and architecting software is that things change. The requirements of today are not the requirements of tomorrow. Technology today is not the technology that we will use tomorrow. While we can try predicting what will happen in the future, we are often wrong.

One of the things we did during the initial decades of software development was to build software systems for the future. The design and architecture were made complex in preparation for future requirements.

During the last decade, with agile and extreme programming, the focus shifted to being lean and building good enough systems, adhering to basic principles of design. The focus has now shifted to evolutionary design.

The thought process is this—if a system has a good design for today's needs, and is continuously evolving and has good tests, it can easily be refactored to meet tomorrow's needs.

While we do not know where we are heading, we do know that a big chunk of our goals when developing applications have not changed.

The key goals of software development, for a large number of applications, can be described with the statement, speed and safety at scale.

We will discuss each of these in elements in the next section.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset