This repository focuses on cloud computing and demonstrates how to set up virtual machines, S3, and other services using LocalStack. It provides a comprehensive guide to simulating AWS services locally for development and testing purposes.
1. AWS CLI
AWS Command Line Interface (CLI) is a powerful tool that allows users to interact with AWS services directly from the terminal. It simplifies managing cloud resources by providing commands for a wide range of AWS services, enabling tasks such as provisioning, managing, and automating workflows with ease.
2. LocalStack
LocalStack is a fully functional, local testing environment for AWS services. It enables developers to simulate AWS services on their local machines, facilitating the development and testing of cloud-based applications without needing access to an actual AWS account.
3. Docker
Docker is a containerization platform that allows developers to build, share, and run applications in isolated environments called containers. It ensures consistent environments across development, testing, and production by packaging the application and its dependencies together.
4. Boto3
Boto3 is the official AWS SDK for Python, enabling developers to interact with AWS services programmatically. It provides a high-level, easy-to-use interface for managing AWS resources like S3, EC2, DynamoDB, and more.
5. Flask
Flask is a lightweight and flexible Python web framework designed for building web applications and APIs. It follows a minimalistic approach, providing essential tools while allowing developers to add extensions as needed.
6. Nginx
Nginx is a high-performance, open-source web server and reverse proxy server. Itβs designed for serving static content, load balancing, and handling high concurrency with minimal resource consumption. Nginx is widely used for improving web server scalability and security.
7. PostgreSQL
PostgreSQL is a powerful, open-source relational database management system (RDBMS). Known for its reliability, scalability, and support for advanced data types and performance optimization features, PostgreSQL is widely used for complex applications requiring robust data integrity.
GitHub Actions is a powerful CI/CD (Continuous Integration and Continuous Deployment) tool integrated into GitHub. It allows developers to automate workflows directly in their repositories, enabling tasks such as testing, building, and deploying applications seamlessly.
-
Codes π» (If applicable)
Contains code files used for the data processing and analysis in each experiment. These files are critical for performing the tasks required in the experiment.- e.g.,
main.py
,process_data.py
- e.g.,
-
Documentation π
This folder contains detailed documentation for each experiment, including methodology, analysis, and insights. Documentation is provided in both Markdown (.md
) and PDF formats for easy reference.documentation.md
(Markdown version of the documentation)documentation.pdf
(PDF version of the documentation)
-
Dataset π (If applicable)
Contains the datasets used for analysis in each experiment. Datasets are placed here to ensure easy access and organization.- e.g.,
data.csv
,stream_data.json
- e.g.,
-
Output π
Stores the output generated from each experiment, including visualizations, data analysis results, and any other relevant outputs.Experiment X Output
(where "X" refers to the relevant experiment number)
Cloud-Computing/
β
βββ Experiment 1/
β βββ Documentation/ π
| β βββ Explanation of methods and key observations from Experiment 1.
β βββ Output/ π
β β βββ Contains the results and analysis of Experiment 1.
βββ Experiment 2/
β βββ Codes/ π»
β β βββ Contains the web app code in flask and docker files.
β βββ Documentation/ π
β β βββ Detailed documentation explaining the methodology and analysis for Experiment 2.
β βββ Output/ π
β β βββ Contains the results and analysis of Experiment 2.
.....
-
Codes Folder (π»):
This folder contains the source code for the experiment. It includes all the necessary code files, scripts, and programs required to run the experiment. Additionally, it holds detailed explanations of the command prompt inputs and outputs:- Command Prompt Input and Output Explanation (MD & PDF): Provides an explanation of the inputs and outputs for all commands used in the experiment.
- Command Prompt Input and Output Logs (TXT): Contains the actual input commands and their corresponding outputs in text format for reference.
-
Dataset Folder (π):
This folder stores the dataset used in an experiment. If a dataset is involved (like a.csv
,.json
, or any data file), it will be placed here. -
Output Folder (π):
Stores the outputs/results generated by the experiments. This might include processed data, logs, or result files. Each experimentβs output is stored separately with a relevant name. -
Documentation Folder (π):
Contains the documentation of each experiment, provided in both.md
and.pdf
formats. The Markdown file is converted to PDF using the provided link for Markdown to PDF conversion. -
Commands File (π):
A text file documenting the specific commands or steps used in the experiment, especially useful for command-line operations.
In this experiment, students will learn to understand the basics of cloud computing by setting up and configuring a virtual machine on a cloud platform such as AWS, Google Cloud, or Microsoft Azure or localstack.
This experiment enables students to deploy a basic web application on a cloud server using services like AWS EC2, where they will practice deploying applications on the cloud infrastructure.
This experiment sets up an AWS S3 bucket to upload, verify, and download data. It demonstrates secure and scalable cloud storage management.
This experiment focuses on configuring and managing cloud networking services, such as creating Virtual Private Clouds (VPCs) and subnets. It involves using cloud platforms like AWS, Google Cloud, or Azure to set up and manage cloud networking environments.
In this experiment AWS Lambda deployment, execution, and testing are done using AWS CLI and LocalStack. The runtime image is pulled from Amazon ECR via Docker. This simulates a serverless environment for function invocation and validation.
This experiment demonstrates the configuration of cloud load balancing and auto-scaling to handle varying traffic loads efficiently. A Flask application is deployed to simulate load balancing scenarios in the absence of Nginx and AWS Elastic Load Balancing (ELB).
This experiment focuses on the deployment and management of cloud-based relational databases. PostgreSQL is containerized using Docker to simulate a cloud database environment. The setup covers database creation, management, and basic operations, demonstrating how to ensure data persistence and scalability in a cloud infrastructure.
This experiment involves configuring cloud security through Identity and Access Management (IAM). AWS CLI is used to create and manage users, roles, and policies within AWS IAM. Docker is utilized to simulate isolated testing environments for validating IAM configurations and enforcing access controls on cloud resources.
This experiment focuses on monitoring and logging in a cloud environment. AWS CloudWatch, accessed via AWS CLI, is configured to collect metrics, set up alarms, and analyze logs. The monitoring system tracks resource utilization and application performance, providing insights for maintaining system reliability and troubleshooting.
This experiment covers the setup of a cloud-based Continuous Integration and Continuous Deployment (CI/CD) pipeline. GitHub Actions is used to automate the processes of testing, building, and deploying applications. The CI/CD workflow integrates with cloud services, ensuring efficient, consistent, and reliable software delivery pipelines.
- Drop a π if you find this repository useful.
- If you have any doubts or suggestions, feel free to reach me.
π« How to reach me: ΒΒ Β
- Contribute and Discuss: Feel free to open issues π, submit pull requests π οΈ, or start discussions π¬ to help improve this repository!