What Is Component Based Development?
Component based development is growing in popularity. And it presents a viable alternative to choosing between a monolith and microservices.
In this blog, we discuss the benefits of component based development and how teams can switch to a component based architecture in eight steps. Keep reading to find the answers to questions such as:
- What is component based development?
- Why use components?
- How do I move to a component based architecture?
- How can I use component based development with Helix Core?
What Is Component Based Development?
Component based development is an approach to software development that focuses on the design and development of reusable components.
You can break your monolith into components:
- Using a producer/consumer model.
- Reusable/shared libraries.
- By front-end/back-end.
Breaking up software into components is the right thing to do. No one can argue that. It’s what the Agile revolution is all about. And using components can better serve business needs than microservices.
Why Use Component Based Architecture?
Component based architecture stays up-to-date — without rebuilding it from scratch. That makes component based architecture a better fit for companies with complex, monolithic codebases.
Using components turns a monolith into software building blocks. And these components can be combined, reused, and versioned.
How to Move to Component Based Development
Here's how to move to component based development from your existing monolith.
Build the Right Approach
You’ll want to construct a new environment that incorporates both your legacy codebase and plans for the new system.
Here are 4 key tips for building the right approach.
- Assess low-hanging fruit.
- Break-off and refactor after you migrate.
- Attack a component/package/service in a logical order.
- Adopt new tools throughout the process.
Your goal should be to support both the old and the new models simultaneously.
Related Webinar 🎥 Should You Break Up Your Monolith?
8 Steps to a Successful Migration
When it comes to breaking up your monolith into component based development, there are 8 steps that will be critical for success.
- Start with capabilities of the monolith that are decoupled and don’t require changes to customer-facing apps.
- Focus on software delivery approaches and upskilling team members.
- Build out the minimum infrastructure needed to deliver independently deployable components (e.g., containerized microservices) that expose self-service APIs.
- Start tracking technical issues for new and legacy, including:
- Counting errors released to production.
- Service availability.
- Time to remediate.
- Consider cloud deployment options (as appropriate).
- Implement basic monitoring for new and legacy.
- Implement automation wherever possible.
- Migrate in atomic steps.
Build Component Based Architecture With Helix Core
You can’t just dump the monolith. But you can modernize it and get it working the way you need it too. And that’s by building component based architecture with Helix Core.
Helix Core can handle your entire codebase as-is, without requiring major refactoring first. All you have to do is import and go. There are no barriers or risk. And there is no immediate need to break it up.
Developing Using Perforce Streams
Features like Perforce Streams support component based development inherently. With Streams, you can define component relationships across Streams. For example, one stream could define another stream as a component at a specific change level. This means the stream that is defined as a component can continue to iterate independent of the component relationship, which is exactly the goal of component based development.
It is also possible to submit changes from a consuming stream to a component stream, with multiple different granularities of control. Add in niceties like preventing circular dependencies across components and you’ll see why component based development is an easy development methodology to execute with Helix Core.
Developing in P4V
Component based development best practices are also built directly into the P4V, via a Components section on the Stream spec, providing a clean and easy way to reuse components across projects. P4V automatically defines maps the relationship between component and customer through a single line of text.
Streams provide the automated building blocks you need for component based development. This makes it easier to pull related codelines together for a build. And it enables IP reuse because files are easier to locate.
And, if you want to support teams building components in Git, Perforce supports that, too. You can bring those components in seamlessly using the Git Connector without impacting the build and release process.
Component Based Development + Helix Core
See for yourself how Helix Core will help you modernize your codebase — and move into component based development. You can get started for free for up to 5 users and 20 workspaces.
This blog was originally published November 27, 2019 and has been updated for accuracy.