Especially in large complex companies, it is not feasible to replace entire systems and they must consider different migration methods. This opens up the debate of whether to choose greenfield or brownfield. Both strategies have their benefits and drawbacks. With the greenfield strategy, everything is made from ground-up – data, operating systems, applications – and then moved to the new infrastructure. In the brownfield strategy, many of the functions of the previous application are retained, especially those that are difficult to recreate. Many of the proprietary systems and critical data and information are also retained in the on-premise infrastructure.
Then, how do organizations make the decision? Through the greenfield implementation, you can start from the beginning; through the Brownfield implementation, you can take advantage of the old systems with a process known as selective migration, whereby you can limit business disruption. So, what strategy should you adopt? Here is a quick comparison:
Pros of Greenfield
- Easy to design the right architecture from the beginning
- Build the right team structure with competencies
- Easy to fit into common standards and then build on that
- Customizable to exactly fit the requirements because it is built from scratch
- Scalable as it has cloud advantage. As applications are made from scratch, enterprises can incorporate the facility for scaling up and down while they develop apps
And the cons…
- Costly, while costs may be less after your migration, the actual process of migration may be expensive. It may be harder to estimate system usage, so take care of your cost estimation
- Steep learning curve, since everything is new. Teams, if used to the legacy system, might take some time to get used to the cloud options
- Affects the entire organization – Migration to the cloud is serious business. It affects your operating model, and the staff in your company will have different kinds of responsibilities. Cloud maintenance and security will be managed by the cloud service provider, but you will need to come up with new strategies for storing and handling computing resources.
Pros of Brownfield
- Familiar, as it is built on existing legacy components. So, you will be familiar with a considerable part of the working of the infrastructure.
- Cost effective, as migrating everything at the same time to the cloud can be a huge expense. Also, system usage is easier to estimate, so cost estimation for cloud infrastructure would be easier to make.
- Simple, as nearly every application can get built into a docker container and can get deployed to the cloud with this.
- Allows you to move your sub systems step by step
And the cons…
- Retains the limitations from original infrastructure
- Rigid, the biggest advantage with cloud is that you can scale at will. The biggest limitation with on-premise systems is that you must purchase when you need more computing capacity, but when you don’t need that much, the resources stay under-utilized. Sometimes your software is not made to be scalable!
|Start from scratch||Build on existing codes|
|Choose your technology||Technology already chosen|
|Use the best idea, technology and architecture||Build on previous developer’s code|
|Learn from mistakes||Work around the limitations|
You must remember
The migration should get done by the right people for your transformation. You must identify system architecture in depth with system contexts and communication ways. Also, ensure you move systems step by step into cloud. Adjust system connections then to the new location and avoid migrating more than one sub system per time for easier error search. Some more key points:
- Migration is less risky when having good integration tests, which can run afterwards to ensure system landscape behaves as before
- Avoid making system changes plus the migrations at a time for easier traceability
- Take care about internal sub systems which may not have internet access (private VPN in the cloud would be a solution then)
- Build up a migration environment in parallel, let this be running and working in production until your cloud migration is finished and working, then use downtime to move all needed data into the cloud. Before doing that, ask for parallel usage of both systems (old legacy and new cloud) to ensure it works
- Take care about timings and system response times. Maybe you will get unforeseen surprises here, especially while you are partly in the cloud and partly legacy (which is sometimes necessary depending on system boundaries).
On your journey to the cloud, always use infrastructure as code (version-able, easy to create new environments fast). And, cost estimations for cloud are not easy to make. Finally, an automated build and deployment system is very important for cloud because, the time wasted otherwise, is considerable.
Did you enjoy the blog? Write to me if you want to discuss the topic further.
Published by: Michael Baarz
Managing Delivery Architect
Michael has been a consultant for 25 years, working in the software development area. He is enthusiastic full stack developer mainly working with .NET technologies and Angular / React with Typescript. Currently he is working as an architect in cloud initiatives, system modernizations and software quality initiatives.