|
1 | 1 | Overview
|
2 | 2 | --------
|
3 | 3 |
|
4 |
| -An end-to-end DevOps solution designed to deploy a Django web application securely and efficiently, integrating technologies such as Django (with CRUD operations, authentication, and permissions) [Django Web Appliation](README.md), PostgreSQL database management, Nginx as a reverse proxy web server, Gunicorn application server, UFW firewall for network security, Ubuntu LTS on a Linux virtual machine for isolated deployment, Logical Volume Management (LVM) for scalable storage, automated backups for disaster recovery, Netdata for real-time monitoring, and automated CI/CD pipelines built with GitHub Actions, with a customized GitHub Workflow, see [GitHub Workflow](Git_Strategies.md) supporting GitFlow and trunk-based strategies. |
| 4 | +An end-to-end DevOps solution designed to deploy a Django web application securely and efficiently, integrating technologies such as Django (with CRUD operations, authentication, and permissions) [Django Web Appliation](DJANGO-WEBAPP.md), PostgreSQL database management, Nginx as a reverse proxy web server, Gunicorn application server, UFW firewall for network security, Ubuntu LTS on a Linux virtual machine for isolated deployment, Logical Volume Management (LVM) for scalable storage, automated backups for disaster recovery, Netdata for real-time monitoring, and automated CI/CD pipelines built with GitHub Actions, with a customized GitHub Workflow, see [GitHub Workflow](Git_Strategies.md) supporting GitFlow and trunk-based strategies. |
5 | 5 |
|
6 | 6 |
|
7 | 7 | Table of Contents
|
@@ -38,59 +38,67 @@ Components
|
38 | 38 |
|
39 | 39 | ### 1. Virtual Machine
|
40 | 40 |
|
41 |
| -- **Purpose**: |
42 |
| - The virtual machine is the base of the infrastructure. It provides an isolated and secure environment to host the web application, database, and supporting tools. It ensures efficiency in resource management, scalability, and reliability for the production environment. |
| 41 | +- **Purpose**: |
| 42 | +The virtual machine is the base of the infrastructure. It provides an isolated and secure |
| 43 | +environment to host the web application, database and the other supporting tools. It |
| 44 | +ensures efficiency in the resource management, scalability, and reliability for the production |
| 45 | +environment. |
43 | 46 |
|
44 |
| -- **Role in the architecture**: |
45 |
| - Hosts the Linux environment (Ubuntu LTS) required to safely run all project components. It guarantees system independence, minimizing external interference, and ensures consistent performance. This setup also simplifies future migration to cloud platforms. |
| 47 | +- **Role in the architecture**: |
| 48 | +It is in charge of providing the Linux environment, Ubuntu LTS, to run all the components |
| 49 | +safely and efficiently. It ensures that the system is independent from other environments, so |
| 50 | +external interference is minimized. It allocates the CPU, memory and disk resources to |
| 51 | +provide consistent performance for the rest of the components, and also gives easiness to a |
| 52 | +future migration to a cloud platform without significant amounts of reconfiguration. |
46 | 53 |
|
47 | 54 | ### 2. Nginx Web Server
|
48 | 55 |
|
49 | 56 | - **Purpose**:
|
50 | 57 | Lightweight, high-performance web server and reverse proxy responsible for handling incoming HTTP/HTTPS requests and routing them to the Django application.
|
51 | 58 |
|
52 | 59 | - **Role in the architecture**:
|
53 |
| - Acts as a reverse proxy, forwarding client requests to the Django application, serving static files, and securing connections by enabling TLS encryption, protecting user requests against interception or modification. |
| 60 | + Acts as a reverse proxy, forwarding client requests to the Django application, serving static files, and securing connections by enabling TLS encryption, protecting user requests against interception or modification by encrypting the traffic. |
54 | 61 |
|
55 | 62 | ### 3. Django Web Application
|
56 | 63 |
|
57 | 64 | - **Purpose**:
|
58 | 65 | The Django web application is the core of the project, responsible for providing CRUD management functionalities for the videogames catalog.
|
59 | 66 |
|
60 | 67 | - **Role in the architecture**:
|
61 |
| - Handles user interactions, manages business logic, and communicates with the PostgreSQL database to retrieve and store data. It runs on a dedicated logical volume (`django_volume`) for improved isolation and simplified storage management. |
| 68 | + Handles user interactions as well as business logic, and communicates with the PostgreSQ database to retrieve the stored data, it runs on a dedicated django_volume for isolation and better storage management. |
62 | 69 |
|
63 | 70 | ### 4. PostgreSQL Database
|
64 | 71 |
|
65 | 72 | - **Purpose**:
|
66 | 73 | Stores all the videogame data managed by the web application.
|
67 | 74 |
|
68 | 75 | - **Role in the architecture**:
|
69 |
| - Manages and stores videogame data such as titles, genres, release dates, and descriptions. It utilizes a dedicated logical volume (`pg_volume`) to separate data storage from other system files, improving security and performance. |
| 76 | + Manages and stores videogame data such as titles, genres, release dates, and descriptions. It utilizes a dedicated logical volume volume to separate data storage from other system files, improving security and performance. |
70 | 77 |
|
71 | 78 | ### 5. Automated Backups
|
72 | 79 |
|
73 | 80 | - **Purpose**:
|
74 |
| - Ensures data integrity and allows quick recovery in the event of system failure or disasters. |
| 81 | + Automated backups are meant to ensure data integrity and recovery in case of disasters |
75 | 82 |
|
76 | 83 | - **Role in the architecture**:
|
77 |
| - Automatically performs regular backups of the PostgreSQL database and critical application files, storing these backups in a dedicated logical volume (`backup_volume`) to minimize downtime in case of data loss. |
| 84 | + Automatically performs regular backups of the PostgreSQL database and critical application files, storing these backups in a dedicated logical volume to minimize downtime in case of data loss. |
78 | 85 |
|
79 | 86 | ### 6. Monitoring (Netdata)
|
80 | 87 |
|
81 | 88 | - **Purpose**:
|
82 |
| - Tracks real-time system performance metrics such as memory usage, CPU load, and disk space utilization. |
| 89 | + Tracks system performance metrics such as memory usage, CPU load, and disk space. |
83 | 90 |
|
84 | 91 | - **Role in the architecture**:
|
85 | 92 | Detects potential issues like high resource usage early and alerts administrators, enabling proactive management to ensure ongoing system stability.
|
86 | 93 |
|
87 | 94 | ### 7. UFW Firewall
|
88 | 95 |
|
89 | 96 | - **Purpose**:
|
90 |
| - Secures the virtual machine by controlling incoming and outgoing network traffic. |
| 97 | + The Uncomplicated Firewall Network is used to secure the virtual machine by controlling the incoming and outgoing network traffic. |
| 98 | + |
91 | 99 |
|
92 | 100 | - **Role in the architecture**:
|
93 |
| - Ensures only essential network ports (SSH, HTTP, HTTPS) are accessible, preventing unauthorized access and protecting the application from external threats. |
| 101 | + Ensures only essential network ports SSH, HTTP are accessible, preventing unauthorized access and protecting the application from external threats. |
94 | 102 |
|
95 | 103 | ### 8. Logical Volume Management (LVM)
|
96 | 104 |
|
@@ -133,5 +141,5 @@ manual effort for backups is reduced and logical volumes also simplify the disk
|
133 | 141 |
|
134 | 142 | ## Implementation Guide
|
135 | 143 |
|
136 |
| -For the full implementation Guide see [Linux Environment Documentation PDF](Linux Environment Documentation.pdf) |
| 144 | +For the full implementation Guide see [Linux Environment Documentation PDF](Linux.pdf) |
137 | 145 |
|
0 commit comments