Business value in software architecture and 3rd party services
Like many other industries, software development evolved technical jargon and buzzwords that confuse even technical people. Many different types of software architecture like Monolith, Micro Service, Micro Apps, Micro Frontends, Composable, Headless, PBCs, reusable and Service Oriented Architecture are no exception. Let’s look at software architecture from a non-technical perspective and highlight the elements that impact a business.
What is software architecture?
Software architecture is, simply, the organisation of a software system. Whatever we want to organise, the kids' room or books, we need to find some attribute by which we will put things into a particular arrangement or order. We can organise books by subject or alphabetically. We also probably want to separate Lego from teddy bears. More or less the same things software developers and software architects do with applications. They choose the right attribute by which the application will be split apart.
Software architectures, like many organisation patterns, are complementary. For example, we can first organise books by subject and then order them alphabetically within the subject. In software development, it’s also common to follow more than one architecture style simultaneously.
Where is the business value?
There is no magic. We need an experienced software developer or architect to choose the suitable architecture for our specific situation. Still, from a business perspective, we should encourage the technical teams to check if we can reuse existing 3rd party solutions on the market for our purposes rather than developing everything from scratch. So often, we don’t need to reinvent the wheel.
Let’s imagine that as a consultancy company, you want to develop an application that will allow your customers to subscribe to paid service and schedule meetings automatically with your consultants. However, price management, invoices, recurring payments, accounting reports, checkout process, subscription cancellation, automatic appointment scheduling and many other requirements can take months for a team of software developers if they decide to write it from scratch. But, if we integrate wisely existing services on the market, for example, by using Chargebee for subscription management and Calendly for appointment scheduling, we can cover most of the requirements out of the box and reduce software development to a thin, custom integration layer between Chargebee and Calendly. As a result, we can cut more than half of the required expensive custom software development and reduce implementation time. Additional costs? Third-party services will cost you less than €300 monthly.
Your question should be, what’s the name of the architectural style where we reuse 3rd party services to speed up software development? All of them except the monolithic architecture. Most of these styles describe how to split applications apart, not if we will write particular parts from scratch or use existing 3rd party solutions.
The most business value is in the architecture that will enable to use of existing solutions from the market rather than developing custom solutions in house.
Challenges
There is no silver bullet. Using 3rd party services is challenging in many ways. Software developers tend to focus on what they were trained for: writing the code rather than composing external services to achieve business goals. Therefore, it’s challenging to find software developers who have experience composing 3rd party services. Furthermore, we also can change 3rd party services behaviour only in a way predicted by the author, so we need to be ready for some requirements compromises. Finally, using 3rd party services requires special attention from a legal perspective. For example, EU regulations, such as GDPR, require us to sign a Data Processing Agreement with all 3rd party service providers with which we share personal data.
Summary
Composing applications by integrating 3rd party tools is not a future, but It’s something that many small and large companies have successfully practised for years to speed up software development. Therefore, combining existing solutions on the market with our application makes sense, especially in fast-growing organisations where speed of implementation and collecting feedback is more important than fulfilling exact and detailed requirements.