An open API service indexing awesome lists of open source software.

https://github.com/madhurimarawat/cloud-computing

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.
https://github.com/madhurimarawat/cloud-computing

ci-cd-pipeline cloud-computing cloud-database cloud-functions cloud-instance cloud-load-balancer cloud-monitoring cloud-networking detailed-documentation docker flask identity-access-management lambda-functions localstack nginx postgresql s3-bucket serverless virtual-machine virtual-private-cloud

Last synced: 3 months ago
JSON representation

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.

Awesome Lists containing this project

README

          

# Cloud-Computing
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.




Repo Size



GitHub Stars



GitHub Forks



GitHub Issues


Closed Issues



Open Pull Requests


Closed Pull Requests



GitHub Discussions



GitHub Contributors



Top Language



License



Last Commit


Repository Age


Workflow Status



GitHub Watchers

---

## Tools and Technologies βš™οΈπŸ’»

### 1. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/)
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](https://docs.localstack.cloud/)
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](https://docs.docker.com/)
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](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
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](https://flask.palletsprojects.com/)
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](https://nginx.org/en/)
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](https://www.postgresql.org/)
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.

### 8. [GitHub Actions](https://github.com/features/actions)
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.

---

## Directory Structure πŸ“‚

- **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`

- **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`

- **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)

---

## Layout:

```
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.
.....
```

---

### Explanation of Folders:

- **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.

---

## Table Of Contents πŸ“” πŸ”– πŸ“‘

### 1. [Setting Up a Virtual Machine in a Cloud Environment](Experiment%201)

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.

### 2. [Deploying a Web Application on a Cloud Server](Experiment%202)

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.

### 3. [Working with Cloud Storage Services](Experiment%203)

This experiment sets up an AWS S3 bucket to upload, verify, and download data.
It demonstrates secure and scalable cloud storage management.

### 4. [Setting Up and Configuring Cloud Networking](Experiment%204)

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.

### 5. [Using Cloud Functions for Serverless Computing](Experiment%205)

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.

### 6. [Cloud Load Balancing and Auto Scaling](Experiment%206)
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)**.

### 7. [Cloud Databases and Data Management](Experiment%207)
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.

### 8. [Cloud Security: Identity and Access Management (IAM)](Experiment%208)
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.

### 9. [Implementing Cloud Monitoring and Logging](Experiment%209)
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.

### 10. [Setting Up Cloud-based CI/CD Pipeline](Experiment%2010)
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.

---

## Thanks for Visiting πŸ˜„

- Drop a 🌟 if you find this repository useful.


- If you have any doubts or suggestions, feel free to reach me.


πŸ“« How to reach me: Β  [![Linkedin Badge](https://img.shields.io/badge/-madhurima-blue?style=flat&logo=Linkedin&logoColor=white)](https://www.linkedin.com/in/madhurima-rawat/) Β  Β 
Mail IllustrationπŸ“«


- **Contribute and Discuss:** Feel free to open issues πŸ›, submit pull requests πŸ› οΈ, or start discussions πŸ’¬ to help improve this repository!