GithubHelp home page GithubHelp logo

choyiny / reliable_blog Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 2.0 2.48 MB

A simple blog stack to demonstrate Google's Site Reliability Engineering principles.

Home Page: https://deployingreliable.software/

TypeScript 28.62% HTML 7.25% JavaScript 3.92% Dockerfile 2.46% Ruby 43.73% Python 4.46% Shell 0.30% Jinja 6.40% SCSS 2.87%
site-reliability-engineering docker angular rails ansible elasticsearch elk-stack kibana monitoring kubernetes

reliable_blog's Introduction

Deploying Reliable Software

A CSCD94 - Computer Science Project with Professor Thierry Sans.

Introduction

An extension to the existing “Programming on the Web” course at the University of Toronto Scarborough. This research project aims to follow the two books by Google, Site Reliability Engineering and Site Reliability Workbook. There are two main objectives:

  • What is the Google way of deploying software used by millions of people?
  • How to maintain high availability while allowing for frequent software updates?

Services

Development Setup

Prerequisites: Docker and Docker Compose installed in your system.

  1. To start all servers in development mode, simply run
$ docker-compose up -d

Production

  • We use ansible scripts to push applications to our production servers hosted on Google Cloud. See ansible/README.md.

Technologies

We try to use a range of technologies in this demo. Here are the list of technologies used at some time in this project.

Deployment

"we want systems that are automatic, not just automated. In practice, scale and new features keep SREs on their toes."[1]

Application Stack

"To provide a model of how a service would hypothetically be deployed in the Google production environment"[2]

  • Ruby on Rails: Backend server REST framework
  • Angular 8: Frontend framework
  • PostgreSQL: Relational Database
  • nginx: Reverse proxying for applications (Kubernetes Ingress)

Packaging applications

  • Docker: Deploy applications cross-platform in a standardized environment

Monitoring Stack

"The four golden signals of monitoring are latency, traffic, errors, and saturation. If you can only measure four metrics of your user-facing system, focus on these four."[3]

Prometheus-based

  • Grafana: Dashboard to show statistics and alert if thresholds are exceeded.
  • Prometheus: A time series database to store data.
  • node_exporter: A companion for Prometheus to export server statistics.

Elasticsearch-based

  • Kibana: Dashboard to visualize data from Elasticsearch
  • Elasticsearch: Full text search engine to store log data
  • Elastic APM: Application performance monitoring server (*uses elastic-apm agent in Rails application)

Others

  • Sentry: An external service to track application errors.

reliable_blog's People

Contributors

choyiny avatar dependabot[bot] avatar liujordan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.