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.
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.
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.