Building enterprise business applications in today’s digital world can be a big challenge. Businesses need to react to market changes, competitors, geopolitical volatility, and technology advancements quickly or be obsolete.
Many SMB organizations cannot afford to hire teams of developers to build applications from scratch and maintain these applications as their businesses change and evolve. Commercial off-the-shelf (COTS) applications are many times too bloated with extraneous functionality or they don’t align to how a company operates to gain a competitive advantage in the marketplace.
Scalable, extendible, and maintainable applications follow some key architectural design principles as defined below. Following these principles will help you build a great foundation.
Microsoft provides an excellent reference to the Clean Architecture here which does a great job walking through this approach and even providing example applications. This architecture provides a great baseline for custom development and how to utilize things like dependency inversion, and many of the other architectural principles to build enterprise applications but it is still all custom… We need ways to utilize this foundation but reduce the amount of code needed to build leveraging other complementary techniques.
A Hybrid Approach
Now the “Hybrid Application” approach I am talking about here extends this foundational “clean architecture” framework to leverage Low-Code / No-Code, API Management, and integration tools to provide a lower cost architecture that can greatly reduce the code that is required to build the application while providing more agility and speed to market. The goal is to focus your application on the core “business logic” instead of basic create-read-update-delete (CRUD) capabilities that are needed by most applications.
The following is a representative architecture diagram reflecting the approach I am advocating that combines the core “clean architecture” with Microsoft’s Power Apps / Dataverse, Microsoft API Management, Azure Active Directory, and appropriate integration tools to speed development and reduce cost of your application.
Identity Management – Leverage Microsoft Azure Active Directory (AAD) to manage internal and external identities for authentication and authorization. Remove the need to keep track of users’ passwords locally and allow external users the ability to connect with their own identities. Depending on if your application is B2B or B2C will drive how you integrate to this capability, and each provide some different capabilities. Key “wins” here are an enterprise identity platform, single sign-on (SSO), self-service signup processes, OAuth 2.0 authorization, and more.
Azure Front Door – Build, operate, scale out, and protect your dynamic web application and static content. Define, manage, and monitor your global routing for your web traffic by optimizing top-tier user performance and reliability.
Azure CDN – Offload static content to deliver static content faster to your customers and reduce http needs for your application.
ASP.NET Core Architecture – Implementation of Clean Architecture design approach as the core application foundation for your business logic and front-end for your customers. Flexibility to utilize any client framework like React, Angular, Blazor, or other integrated into the core MVC based backend architecture.
Administration – This is where a lot of the savings comes in around administration tables that are used by many applications. There may be a ton of standard CRUD tables that are needed to support the application or many applications where data is maintained internally by company resources. This could include tables like customers, contacts, products, locations, valid value tables, the list is endless. Leverage Microsoft’s Low-Code / No-Code enterprise Power Apps and Dataverse framework to build and maintain these administration tables. It provides the ability to quickly extend these tables across multiple applications and can many times reduce project build time by 50+% to not have to build these maintenance screens, security, etc. from scratch. All tables built will automatically provide web services to integrate to other systems.
Logic Apps – Microsoft’s Azure Logic Apps provide the ability to quickly build workflows reaching across applications (internal and external) for data integration, notifications, approvals, and more. Integrate to many first party applications like Microsoft 365, Salesforce, and hundreds of other applications. Some simple use cases include running a process when a file is uploaded, send email when a record is added to a table, send out daily status reports, etc.
API Management – Leveraging Microsoft’s Azure API Management can transform how customers can integrate with your organization and internally how applications can build loosely coupled integrations with each other under defined contracts for services provided by different systems. The example above shows how customers can browse an organization’s published APIs with their assigned subscriptions using the Developer Portal Microsoft provides with this service opening up multiple ways your customers can work with your organization simplifying integrations and creating extended relationships. The portal provides OpenAPI specifications, code samples, and ability to securely test your APIs.
Integrations – Writing custom code for integrating data in and out of your systems can take significant effort, especially when you think about the handling errors, retry logic, multiple protocols, encryption, etc. The suggestion here is to look at the many different integration tools in the market to optimize this process. Microsoft even has their Azure Data Factory and Logic Apps to accomplish these and build integrations to and from systems but there are many other solutions in the marketplace that organizations can take advantage of to automate these processes. One key approach here is to map to the API Management APIs instead of the database tables in these integrations, if possible, to remove the dependence on the implementation layer of your data platform.
My hope is the architecture defined in this article will help your organization to build scalable, extendible, and maintainable applications for your customers and reduce the costs of building and maintaining components that do not add competitive advantages, but are needed as a foundation for administration and integration.
Whether you need help getting started or building out your enterprise applications following this approach, we bring expertise across these technologies to help you achieve your business outcomes.