Identifying enterprise application requirements (business and technical)
In the next few chapters, we will build a working e-commerce application. It will be a three-tier application consisting of a UI layer, a service layer, and a database. Let's look at the requirements for this e-commerce application.
The solution requirements are the capabilities to be implemented and made available in the product to solve a problem or achieve an objective.
The business requirements are simply the end customer's needs. In the IT world, "business" generally refers to "customers." These requirements are collected from various stakeholders and documented as a single source of truth for everyone's reference. This eventually becomes the backlog and scope of work to be completed.
The technical requirements are the technology aspects that a system should implement, such as reliability, availability, performance, and BCDR. These are also known as quality of service (QOS) requirements.
Let's break the typical business requirements for an e-commerce application site down into the following categories: Epic, Feature, and User Story.
The application's business requirements
The following screenshot from Azure DevOps shows a summary of the backlog for our business requirements. You can see the different features expected in our application along with the user stories:
The application's technical requirements
Having seen the business requirements, let's now go through the technical requirements:
- The e-commerce application should be highly available, that is, available for 99.99% of the time for any 24-hour period.
- The e-commerce application should be highly reliable, that is, reliable 99.99% of the time for any 24-hour period.
- The e-commerce application should be highly performant: 95% of the operations should take less than or equal to 3 seconds.
- The e-commerce application should be highly scalable: it should automatically scale up/down based on the varying load.
- The e-commerce application should have monitoring and alerts: an alert should be sent to a support engineer in the case of any system failure.
Here are the technical aspects identified for the e-commerce application and its requirements:
Frontend
- A web application (e-commerce) using ASP.NET 5.0
Core components
- Logging/caching/configuration in C# 9.0 and .NET 5.0
Middle tier
- An Azure API gateway to implement authentication
- A user management service through an ASP.NET 5.0 web API to add/remove users
- Product and pricing services through an ASP.NET 5.0 web API to get products from the data store
- A domain data service through an ASP.NET 5.0 web API to get the domain data, such as country data.
- A payment service through an ASP.NET 5.0 web API to complete payments
- An order processing service through an ASP.NET 5.0 web API to submit and search orders
- An invoice processing service through an ASP.NET 5.0 web API to generate invoices
- A notification service through an ASP.NET 5.0 web API to send notifications such as emails
Data tier
- A data access service through an ASP.NET 5.0 web API to talk to Azure Cosmos DB to read/write data
- Entity Framework Core to access data
Azure Stack
- Azure Cosmos DB as a backend data store
- Azure Service Bus for asynchronous message processing
- Azure App Service to host the web application and web APIs
- Azure Traffic Manager for high availability and responsiveness
- Azure Application Insights for diagnostics and telemetry
- Azure paired regions for better resiliency
- Azure resource groups to create Azure Resource Manager (ARM) templates and deploy to the Azure subscription
- Azure Pipelines for continuous integration and continuous deployment (CI/CD)
We are now done with the enterprise application requirements. Next, we will look at architecting an enterprise application.