Refactoring apps as microservices and serverless
As we discussed a couple of sections earlier, software projects are commonly categorized as either green- or brown-field.
Green-field projects are those that start from scratch and have very few constraints on the architectural model that could be implemented.
This scenario is common in start-up environments, for example, where a brand-new product is built and there is no legacy to deal with.
The situation is, of course, ideal for an architect, but is not so common in all honesty (or at least, it hasn't been so common in my experience so far).
The alternative scenario, brown-field projects, is where the project we are implementing involves dealing with a lot of legacy and constraints. Here, the target architecture cannot be designed from scratch, and a lot of choices need to be made, such as what we want to keep, what we want to ditch, and what we want to adapt. That's what we are going to discuss in this section...