Implementing Software Architecture of a Large-Scale System

A hands-on approach to Software Solution Architecture of large-scale systems using modern methods & open source products

4.57 (238 reviews)
Udemy
platform
English
language
Software Engineering
category
4,635
students
11.5 hours
content
Nov 2023
last update
$84.99
regular price

What you will learn

Understand through code, the architectural challenges of developing large-scale systems - Scalability, Reliability, Deployment, Observability

Code implementation of various tools and technologies used for making large-scale systems - Redis, RabbitMQ, Netflix, Fluentd, Elasticsearch, Kubernetes & more

Downloadable code along with configuration, scripts and instructions to run a mini system on your laptop and on a cloud environment

A practical demonstration of how systems are scaled and operated on both On-Premises environment and in Cloud environments

Description

The best way to learn software development is to write code. The best way to learn software architecture is to build and run a system. This is exactly what you are going to do as part of this course!

This course is the next in the series of Developer to Architect courses. The previous course 'Software Architecture & Technology of Large-Scale Systems' was focused on the concepts and principles of software architecture that govern modern large-scale systems.

This course 'Hands-On Implementation of Large-Scale Software Architecture', is focused on implementing those software and solution architecture principles in a mock large-scale system (mini system or simply minisys) by using open source technologies.

It starts with a downloadable code base of a mini system. We evolve this mini system into a full-fledged large-scale system implementation as we move along with the course. Our goal is to learn the typical architectural challenges that are faced by any large-scale system and solve these challenges using modern tools, technologies, and methods.

You can learn about these challenges and their solutions by actually working on a live system. For the same, you can download a mini system code-base provided by NewTechWays on Bitbucket or Github. You can follow the instructions to download, build and run this codebase. Although the instructions and code automation is platform-agnostic, this course will make use of Google Cloud Platform using a Linux machine as our test environment for building and running the system. Later we will put our system in a Production kind of environment using Kubernetes on Google Cloud Platform.   

As we move along with this course we will cover the following architectural challenges and use the following technologies as their solutions:

  • 3 Tier Application

    • Webapp – Python Django

    • RESTful Service – Java Spring Boot

    • Database – PostgreSQL & Cassandra

    • SPA - ReactJS

  • Containerization of System

    • Docker Containers

    • Docker Compose

  • Request Routing in Microservices

    • Discovery – Netflix Eureka

    • Gateway – Netflix Zuul

    • Client-Side Load Balancer – Ribbon

    • Server-Side Load Balancer - Nginx

  • System Observability

    • Logging – Elasticsearch, Fluent, Kibana

    • Tracing - Jaeger

    • Monitoring & Alerts – Prometheus

  • Large-scale Data Management

    • Caching - Redis

    • Asynchronous Processing - RabbitMQ

    • Horizontal Data Partitioning - Cassandra

  • Production Deployment

    • Cloud Deployment – Kubernetes on GCP

    • Auto-scaling – Kubernetes

    • High Availability - Kubernetes

    • Rolling Upgrades - Kubernetes

Content

Course Overview

Introduction
Course Overview

Work Environment Setup

Work environment
Create Linux workstation VM on cloud
Build code
Workstation VM backup

Initial System Architecture & Code Overview

System components overview
Running the system on cloud Linux VM
Web app architecture and technology selection
Python Django web app code overview
Services architecture
Services technology selection
Java SpringBoot services code overview
Database technology selection
Postgres RDBMS schema overview
Single page app technology selection
ReactJS SPA architecture

Containerize Components with Docker

Why containerize application components?
System with docker containers
Dockerize django webapp
Docker compose for automation
Dockerize postgres database
Dockerize java springboot services
Dockerize reactjs single page app
Running all dockerized components
Running system with docker network
Docker network and volumes
System review with docker containers

API Gateway with Netflix Zuul Gateway Service

Client routing challenge & Gateway services
Netfix Zuul gateway service code and configuration
Running system with Netfliz Zuul gateway service

Service Discovery with Netflix Eureka Discovery Service

Static routing challenge & Discovery services
Netflix Eureka discovery service code and configuration
Running system with Netflix Eureka discovery service

Load Balancing with Nginx & Netflix Ribbon Load Balancer

Client based & Server based Load balancing
Netflix Ribbon load balancer code and configuration
Running system with Nginx & Ribbon load balancers

Centralized Logging with Elasticsearch, Fluentd & Kibana (ELK stack)

System Observability - Logging, Tracing and Monitoring
Logging challenges in large-scale systems
Centralized logging architecture
Incrementing VM capacity
Configuration of Elasticsearch, Fluentd & Kibana (EFK stack)
Observing system with Elasticsearch, Fluentd, Kibana stack

Centralized Tracing with Uber Jaeger

Tracing challenges in large-scale systems
Distributed tracing architecture
Distributed tracing with Uber Jaeger
Distributed tracing core mechanism
Uber Jaeger instrumentation code and configuration
Observing API latency using Jaeger tracing

Metrics Monitoring with Prometheus

Metrics for large-scale systems
Exposing application component metrics for Prometheus
Prometheus configuration for metrics
Observing system metrics through Prometheus

Data Caching with Redis Cache

Challenges of high request and data volume
Caching for managing read only load
Caching technology selection
Service code changes for Redis cache
Redis cache configuration
Running system with Redis cache

Asynchronous Data Processing with RabbitMQ

Managing write only load for Async workflows
Messaging queue technology selection
Service code changes for RabbitMQ
RabbitMQ configuration
Running system with RabbitMQ

Horizontal Data Partitioning with Cassandra

RDBMS Limitations and Data Partitioning
Distributed database technology selection
Cassandra schema vs Postgres schema
Service code changes for Cassandra
Cassandra configuration
Running system with highly available Cassandra database cluster

Deployment with Kubernetes on Google Cloud

Moving from test deployment to production deployment
Reasons for Kubernetes and Cloud deployment
Kubernetes cluster architecture
Setting up Cloud Container Registry
Creating Kubernetes Cluster on Google Cloud
Kubernetes configuration for the system
Deploying system on Kubernetes
Exposing system to Internet using External Load Balancers
High availability with Kubernetes
Auto-scaling with Kubernetes
Rolling upgrades with Kubernetes
Shutting down Kubernetes cluster

Screenshots

Implementing Software Architecture of a Large-Scale System - Screenshot_01Implementing Software Architecture of a Large-Scale System - Screenshot_02Implementing Software Architecture of a Large-Scale System - Screenshot_03Implementing Software Architecture of a Large-Scale System - Screenshot_04

Reviews

Arturo
October 17, 2023
Muy buen contenido, actualizado y planteado en una progresión adecuada. Excelente el contenido del repositorio aunque podría mejorarse incluyendo un recurso descargable con el modelo presentado.
Ahmet
September 30, 2023
Thanks Anurag for this great course. I appreciate your efforts. I believe there are many things to learn inside the course for even experienced/senior developers or architects.
Romain
July 25, 2023
everything is understandable, but, Google seems changed their policy and now it is impossible to follow what he has done
Sankar
June 26, 2023
So far the course is fantastic! I have never found such a realistic course which removes away the abstraction and we can see how each component works in the real life.
Tom
June 6, 2023
This course is a great exposure to an evolving distributed architecture. I have not seen a course or tutorial anywhere close to this level of detail. It is well put together. Thanks!
Andrew
April 23, 2023
Great follow up to the theory course! Steps are clear and easy to follow. Some minor polishing is required (I've left questions on the specific videos).
Saurabh
April 3, 2023
By far, the best course out there on Software Architecture. Have completed both courses series and I must say they both cover lots of material in depth. Have learnt a lot of new things both theoretically and practically. The instructor is amazing, and the content is very crisp and on point. These courses are like gems and would recommend to everyone who is looking to mastering in Software Architecture. Thanks for making such course and sharing your knowledge.
Vinay
March 23, 2023
Course is very well laid out and the author is fantastic in covering the details per the structure. The video resolution could HD 1080p instead of 720p and wish if the course slides could have been made available for download to refer to.
Gurudas
May 20, 2022
Thanks and really appreciated you for taking such efforts to prepare for this course. You have very well explained the design in detail and also the code implementation. Really helpful to understand how can design and implement a large-scale system.
Saikat
April 19, 2022
This will make sense for people who are already aware of the technologies used in the demonstrations. It would have been better if this was built from scratch. Yes, it could have been longer but it would have definitely helped students to get a strong grasp on the technologies used here. Just showing bits and pieces of the code is not a proper way of explanation....
Cyrus
March 16, 2022
Good in overall, but some of the minor details and extra can make it better. 1) During code presentation, some of the "red text" is very hard to see due to the poor contrast with black background. 2) I would like to also see implementation of high throughput system, such as a sample video streaming system, implementing "Kafka", just to get an understanding of designing real world high throughput system. 3) I would also like to see implementation on "AWS", as it is widely more popular, well established, and is a must know in this day. 4) Video quality is ok, but the occasional flickering is sometimes distracting. Overall, the course is good, and I gain some insight of how to implement a distributive system in real world. This course will be a very good reference when trying to manage and deploy a real world distributive system.

Charts

Price

Implementing Software Architecture of a Large-Scale System - Price chart

Rating

Implementing Software Architecture of a Large-Scale System - Ratings chart

Enrollment distribution

Implementing Software Architecture of a Large-Scale System - Distribution chart
4248486
udemy ID
8/18/2021
course created date
3/17/2022
course indexed date
Bot
course submited by