Web Application Architecture for Developing Dashboard for Large Dataset AWS

Author

Reads 1.2K

Man in White Dress Shirt Analyzing Data Displayed on Screen
Credit: pexels.com, Man in White Dress Shirt Analyzing Data Displayed on Screen

Developing a dashboard for a large dataset on AWS requires a robust web application architecture.

This architecture should be designed to handle high traffic and large data volumes, ensuring fast and reliable performance.

To achieve this, a microservices-based architecture is recommended, where each service is responsible for a specific task, such as data processing, storage, or visualization.

This approach allows for greater scalability and flexibility.

A service-oriented architecture (SOA) is also beneficial, as it enables the reuse of services across multiple applications, reducing development time and costs.

For example, using AWS Lambda functions for serverless computing can help reduce the load on the system and improve performance.

AWS provides a range of tools and services that can be used to build a scalable and efficient web application architecture, including Amazon S3 for data storage, Amazon DynamoDB for NoSQL database, and Amazon Redshift for data warehousing.

Understanding Architecture

Web application architecture is a framework that describes the interactions between different elements of a web application.

Credit: youtube.com, Everything You NEED to Know About WEB APP Architecture

It summarizes how data flows through the system, how it is processed, and how it is delivered to users.

Careful planning of the architecture is necessary to ensure scalability, performance, and maintainability, especially for dashboards dealing with large datasets.

The architecture must be designed to handle increased traffic and data growth without compromising user experience or system stability.

This involves identifying the different components of the application, such as front-end, back-end, and database, and determining how they interact with each other.

AWS Architecture

AWS Architecture is a crucial aspect of building a web application that can handle large datasets. The 3-tier architecture is a popular choice for scalability, availability, and security.

The 3-tier architecture separates the application into three layers: the Web/Presentation Tier, the Application Tier, and the Data Tier. Each tier has its own security group, allowing only necessary traffic to flow between them.

The Web/Presentation Tier houses the user-facing elements of the application, such as web servers and the interface/frontend. This tier is responsible for displaying data to the user.

Credit: youtube.com, AWS end to end Architecture for Web App, web services and database

The Application Tier handles the backend and application source code needed to process data and run functions. This tier is where the application logic is executed.

The Data Tier stores and manages the application data, often housing the databases.

Here's a breakdown of the 3-tier architecture:

To create a solid foundation for our 3-tier application architecture, we'll build a base network using AWS. This network consists of a VPC, public and private subnets, route tables, and an internet gateway.

Components and Setup

You'll need a solid foundation for your web application architecture to handle large datasets on AWS. This includes a data platform with the right components.

Ingestion is the first step, getting data into your platform is crucial. You'll need a reliable means of ingestion to handle the volume of data.

Storage is also essential, having a simple and secure way to store your data is vital. This will ensure your data is accessible and protected.

Credit: youtube.com, Build Data-Driven, High-Performance, Internet-Scale Applications with AWS Databases

Here are the key components you'll need in your data platform:

  1. Ingestion: a means of getting data into your platform
  2. Storage: having a simple and secure way to store your data
  3. Governance: an overview of which data you have and where to find it
  4. Transformation: transforming the data for your needs
  5. Analysis & Visualization: exploring your data, building reports and doing machine learning
  6. Orchestration: tying everything together in a streamlined workflow

Key Components

To build a solid data platform, you need to consider several key components. These include ingestion, storage, governance, transformation, analysis and visualization, and orchestration.

Ingestion is the process of getting data into your platform. This can be done through various means, but it's essential to have a reliable and efficient way to get data in.

Storage is another crucial component, where you need to have a simple and secure way to store your data. This will ensure that your data is safe and easily accessible.

Governance is about having an overview of which data you have and where to find it. This will help you manage your data more effectively and make informed decisions.

Transformation is the process of converting your data into a format that's suitable for your needs. This can be done through various tools and techniques.

Credit: youtube.com, Kubernetes Components explained! Pods, Services, Secrets, ConfigMap | Kubernetes Tutorial 14

Analysis and visualization are essential for exploring your data, building reports, and doing machine learning. This will help you gain valuable insights from your data.

Here are the key components of a data platform in a concise list:

  • Ingestion: getting data into your platform
  • Storage: storing your data in a simple and secure way
  • Governance: managing and overviewing your data
  • Transformation: converting your data into a suitable format
  • Analysis and Visualization: exploring and gaining insights from your data
  • Orchestration: tying everything together in a streamlined workflow

For the server-side, you'll need an application server and a database management system. The application server is responsible for processing requests, handling business logic, and interacting with databases. Favored frameworks include Node.js, Django, and Ruby on Rails.

For the database management system, you'll need to choose a suitable option that fits your needs. Relational databases like PostgreSQL and MySQL are good options, while NoSQL databases like MongoDB and Cassandra are better suited for large datasets and specific data storage and retrieval requirements.

In terms of orchestration, AWS Step Functions is a service that lets you build workflows consisting of multiple AWS services. This can be used to chain different Glue ETL Jobs and Lambda Functions together to set up an entire ETL flow for a single data source.

The Scenario

Credit: youtube.com, Component Scenario - React Guide | Rohan Prasad

You're a Dev Ops Engineer for a tech startup, tasked with planning and building the architecture for a new web app. You need to consider the scalability and reliability of the application.

The Product team wants to build a new web app, which means you'll be working closely with them to ensure the app meets their requirements. You'll also need to consider the infrastructure and resources required to support the app.

You're looking at a rapidly growing tech startup, so the app needs to be able to handle increasing traffic and user growth. This means you'll need to design the architecture with scalability in mind.

The startup is called Brainiac, and as a Dev Ops Engineer, you're responsible for ensuring the app runs smoothly and efficiently. You'll need to plan and build the architecture carefully to meet the startup's needs.

For more insights, see: New Relic Dashboard

Launch Template

In the context of the Brainiac tech startup, a launch template is a crucial component in setting up the architecture for the web app. You can create a launch template in the EC2 console under the 'Instances' sidebar menu.

Credit: youtube.com, Launch Template and Configuration? Difference between Launch Template and Configuration? And Process

To create a web server launch template, you'll need to specify the AMI, instance type, and key pair. For example, the 'brainiac-webServer' template uses Amazon Linux as the AMI and t2.micro as the instance type.

A key aspect of creating a launch template is defining the security group settings. For the 'brainiac-webServer' template, you'll need to create a new security group with inbound SSH, HTTP, and HTTPS rules.

Here's a brief comparison of the two launch templates created for the Brainiac web app:

You'll also need to create a security group with different settings for the 'brainiac-appServer-template' to ensure it's not accessible from the outside. This involves allowing ICMP-IPv4 from the brainiac-webServer-sg.

Load Balancer

The Load Balancer is a crucial component of our Brainiac application architecture. It's responsible for distributing incoming HTTP traffic to the proper targets, which in this case are our EC2 instances.

We'll need an Application Load Balancer (ALB) to route traffic from the Web Tier to the Application Tier. This ALB will be named 'brainiac-webServer-alb' and will be 'Internet-facing', allowing it to listen for HTTP/S requests.

For more insights, see: But of Web Traffic

Credit: youtube.com, What is a Load Balancer?

The ALB needs to 'listen' over HTTP on port 80 and route traffic to our EC2 instances through a target group. We'll also add a dynamic scaling policy to tell the Auto Scaling Group (ASG) when to scale up or down EC2 instances based on CPU usage.

Here's a summary of the desired ASG settings:

  • Desired capacity: 2
  • Minimum capacity: 2
  • Maximum capacity: 5

Once the ASG is fully initialized, we can access the website by going to the public DNS of the ALB.

Database and Storage

Our web application architecture needs a robust database to store and retrieve large datasets. We're using a Relational Database Service (RDS) with MySQL.

To ensure database security, we create a database security group that allows outbound and inbound MySQL requests to and from our app servers. This is crucial for data transfer between the Web Tier and users.

We also create a DB subnet group to ensure the database is created in the proper subnets. This helps maintain data consistency and availability.

Credit: youtube.com, Build a Big Data Analytics Pipeline Using Modern Data Architecture | Amazon Web Services

Here's a quick rundown of the key database components:

  • A database security group for secure data transfer
  • A DB subnet group for proper subnet creation
  • An RDS database with MySQL for data storage and retrieval

For our database, we'll use the 'Free tier' option, which is suitable for our purposes. However, if we were to use this database for production/dev environments, it's best practice to enable Multi-AZ deployment for higher availability.

Database Storage

Database Storage is a crucial part of any application, and for our Brainiac application, we're using a Relational Database Service (RDS) that runs on MySQL.

We need to create a database security group to allow outbound and inbound MySQL requests to and from our app servers. This is a necessary step to ensure our application can read and write to the database.

A DB subnet group is also required to ensure the database is created in the proper subnets. This is a critical configuration step.

We'll need to create an RDS database with MySQL, which will store important data such as user login info, session data, transactions, and application content.

Here are the key steps to configure database storage for our Brainiac application:

  1. A database security group that allows outbound and inbound MySQL requests to and from our app servers.
  2. A DB subnet group to ensure the database is created in the proper subnets.
  3. An RDS database with MySQL.

Create an RDS

Credit: youtube.com, AWS RDS MySQL Database Setup | Step by Step Tutorial

We're going to use a Relational Database Service (RDS) that uses MySQL.

To create an RDS database, we need to create a new database with a MySQL engine. This can be done under the RDS console and the 'Databases' sidebar menu.

A database security group that allows outbound and inbound MySQL requests to and from our app servers is necessary. This is achieved by creating a security group that allows inbound traffic from the application servers.

We'll need to add inbound AND outbound rules that allow MySQL requests to and from the application servers on port 3306. This is the same for the brainiac-appServer-sg.

For our purposes, we'll stick to the 'Free tier' option. However, if we were to use this database for production/dev environments, it's best practice to enable Multi-AZ deployment for higher availability.

We'll call this database, 'brainiac-webApp-db,' and create a master username and password. This will be used to log into our DB from the command line.

Here are the steps to create an RDS database:

  1. Create a new database with a MySQL engine.
  2. Select the 'Free tier' option.
  3. Create a master username and password.
  4. Call the database 'brainiac-webApp-db.'
  5. Select the DB subnet group we created earlier.
  6. Leave the defaults for everything else and create the database.

Catalog

Credit: youtube.com, What is Data Catalog?

Cataloging your data is a crucial step in creating a data platform. AWS Glue Data Catalog is used as a location for referencing your data.

To get this information in your catalog, you would need to run Glue Crawlers. These small, configurable applications can be created, scheduled, and run to take inventory of the data in your data store and save the data in metadata tables.

Glue Crawlers will create metadata tables with indexes to locations, schema information, and additional metrics of your data. This process helps you keep track of your data and its various attributes.

Platform Components

To build a robust web application architecture for developing a dashboard for large datasets on AWS, you'll need to consider the essential components of your data platform. A good starting point is to have a clear understanding of the core functionalities required to manage and analyze your data.

Ingestion is the first step, allowing you to get data into your platform. Storage is also crucial, providing a simple and secure way to store your data. Governance gives you an overview of which data you have and where to find it.

Here are the key components of a data platform you'll need to consider:

  • Ingestion
  • Storage
  • Governance
  • Transformation
  • Analysis & Visualization
  • Orchestration

Platform Components

Credit: youtube.com, Episode 1. Platform components

Building a solid data platform is crucial for any organization, and it all starts with the right components.

Ingestion is the first step, allowing you to get data into your platform. This can be done through various means, such as APIs, file uploads, or even streaming data from sensors.

Storage is where your data will live, so it's essential to have a secure and reliable way to store it. This will also depend on the type of data you're working with and how often you need to access it.

Governance is about having an overview of which data you have and where to find it. This is crucial for data quality and compliance.

Transformation is where the magic happens, allowing you to change the format and structure of your data to suit your needs. This can be done through various tools and techniques, such as data cleaning, aggregation, and more.

Credit: youtube.com, Platform Components and Tools

Analysis and Visualization are where you get to explore your data, build reports, and even do machine learning. This is where the insights and discoveries happen, and it's essential to have the right tools and skills for the job.

Orchestration is the final piece of the puzzle, tying everything together in a streamlined workflow. This ensures that your data flows smoothly through the platform, from ingestion to analysis.

Business Intelligence

Business Intelligence is a crucial component of any data platform. It enables users to explore their data, build reports, and do machine learning.

Amazon QuickSight is a powerful tool for business intelligence. It provides unified business intelligence at hyperscale, empowering data-driven organizations to address diverse analytical needs from a single source of truth.

To get the most out of your data, you'll want to consider the following business intelligence scenarios: Exhibiting activity status of jobs to management and clientsShowcasing market position and revenue generated from various projectsSharing monthly reports from different departmentsForecasting data fields based on client requirements These scenarios highlight the importance of having a solid business intelligence component in your data platform.

A good business intelligence component should provide modern interactive dashboards, paginated reports, natural language queries, and embedded analytics. This will enable users to easily explore their data and make informed decisions.

Melba Kovacek

Writer

Melba Kovacek is a seasoned writer with a passion for shedding light on the complexities of modern technology. Her writing career spans a diverse range of topics, with a focus on exploring the intricacies of cloud services and their impact on users. With a keen eye for detail and a knack for simplifying complex concepts, Melba has established herself as a trusted voice in the tech journalism community.

Love What You Read? Stay Updated!

Join our community for insights, tips, and more.