Most organizations have legacy systems that are deployed and used in production. Hopefully, most of them are well maintained and don’t require much time to support. Unfortunately, there are typically one or two applications that require extraordinary effort each time a new feature, however small, is developed. In such systems, even critical bugs can linger for a long time due to the workarounds built into the system.
These legacy systems are often too valuable to get rid of yet too expensive to maintain. The system may be a project that was developed a long time ago using an obsolete technology stack. It may also be a code base your organization inherited after a business acquisition. The backstory of each legacy system differs, but they all pose the same question: how can developers work effectively with legacy systems and legacy code?
There are three major ways to deal with a legacy system:
If the legacy system works well enough and your organization doesn’t require a lot of new features or bug fixes, then the simplest option is to just leave that system as is, without refactoring or rewriting it. Sometimes, the simplest way is also the right way.
But if the legacy system requires active development in a form of new features or constant bug fixes, you must take action. Trying to evolve such a system without putting effort into changing its underlying structure will quickly become prohibitively expensive.
So, which approach to choose? Rewrite this system from scratch or gradually refactor it?
The answer depends on the project specifics, but in general, you should choose the full rewrite in one of the following two situations:
1. The project’s code base is small – If the legacy system isn’t too large, then its full rewrite becomes a viable option.
But beware: if the rewrite can’t be realistically completed within several months, the risks of the full rewrite become too significant.
What are those risks?
For one, the longer it takes to complete a project, the greater the risk of delaying it, which in turn increases the risk of not delivering it at all.
Secondly, if the legacy system is still getting updates, the new system will need to continuously catch up with it functionality-wise. The organization may end up supporting two versions of the same system for a long time.
2. The project’s technology stack is not compatible with the stack your organization uses currently – If the older system is written in COBOL or other lesser-used programming language, then rewriting it from scratch becomes the only option, because you may simply not find developers willing to refactor that system using the existing technology stack.
In all other cases, consider refactoring over a rewrite. Refactoring will allow you to improve the quality of the code base while still delivering business value in the form of new features.
The refactoring should follow the following strategy (even if you must do a full rewrite due to incompatible technology stacks, you should still take the same approach):
1. Identify a small piece of functionality that is loosely connected to the rest of the system. The smaller that piece, the better.
2. Declare this functionality a separate bounded context. A bounded context is a part of the project that is logically separated from the rest of that project. For example, your legacy system may consist of three main areas: product catalog management, sales, customer support. All these areas tackle different aspects of the business; they are logically separated from each other. All three can be represented as separate bounded contexts.
The goal of defining a new bounded context is to put clear boundaries between the new and the old code. The new code can now adhere to best practices of coding, with clean and simple architecture, free from the influence of the old code.
3. Create an anticorruption layer around the new bounded context. In order to prevent the old code practices from influencing the new code, you must maintain a clear separation between the two. This separation takes the form of an anti-corruption layer – a logical layer in your code base. The bounded context will talk to that layer on its own terms, and the layer will translate these communications into legacy terms and vice versa.
Eventually, the bounded context will grow until it absorbs all the legacy code, at which point the anti corruption layer can be removed.
This approach combines the benefits of a full rewrite and a gradual refactoring without having to deal with their drawbacks.
The benefit of a full rewrite is that because the code is new, you have a high development speed as the existing legacy system doesn’t slow you down. It also helps with the team morale. The problem with the full rewrite is that it’s a big upfront investment.
On the other hand, with gradual refactoring – meaning, refactoring only one piece of code at a time, without declaring a bounded context – you have the working software at each step of the development process. Moving gradually allows for improving a single piece of code at a time while still delivering the immediate business value in the form of new functionality. However, the major drawback is that the team must frequently deal with the legacy code base. Depending on the quality of that code base, it can slow down the refactoring significantly.
With the new bounded context, you can build a new and clean code base, but at the same time, it doesn’t take you too much time to do so because the size of that code base is very narrow. As a result, your team can have the working software at each step of the development process.
There are several ways to implement the anticorruption layer. When you start out with the bubble context and build up a new domain model, the anticorruption layer may be just a repository – a class that retrieves data from the legacy database and saves it back. Such a repository will know which parts of the legacy database to look at to gather information required to materialize new domain classes. It will also know how to persist them back to the legacy database without violating any implicit and explicit data integrity rules.
But as you continue to develop new functionality in the bubble context, you will eventually outgrow the simple repository. There are several issues with this type of the anticorruption layer:
The solution is to promote your bubble context into an autonomous bubble and your anti corruption layer – into a synchronizing anti corruption layer.
An autonomous bubble differs from a regular bubble context in that it has its own database. The synchronizing anticorruption layer also becomes significantly larger in scope, and so should be treated as a separate bounded context.
Unlike the regular anticorruption layer, the synchronizing anticorruption layer is an independent piece of software. Its purpose is to keep the new and the old database in sync with each other.
There are several benefits to this approach:
There are also some drawbacks to consider:
Overall, the autonomous bubble context and its synchronizing anticorruption layer becomes a piece of software in its own right. As you continue with its development, you will gain more territory by refactoring the legacy part of the application. This approach is also called the Strangler pattern.
It’s also important to maintain a good unit test suite in order to prevent any bugs that might occur during the refactoring. A good source on the topic of unit testing is my book: Unit Testing Principles, Practices, and Patterns.
DevOps built-in flexibility allows development teams to work at a level that suits their resources and skills without being held back by departmental barriers.Read more
Artificial Intelligence (AI) – the capability of a machine or piece of software to display human-like intelligence – permeates our daily lives, often in ways we do not notice.Read more
Data-driven software touches our lives every day. Sometimes, it is in ways you see, such as when you check your Twitter feed, pay for your bus ticket or order your latte using your phone.Read more
EastBanc Technologies is recognized on CIOReview’s list: “Most Promising Microsoft Azure Solution Providers.”Read more
In this article, we’re going to dig a bit deeper into AI-implementation. We will take our airline use case a step further, and we will describe a specific example of how EastBanc Technologies solved a particularly challenging problem through AI and machine learning.Read more
If your organization provides a product or service -- which applies to just about any business on the planet -- you, too, can benefit from Artificial Intelligence (AI). While implementing AI may sound daunting, it doesn't have to be complex or expensive. This article covers the basics of AI and looks at some easy-to-explore use cases.Read more
Digital transformation is about opportunity and survival. Businesses that transform digitally gain a significant competitive advantage.Read more
Part 2: Best practices for modernizing your company’s IT infrastructure to ensure innovation success.Read more
Best practices for modernizing your company’s IT infrastructure to ensure innovation success.Read more
Learn how machine learning engineers and data scientists collaborate and roll out models faster and with ease using Azure Machine Learning.Read more
What is DevOps, what are DevOps practices, and how do you implement DevOps? Your FAQs answered.Read more
Learn how technology can better meet your business needs with this foundational understanding of how software and system architectures work.Read more
Ready to embrace AI? Explore why cloud computing is the best infrastructure for your AI model, not on-premises.Read more
Software is a strategic differentiator that can catalyze digital transformation. Organizations are investing in technology, such as modern cloud services, to drive efficiencies and increase the customer experience. To make this a reality, it’s essential that business leaders have a basic understanding of business software and applications work and the opportunities they bring.Read more
How an intelligence-driven customer technical support approach can transform your support from a reactive operation to a streamlined, efficient, and proactive operation.Read more
Kubernetes is a popular container orchestration system, but how did it come to be and why, and what role does it play in digital transformation?Read more
Continuous integration and continuous delivery (CI/CD) is integral to a DevOps approach to software development. But what is CI/CD and why is it key?Read more
This article is the third in a series that aims to demystify data science , machine learning, deep learning, and artificial intelligence (AI) – while exploring how they are interconnected.Read more
2020 has seen profound change in the way we live and work with COVID-19 accelerating the pace of digital transformation. Yet, business leaders are often confused about how to implement one of the key enablers of...Read more
Artificial intelligence (AI), together with its brethren buzzwords data science, machine learning, and deep learning have been around for some time now and are no longer future concepts. Yet misconceptions persist about the true meaning of these terms.Read more
When SUSE, the world’s largest independent open source company, announced its acquisition of Rancher Labs in early July 2020, the industry took notice. Clearly, the Kubernetes management industry is very much alive.Read more
We live in a technology-driven world. Even non-technology companies are seeing their business models increasingly shaped by technology. Led by disrupters such as Amazon and Netflix, those enterprises who recognized opportunities early have found ways to extend the analog experience into a digital one. Even creating new revenue streams that they could never have predicted.Read more
Digital transformation is about delivering core competencies in a digital, automated, and user-centric manner. Driven by data and powered by tech (e.g. cloud, cloud native stack, AI, machine learning, and deep learning), it increases business agility, competitiveness, and enhances customer value.Read more
Let’s start by understanding where DataOps falls in the line-up of current IT methodologies. DataOps is the next level up from ETL (extract, transform, and load) and MDM (master data management systems) in terms of organizing data and processes. It can also be thought of as a methodology that combines DevOps and Agile within the field of data science.Read more
The hotel industry hasn’t changed much in the past decades. While they have introduced some level of digitization such as websites and apps, they haven’t fully embraced digital transformation. Indeed, if things are working fine, why change? Because the next unforeseen disruptor may be right around the corner.Read more
The term “DataOps” has picked up momentum and is quickly becoming the new buzz word. But we want it to be more than just a buzz word for your company, after reading this article you will have the knowledge to leverage the best of DataOps for your organization.Read more
Unstructured text is found in many, if not all business functions, and can become a source of valuable insight. Product reviews will guide your customers’ preferences, customer support chats can identifyRead more
Disclaimer: We have not spoken to a WeWork executive and have no further background information. This is merely a thought experiment to exemplify what digital transformation is about.Read more
In part one of this series, we defined data science and explored the role of a data scientist — including data preparation, modeling, visualization, and discovery. We also introduced the role of a machine learning engineer who closely collaborates with the data scientist.Read more
Big data continues to grow exponentially creating a critical need for solutions that can make sense and extract valuable information from it. For example, the Internet is full of a wide variety of constantly growing text sources— blog posts, forum posts, chats, message boards, item and services reviews, etc.Read more
Kubernetes, the de facto container orchestrator, is great and should be part of any DevOps toolkit. But, just as any other open source technology, it’s not a full-fletched ready-to-use platform.Read more
With the increasing popularity of machine learning (ML), it’s becoming more difficult for data scientists to find the appropriate tools for a specific task and decide on a robust approach. Should they stick to the basics and code everything from scratch or use one of the many pre-built tools that keep popping up on the market?Read more
Blue-green deployments and canary releases mitigate application deployment risk by enabling IT to revert back to the previous version should an issue occur during the release. Switching back and forth between versionsRead more
For those who were still debating whether they should hop on the digital transformation bandwagon, the COVID-19 crisis was a wakeup call, maybe even a slap in the face.Read more
The entire business world is talking about digital transformation. IT leaders, on the other hand, talk about DevOps, cloud native, Kuberentes and containers.Read more
If your organization leverages technology as a differentiator, a DevOps approach to application and service delivery is inevitable. The benefits are just too great.Read more
Digital transformation is one of today’s biggest buzzwords. Everyone is talking about it; everyone wants it. We all know the role technology is playing in enabling businesses to innovate at an unprecedented pace.Read more
The data on big data indicates that up to 60% of analytics projects fail or are abandoned, costing companies an average of $12.5 million. That’s not the result we seek from data lakes. Instead, companies are increasingly finding themselves mired in data swamps that are overfilled and too muddy to offer any useful visibility. Or are they?Read more
We collect data at a mind-boggling pace. In fact, as companies, we’re hoarding it. But what good is data if it can’t speak to us? Fortunately, data complexity can be broken down through design and visualization – the charts, graphs and plots that show trends, outliers and opportunities.Read more
As a company and as a team, our lives at EastBanc Technologies have always been about tackling the biggest problems for the biggest organizations.Read more
Artificial intelligence (AI) surrounds us. It unlocks our phones, creates our shopping list, navigates our commute, and cleans spam from our email. It’s making customers’ lives easier and more convenient.Read more
Nearly every week there’s something new in our industry. The pace of technology is unprecedented, the role of IT is booming, and innovation is part of our DNA.Read more
Technology is accelerating at such a rate that it permeates all industries. In fact, software is the only industry that cuts horizontally across all verticals.Read more
Innovation is a critical part of business. While prioritizing production in general makes sense, the best approaches make innovation a component of the whole production process.Read more
We recently sat down with a large pharmaceutical company to discuss their data analytics projects. What we heard wasn’t a surprise. Three of the four large analytics efforts they undertook last year had failed.Read more
AMS Group is a cohesive group of established companies that provide technology and security equipment to aerospace, defense, and security markets.Read more
A European market leader in online survey and feedback software acquired complementary companies in different Wester European countries, each of which had its own survey platform.Read more
Everyone loves their own data. Collecting it. Analyzing it. Drawing conclusions from it. But often, when you allow departments or business units within your organization to gather their own data, that data isn’t shared.Read more
Gartner predicts that through 2017 60% of big data projects will fail to go beyond piloting and experimentation and ultimately will be abandoned.Read more
Organizations generally understand the power behind analytics, but how do you make it work culturally and technically? We take a look at the barriers to data analytics success and suggest new approaches that buck the system, with dramatic results.Read more
And how to make your next data analytics project succeed?Read more
Container use is exploding right now. Developers love them and enterprises are embracing them at an unprecedented rate.Read more
If you’re making the move to containers, you’ll need a container management platform. And, if you’re reading this article, chances are you’re considering the benefits of Kubernetes.Read more
Wouldn’t it be nice to reach artificial intelligence (AI) nirvana? To have a system that provides real-time, context-aware decisions.Read more
Today’s IT environment is moving and evolving at an unprecedented pace. So, all of a sudden, your 5-year old software infrastructure can look more like it’s 50. To get your software current – and stay there – requires flexibility. Moving to containers does just that. There’s been lots of talk about containers over the past few years – so why aren’t you on the bandwagon yet?Read more
Under pressure to deliver applications faster and ensure 24/7 runtime, organizations are increasingly turning to DevOps methodologies to deliver applications quicker and in an automated fashion. But what tools should you have in your DevOps toolkit?Read more
Amazon Web Services (AWS), Azure, and Google Cloud Platform (GCP) are the public cloud market leaders, but how do you determine which of them best supports your enterprise's specific needs? For most enterprises, and for the foreseeable future, it’s going to be a multiple answer question.Read more
As the dominant movie rental service in the 90s and early 2000s, Blockbuster was the market leader, seemingly indefatigable. Until the great disruptor, Netflix, hit the scene.Read more
Big Data. Everyone’s paying for it, collecting it, and talking about it, but what are companies actually doing with it?Read more
The API management market is a hot one. As more organizations make investments in mobile, IoT, and big data, APIs are a core of their digital strategy.Read more
Big data is everywhere. Organizations are being advised to hoard it and do everything they can to derive actionable insights. This article will argue that this approach puts the cart before the horse.Read more
Let’s face it. Organizations struggle with their legacy applications. Even when they still solve some of the business’ problems, they reach a point where they can no longer keep up with market and industry demands.Read more
Let’s flash back to 2000. You’ve survived Y2K and you’re building systems for CRM, inventory, logistics, or data. They’re all state-of-the-art, and get the job done, even if they don’t talk to each other.Read more
It’s a mobile app world, and we just live in it. But for those working on the “next big thing,” there’s a conundrum – everyone knows we should be building apps in HTML, but not every device out there runs it as smoothly as it should.Read more
In technology, everyone likes to talk about “future-proofing.” But even for the most cutting-edge tech, time always catches up.Read more
The future is here. No, we don’t have flying cars or robot butlers – yet – but it’s definitely a digital world.Read more
We’re excited to announce Microsoft Azure support for the Kubernetes auto scaling module, an open source system for automating deployment, scaling, and management of containerized applications.Read more
You can’t mention enterprise technologies today without getting into a discussion about the cloud. “Are you in the cloud yet?” Why jumping headlong into cloud computing may not be the necessary move for your business.Read more
In the mad rush to move to the cloud, some organizations put the proverbial cart in front of the horse. They’re just looking for the best hosting, the preferred provider, or whatever the rest of the industry is using.Read more
2016 saw momentum in many areas – DevOps, cloud technologies, and big data- at the thrust of innovation. So, what tech predictions will define 2017?Read more
Every month, week, or day, it seems there’s buzz about yet another solution or service that will revolutionize your industry – or more simply, make your life easier.Read more
Apps. Sensors. They’re everywhere. Your phone, your car, your TV, even your refrigeratorRead more
In an increasingly commoditized market, learn how to cut through the noise and forge a cloud strategy that meets your needsRead more
Fleet management is a challenging business. This is particularly true of snow removal services where the dynamics on the ground can change fast and the pressures to perform put fleet supervisors to the test – in the toughest of conditions.Read more
Long before the first flakes fall from the sky many municipalities begin to prepare for the cold, icy, and snowy conditions that inevitably lie ahead.Read more
Fun fact: in 2014, cloud services were already a $45 billion business worldwide, and are expected to grow to $95 billion by 2017. Will you be part of that equation?Read more
Simple is good. Simple is clean. And whether I’m cooking or planning a trip, simple is always better, right? So why do so many companies make user experience (UX) so complex?Read more
Future-ready predictive analysis infrastructures hold the key to gaining insights from data today, and into tomorrow.Read more
Immersive and exciting, Virtual Reality is already part of our lives, whether it’s a plot device in a new sci-fi thriller or the best way to enjoy the latest video games or thrill rides.Read more
Now that smartphones are the most widely used tool for navigating important life activities (nearly two thirds of Americans own one), there’s pretty much an app for everything these days.Read more
If you’re tasked with choosing an API management system, Charles Dickens summed it up best: “It was the best of times, it was the worst of times.”Read more
DevOps: the panacea for all that’s wrong with enterprise IT. Where siloed teams who keep information close to their chest are replaced by agile, transparent relationships between developers and operations and fast and stable workflows that improve IT efficiency significantly and very visibly.Read more
As a technology company focused on complex project integrations that unify legacy systems as well as modular solutions that ensure lasting scalability, we work on a multitude of projects that involve custom software development; packaged, open source, and SaaS software integration; infrastructure setup; and production operations and maintenance.Read more
In an earlier blog we talked about why you need to integrate API management into your business strategyRead more
In a previous release of “What the Tech?” we discussed why you should integrate API management into your business strategy.Read more
Smart cars, smart homes, smart devices. The Internet of Things (IoT) is already transforming how we live. But very soon, the IoT will swiftly extend into the enterprise.Read more
Why you Need to Integrate API Management into your Business StrategyRead more
The promise of big data is, well, big! With terabytes of intelligence at their disposal, organizations can make faster, more accurate decisions, monitor trends, and even predict the future.Read more
Businesses accumulate data, create content, or possess unique business logic—each of which represents an untapped business opportunity. But how can organizations realize that opportunity?Read more
The Internet of Things (IoT) is much more than a consumer trend, it’s rapidly changing the way enterprises are using data to improve business decision-making.Read more
Content consumption is changing rapidly. With multiple channels and media formats, reaching target audiences is getting harder than ever.Read more
The way in which we consume content is changing rapidly and a few trends have emerged recently that we think will have a meaningful impact on media organizations this year and in years to come.Read more
Building a mobile app isn’t as simple as it used to be. With multiple devices to cater to, development teams must ask themselves a few questions:Read more