DEV Community

luismanuu
luismanuu

Posted on

DevOps Project Part 1: 3-tier Web Application

As promised, the next posts will be about a DevOps project that covers various aspects. From setting up a website architecture manually to incorporating DevOps tools, and eventually exploring cloud containers and infrastructure as code. It's an exciting opportunity for me to gain practical experience in building resilient and scalable systems. I look forward to sharing my progress and insights with you as I continue this journey.


Overview

Our solution comprises several key components:

Infrastructure: AWS
Webserver: Red Hat Enterprise Linux 8
Database Server: Ubuntu 20.04 with MySQL
Storage Server: Red Hat Enterprise Linux 8 with NFS
Programming Language: PHP
Code Repository: GitHub

3 tier Web architecture

To visualize the architecture, we follow a common pattern where multiple stateless web servers share a centralized database, and they access shared files through the Network File System (NFS). This setup allows our web servers to seamlessly serve the same files, as if they were locally stored, providing efficient and reliable file access across the infrastructure.


Follow the steps provided on documentation to implement this architecture on AWS:

GitHub logo luismanuu / DevOps-3TierWebApp

3 Tier Web Application DevOpsPBL

DevOps-3TierWebApp

DevOps PBL

Implement a solution that consists of following components:

1.Infrastructure: AWS

2.Webserver Linux: Red Hat Enterprise Linux 8

3.Database Server: Ubuntu 20.04 + MySQL

4.Storage Server: Red Hat Enterprise Linux 8 + NFS Server

5.Programming Language: PHP

6.Code Repository: GitHub




Important: Do not forget to STOP your EC2 instances after completion of the project to avoid extra costs. Also keep in mind instance DNS change after turning off.


Lessons learned (In my case):

-Understanding basic of AWS networking (subnets, private ips, Security groups inbound/outbound)

  • Creating partitions using **gdisk **utility.

  • Managing physical, logical and group volumes with pvcreate, vgcreate, lvcreate utilities.

  • Format logical volumes with **mkfs **utility.

  • Mount logical volumes in NFS server with mount *utility and make them persist by modifying */etc/fstab

  • Mount in web server directory and target to NFS server’s using mount utility

  • Installing and configuring a NFS server with nfs-utils


Next steps:

  • Adding Load Balancer
  • Implementing Jenkins as DevOps tool

Top comments (0)