Skip to content

This project is a proof-of-concept - which is a rewrite of my old college project - to demonstrate my skills as a DevOps Engineer before anything else after earning the Microsoft Certified: DevOps Engineer Expert certification

License

Notifications You must be signed in to change notification settings

ShaylenReddy42/Seelans-Tyres

Repository files navigation

Seelan's Tyres

Solution Build Status
Main Build Status
SeelansTyres-Frontends-HealthChecksUISolution Build Status
SeelansTyres-Frontends-MvcSolution Build Status
SeelansTyres-FunctionApps-SystemDegradedTogglerSolution Build Status
SeelansTyres-Gateways-WebBffSolution Build Status
SeelansTyres-Services-AddressServiceSolution Build Status
SeelansTyres-Services-IdentityServiceSolution Build Status
SeelansTyres-Services-OrderServiceSolution Build Status
SeelansTyres-Services-TyresServiceSolution Build Status

SonarCloud

What's the purpose of this project?

This project is a rewrite of my original college project which - compared to this - was very poorly written and insecure

Originally, it was written using PHP. This is written using C# and .NET 6 and 8

It's also rewritten to utilize my Azure and DevOps skills since I had earned Microsoft's Azure Certifications and needed a way to prove my skills with a project

View the AZ-400 that I prepared for and took here

As of right now, the solution is completed locally, and in Azure

Scroll down to the Demos section to see it in Azure

Initially I intended to make it cloud-native but I'd rather have it cloud-ready since "native" means it only runs in the cloud

The definition of "cloud-native" seems to be up for debate from what I've seen and it makes sense as to why it is one

NOTE: Since this project is a proof-of-concept, the payment system isn't integrated

NOTE: A Wiki is now available on how the solution is built, ensure to have a look at it 🥹

Architecture

Where it started

In the beginning, it was a distributed monolith with a frontend and backend API with a single database shared between both the projects

Where it is

The API has been broken down into microservices which then invited a backend-for-frontend to have a single point of entry into the microservices from the frontend

The solution now comprises of 10 runnable projects with 18 projects in total

Features

Website features

Security features

API features

Architecture features

Codebase / Build System features

Resources that helped me skill up to rewrite this project

Textbooks

Pluralsight

Paths

Individual courses

Whizlabs

YouTube

Channels

Videos

Docs, forums and articles

Required local setup to build and run

Build instructions

  • Ensure to set environment variables listed in the RequiredEnvironmentVariables.txt file

    • Press 🪟 and search for Edit environment variables for your account
    • When setting this for the first time, restart your computer
  • All build scripts are in the scripts folder

  • In order to build, I've provided four options for you:

    • build.cmd which is the regular build
    • build-with-docker.cmd to run with docker-compose
    • build-with-services.cmd which is the regular build + elasticsearch, kibana and rabbitmq orchestrated with docker-compose
    • Kubernetes:
      • All scripts for Kubernetes are in the scripts/kubernetes folder and should be run in order
        • 00-applied-once.cmd
          • Note: This adds the nginx ingress to the cluster from the original repo
        • 01-build-images.cmd
        • 02-deploy.cmd
        • 03-delete.cmd
  • NOTE: For Docker builds, run the pull-required-docker-images.cmd script beforehand

  • Once you run either build.cmd or build-with-services.cmd, CMake will generate run-all.cmd

  • Thereafter, run run-all.cmd which will start all applications minimized and launch the site, simulating orchestration

Demos

Setting up Kibana and demonstrating distributed tracing

Kibana Thumbnail

Solution in Azure

Azure Thumbnail

Setting up https locally

HTTPS Thumbnail