What are the components included in the architecture of an Enterprise Application?

Basil Skaria
5 min readJun 15, 2022

--

Before we start on the design and architecture we have to understand the type of client or the end user. To identify if the solution is built to solve B2B or B2C problems.

A B2C solution as the name suggest, addresses direct end user, a customer naïve to the business aspects. Example, Online Store by GoPro. They host a variety of products in action camera section. They do provide community updates, software/firmware info, provide customer support for the product, feedback, promotions and more. B2C basically provides entertainment, content. services or products for end users.

A B2B platform, would have the same features as a B2C, with more visibility into the business, and more specific to a business problem. Example, Shopify, is B2B platform providing services by serving eCommerce functionalities to growing businesses. The problem solved is the hassle of creating a platform from scratch when the business is yet to start off or have lower investments in resources to develop a eCommerce platform from ground up.

Since we have a basic idea of what B2B and B2C is… We need to consider some high level metrics to differentiate both.

Total User Volume: B2b would have lower volume than B2C. Cannot be quantified directly, but lets hypothetically say the userbase of B2B being less than 500K users and B2C to be orders of Millions. Observe a sale for Apple watches, look at how many are sold per second.

User Redundancy: B2B would have more users coming back than B2C. If a regular customer purchases a GoPro, they would take an year or more to get another one. But, A Shopify service is monitored, maintained and used day to day by the businesses for reporting and other processes.

Response Time: Performance is a pinnacle to all the internet based solutions. B2C requires higher pace than B2B. Release a new movie to Netflix, thousands would be watching them at the same exact time at release. While let’s say a cloud provider, while setting up CDN, would take some amount of time to deploy the new endpoint to all the Points of Presence, the client would accept the delay in the service understanding the functionality behind it.

User Experience: People like fast fluidic application, but more importantly one that shares the most information. A business might want the functionality to be right than the bogus presentation with flying cards. As a customer, it would be amusing to see how they are entertained and spend more time in the application and probably make a purchase. Both requires details, but presentation varies.

These are few top metrics… there are way more to be discussed, which is out of context in today’s topic.

Considering the above, the following are the components in an Enterprise application:

Source: Internet

Database: To Create Read Update and Delete business and technical information. This could be a structured or unstructured storage depending on the data to be stored. If you need rigid tabular schema choose structured DBMS like SQL Server. If you have to store dynamic data, need easy querying and instant scalability, use unstructured DBMS. There are trade-offs for both.

Admin Application Server: A portal plus server which provides all the services to the administrator in reporting and managing the platform features and configuration. Server that processes User requests from middleware, executes Background jobs, integrate with third party systems for Loyalty program, Payment service, Inventory management system, Email and SMS provider etc. Hosting the show and connecting audience to the product or service.

End-User Application: Server rendered HTML, JavaScript application, React Application and so on… are client side applications allows businesses to reach the end user digitally. Netflix app on Play Store is an End-User Application. This is the view or digital experience given to the user. Impressions on the UI/UX would matter to retain customers more than performance at times.

Middleware Server: Client applications can be connected directly to Admin application, but if we need more configurability, Communication with various components and more control, a middleware is a standard approach.

Functional Modules: The Admin application would be a platform for many functionalities. While businesses need new features very frequently. A monolithic design would be trouble to all parties involved. Modular design allows simplicity of understanding, debugging and extensibility to add features without clogging up.

Cache: Performance is one of the metric we discussed. If the data requested changes less frequently, let’s cache it. Almost all the blobs can be cached at client side for reuse. API responses that changes less frequently can be cached for specific duration depending on business logic behind the request. This would reduce cost to server and reduce request count to server. Server side caching of API responses can be achieved by in-memory cache or third party cache service like Redis.

Application Gateway: Customers wouldn’t remember the IP address or hackers wouldn’t hesitate to perform DOS attacks on the server. Application Gateway provides rules to connect a Domain name to a server also providing application firewall to detect or prevent DOS.

Content Delivery Network: Beyond caching a request, we can have a safer network and improved performance through connected servers of the cloud provider to deliver content to end-users. Netflix, Uber, Ola name any product, all uses CDN to serve the request. This improves availability and improves response of the servers in various regions. It also caches the request response as configured, and store it at each Points of presence.

Data Warehouse: We migrated to digital because of volume of data (transactions) and higher variety of it. This can be used for good to understand the customer better, and provide services that they probably need by analyzing the available data. A warehouse allows to connect with Business intelligence tools.

Security service: Data Anonymization, Firewall, Login Providers, DOS prevention systems and Health checkers, system updates are few things to consider as a process to followed while development. This is a broad topic by itself. There are various ways to get into a server. Log4j was one such trending vulnerability.

Blob Storage: All the images, videos, letters, fonts can be stored in a blob storage for easy access and management.

There can be more or less components than these based on scale and requirement. These are few components as a standard approach. Design must focus on all aspects development, user experience, maintenance and support. This allows to gain more control on your solution.

If you feel I have missed something, please address the same in the comments. Welcoming suggestions from you guys, to improve drive this forwards better. Thanks for your time!

Follow for the next Idea “What are the components included in the architecture of an Enterprise Application? Part 2”.

If you haven’t already read the introduction, navigate here — > “Introduction to Enterprise Applications”.

--

--