Modular Solutions

Santiago del Puerto
Feedzai Techblog
Published in
7 min readApr 15, 2020

Cars, computers, furniture and even restaurants are the best examples of modular productization.

Imagine an office furniture manufacturer that needs to deliver functional desks, walls, ceilings and doors suitable for multiple offices. Different companies’ have different functional requirements such as space and number of employees to accommodate, as well as non-functional requirements like lighting or Wi-Fi coverage. Of course, modular components are the first thing that comes to our mind to solve this problem — modules that can be rearranged to specific needs and produced in factories in a standard way.

The same happens in a restaurant, nobody tells the chef the way to cook the meal they want. On the other hand, is the chef who creates the dishes in advance, thinking of what the target customer segment would be delighted to eat. And then, it’s the customer who chooses from a menu how to combine the different dishes. By choosing an appetizer, main course, dessert and drink (the modules) he will create the dinner (the product) that best fits his requirements.

Modular productization quite often refers to traditional product manufacturing, but it can also be applied to software solutions. A fraud detection solution empowered by artificial intelligence, like what we’ve built at Feedzai, is not an exception. In an industry where different clients need customized products in order to achieve different combinations of functionalities, features or performance levels, modular solutions are key to building these products at scale.

Modularity also allows the creation of multiple “flavors” of a product portfolio in a more efficient way, and thus, tackles various customer segments or market needs by reusing and combining the modules in a variety of ways, while decreasing the costs of production and maintenance. At Feedzai, we have more than 20 modules, built and maintained by the Solutions Product team, in addition to the core products of the Feedzai platform. And this is how we create our solutions for Transaction Fraud, Account Opening and Anti-Money Laundering.

In software engineering, the module pattern is a design pattern used to implement the concept of software modules. Software modules are pieces of source code that can be organized into components grouped by responsibility, that contain everything necessary to perform a particular and well-defined function. These modules promote interoperability in different solutions in order to efficiently create all these “flavors” of the product portfolio.

Some of the benefits of a modular solution are:

🤓 Efficiency

It makes the development lifecycles more efficient. Engineering managers and system architects will only have to focus on how to interchange and connect the various modules, thus saving costs and efforts on development and reducing go-to-market times.

It also helps the company to manage development teams more effectively. At Feedzai, for each piece of code, we decide strategically which team is the best to develop it. Then that piece of code will contribute to multiple solutions. This means the teams are autonomous in implementing and maintaining each module in parallel while contributing to the overall product. For example, we develop API connectors to input transactional events (i.e. payments) for the Feedzai platform. Logically, a transaction fraud-dedicated team, who knows in detail the industry standards for payments, is the most proficient team to manage this development. After that, these API connectors will effectively process payments following industry best practices, and can be leveraged by multiple solutions, such as Transaction Fraud or Anti-Money Laundering.

Separation of responsibilities across teams improves efficiency, but also quality. One of the benefits of a modular architecture is that, by having a clear separation of responsibilities, it allows specialized teams to produce better quality components.

⚙ Maintainability

Modular programming promotes code readability, making it easier to apply changes or updates in the future. Focusing on small components, instead of having to deal with a bigger system, allows us to avoid a more extensive development lifecycle, minimizing deployments and bug fixing processes.

Also, whenever we fix a bug, all other solutions using the module will benefit from the same bugfix effortlessly. At the same time, it is easier for a team to distribute the development workload when using modules since this approach reduces conflicts and makes collaborative work in large solutions more productive.

🔗 Extensibility

Adding new functionalities can be as easy as adding a new puzzle piece. The most important aspect of this is that it can decrease the development time of new features without functionally affecting the other pieces of the solution.

💡 Simplicity

Modularizing the product makes us, product managers, focus on the big picture — which is the problem our customers are trying to solve by using our products — instead of focusing on intermediate functionalities that we need in order to achieve the goal. In a nutshell, this will make our product simpler and easier to understand for customers, sales people, and all stakeholders in general. Users hate unnecessary complexity that stands in the way of getting things done. Working with modules will help us to contextualize this complexity and make it visible only when needed, thus simplifying our products and delighting our users.

👯 Consistency

Reusing modules across the product portfolio can help to achieve a consistent interface and overall user and product experience. By promoting compatibility and integration across different solutions, we increase the value proposition of the entire product suite.

🤸‍♀ Flexibility

Having the flexibility to combine the modules in multiple ways, in order to achieve the clients’ requirements and meet their expectations smoothly, will bring the opportunity of higher value deals and target new customer segments.

🏎 Performance

Overall, we can’t ensure that modularity has a positive effect on the performance efficiency of a solution. However, it can help to benchmark the different components individually and detect inefficiencies and potential performance improvements into the different modules.

But how can you drive this vision of creating solutions in a modular way? Let’s take a look at a systematic method that we follow at Feedzai.

1 — Identify customer needs. A product is all about solving your customers’ problems. Hence, the main task of a product manager is to identify and clearly frame those customers’ problems. Product discoveries should drive this task, followed by strategic prioritization in order to identify which is the most relevant customer need to tackle next.

2 — Segment your customers. Being able to identify a taxonomy where you clearly classify your customer segments will help you to validate if the customer needs you are solving applies to multiple markets or verticals. This is a crucial step in order to present your product catalogue in a tailored way for each customer segment. At Feedzai, we build modular solutions in order to tackle the needs of our clients in different verticals, such as issuer banks, acquirers and merchants, while reusing some of the components across solutions with the appropriate customizations in place to suit their needs.

3 — Identify functions and solutions. Now that you know which are your customers’ problems and how these problems are presented across your customer segments, you can start thinking how to solve them. A modular mindset is key in this step to segregate functionalities into modules. First, think about the big picture, how would your customer use your solution to solve their problem. Then, it will be easier to start breaking down the components based on functionalities. For example, in a fraud prevention solution, we need the input of transactions, fraud detection rules, a machine learning model or more, and a UI interface to analyze cases — all these needs can be packed into reusable modules.

4 — Define variants and configurations. Sometimes, the UI layout that best fits the needs of an issuer bank does not work for an acquirer client. That’s fine, because modules can also be configured. You shouldn’t forget to delight your customers with a solution that solves their specific needs. That’s why, apart from reusing modules for more than one customer segment, you need to think of configuration points in order to define variants that your customers will love.

5 — Design modules. Now you have the solution’s components in your mind, it’s time to design the modules. In order to follow a modular architecture, it is very important that the codebase of the solution is also organized in the same way. Think of using design patterns, microservices architecture, and hiding large pieces of code behind well-defined APIs. System architects are typically comfortable while working with functions and modular architecture diagrams. But they often overlook customer values and product strategies. Regardless of the approach you decide to follow, the modules should be clearly defined based on functionalities that address a need.

It is important that your system architect, and the entire development team, have this mindset while writing the code. Separating configurations from actual code, writing API-centric code, separating the build and testing elements from the functional codebase — all these approaches will leverage the benefits of modular productization.

6 — Confirm feasibility and validate. The last step of the systematic method is to estimate and confirm with the team that the modular solution you are building is feasible and define the relevant go-to-market strategy. Early validations with your clients are useful to avoid misleading expectations. Last but not least, don’t forget to measure the impact of your work in order to know how successful your solution is. Net Promoter Score, as we do at Feedzai, it’s a great way to do this.

Building a solution in a modular way is a mindset that needs to be spread in the company’s culture. Communication and internal alignment are key aspects to drive this vision, and great documentation is a must to let everyone know the existing modules and their appropriate use.

It is crucial for a company to adopt this mindset in order to scale its product catalogue efficiently, while simultaneously delighting customers with a consistent product experience across the entire product offering.

--

--

Santiago del Puerto
Feedzai Techblog

Product Manager, Engineer, Triathlete. Born in Uruguay, living in Lisbon