Research and Analysis
Research and Analysis
Research
Architecture in Monoliths:
An application is built, deployed, and managed as a single unit in a monolithic architecture. The
user interface, business logic, and data access layer are examples of closely interconnected
components.
The ability to scale It is possible to grow monolithic designs vertically by increasing the server's
hardware resources, which is where the application is located. However, because of the close
interdependence of components, horizontal scaling—that is, adding more servers—can be
difficult. It can be inefficient to run numerous instances of the entire application when using
horizontal scaling.
Suitability: Smaller applications with steady user populations and predictable traffic are typically
better suited for monolithic systems.
Architecture of Microservices:
An application can be divided into smaller, independent services, each handling a single task,
using the microservices design. Through APIs, these services can interact with one another.
Scalability considerations: Microservices provide the autonomous scalability of every service
according to its unique needs. This makes it possible to use resources more effectively than with
monolithic designs. High demand services can be horizontally scaled without compromising
other services.
Suitability: Large, complex applications with a wide range of functionalities and varied
scalability needs are a good fit for microservices architectures. They encourage fault separation,
scalability, and agility.
Architecture of Serverless:
The cloud provider dynamically controls the provisioning and allocation of servers in a
serverless architecture. Developers don't bother about server maintenance; instead, they
concentrate on writing code.
The ability to scale Take into account that serverless systems adjust automatically to demand.
They are able to efficiently manage abrupt increases in traffic since the cloud provider
transparently manages resources. However, the restrictions put in place by the cloud provider can
prevent scaling.
Suitability: Applications that are extremely scalable, event-driven, and have erratic traffic
Page |2
patterns can benefit from serverless architectures. They may be reasonably priced, particularly
for applications with irregular use.
Alternative Designs:
Containerized Architectures applications can be packaged and deployed in a lightweight and
portable manner with the help of containerization, which makes use of technologies like Docker
and Kubernetes. Containers provide flexibility in managing dependencies and resources and
allow for horizontal scaling.
Analysis
The best option for a Customer Information Management web application will be Microservices
Architecture, it is decided after a thorough analysis of various software architectures. This is
because it can manage traffic with various aspects of Customer Management such as registration,
billing, request for services, making complain etc. The service will function without difficulty
during periods of high customer traffic and won't interfere with other services.
Architecture Design
Modules
1. User Service:
Responsibilities:
2. Billing Service:
Responsibilities:
Responsibilities:
Responsibilities:
Architectural Considerations
Load Balancing
Use a load balancer to distribute incoming requests among microservices
instances.
Implement auto-scaling to adjust the number of instances based on
demand.
Caching Mechanisms
Employ caching for frequently accessed data to improve performance.
Each microservice can have its own caching layer for data it frequently
accesses.
Data Storage
Use separate databases for each microservice to ensure loose coupling.
Choose databases based on the specific needs of each service.
For example:
User Service: SQL or NoSQL database for user profiles.
Billing Service: Database optimized for financial transaction
Complaint Management Service: Database for storing complaint
details.
Page |5
Interaction Flow
1. User Registration and Authentication:
User sends registration/authentication requests to the User Service.
User Service verifies credentials and creates/returns authentication
tokens.
2. Billing Operations:
User or other services send billing requests to the Billing Service.
Billing Service processes payments or generates invoices and updates
the billing information.
3. Service Requests:
Users submit service requests through the Service Request Service.
Service Request Service schedules the requested services and updates
the status.
4. Complaint Management:
Users submit complaints through the Complaint Management Service.
Complaint Management Service tracks the complaints, assigns them
for resolution, and updates their status.
Page |6
Technology Selection
Python is one of the most often used languages for creating microservices because of its
readability and simplicity. Java is a great language to choose if you want performance and
scalability at the same time. The construction of this architecture will be done using these two
programming languages.
Frameworks:
Django is a Python framework that is perfect for constructing architecture since it is incredibly
lightweight and adaptable. It also offers simple-to-use APIs.
Databases:
MySQL is the greatest option for storing all the important data, including user and product
details, because of its dependability and systematic sorting.
Cloud Services:
Amazon Web Service (AWS) and Google Cloud Platform (GCP) are highly well-liked for
serverless computing and for offering scalability and dependability among a variety of cloud
services.
Documentation
Provider
-Username
-Password
Manage users()
Login/logout()
Update_profile()
Cashier
-Username
-Password
+Title
Login/logout()
Update_profile()
Send Bills()
Accept Bills()
Page |8
Manage users
Login/log out
Provider
Update Profile
Accept Make
Complaint Complaint
Line Man
Request services Consumer
Delivery services
Cashier Accept
Bill Pay Bill
Apply for
Send Bill meter
Summarize Documentation:
The module consists of four modules: User Service, Billing Service, Service Request Service, and
Complaint Management Service. Each module handles user registration, authentication, billing
operations, service requests, and complaints. The architecture considers load balancing,
caching mechanisms, data storage, and communication between components. The User Service
Page |9
handles user registration and authentication, while the Billing Service processes payments and
generates invoices. The Service Request Service handles customer requests for services,
manages service availability and scheduling, and may integrate with external systems. The
Complaint Management Service manages customer complaints and feedback, and may
integrate with external systems. The module also includes asynchronous messaging for inter-
service communication and message queues or event-driven architectures for reliable
communication.
Reference:
Scalable Architecture: A Definition and How-To Guide:
https://www.sentinelone.com/blog/scalable-architecture/