image
The Ultimate Drawing Course Beginner to Advanced...
$179
$79
image
User Experience Design Essentials - Adobe XD UI UX...
$179
$79
Total:
$659

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
Who this course is for:
Developers and Architects who want to learn the fine details of architecting large-scale systems

What you'll 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

Requirements

  • You will need a copy of Adobe XD 2019 or above. A free trial can be downloaded from Adobe.
  • No previous design experience is needed.
  • No previous Adobe XD skills are needed.

Course Content

27 sections • 95 lectures
Expand All Sections
1-Course Overview
3
1.1-Introduction
1.2-Course Overview
1.3-Course Content Pdf
2-Work Environment Setup
4
2.1-Work environment
2.2-Create Linux workstation VM on cloud
2.3-Build code
2.4-Workstation VM backup
3-System Components - Languages & Frameworks
11
3.1-System components overview
3.2-Running the system on cloud Linux VM
3.3-Web app architecture and technology selection
3.4-Python Django web app code overview
3.5-Services architecture
3.6-Services technology selection
3.7-Java SpringBoot services code overview
3.8-Database technology selection
3.9-Postgres RDBMS schema overview
3.10-Single page app technology selection
3.11-ReactJS SPA architecture
4-Docker Containers - Isolating component dependencies and environment
11
4.1-Why containerize application components?
4.2-System with docker containers
4.3-Dockerize django webapp
4.4-Docker compose for automation
4.5-Dockerize postgres database
4.6-Dockerize java springboot services
4.7-Dockerize reactjs single page app
4.8-Running all dockerized components
4.9-Running system with docker network
4.10-Docker network and volumes
4.11-System review with docker containers
5-Microservices - Gateway, Discovery & Load Balancing
9
5.1-Client routing challenge & Gateway services
5.2-Netfix Zuul gateway service code and configuration
5.3-Running system with Netfliz Zuul gateway service
5.4-Static routing challenge & Discovery services
5.5-Netflix Eureka discovery service code and configuration
5.6-Running system with Netflix Eureka discovery service
5.7-Client based & Server based Load balancing
5.8-Netflix Ribbon load balancer code and configuration
5.9-Running system with Nginx & Ribbon load balancers
6-Centralized Logging with Elasticsearch, Fluentd & Kibana (EFK stack)
6
6.1-System Observability - Logging, Tracing and Monitoring
6.2-Logging challenges in large-scale systems
6.3-Centralized logging architecture
6.4-Incrementing VM capacity
6.5-Configuration of Elasticsearch, Fluentd & Kibana (EFK stack)
6.6-Observing system with Elasticsearch, Fluentd, Kibana stack
7-Distributed Tracing with Uber Jaeger
6
7.1-Tracing challenges in large-scale systems
7.2-Distributed tracing architecture
7.3-Distributed tracing with Uber Jaeger
7.4-Distributed tracing core mechanism
7.5-Uber Jaeger instrumentation code and configuration
7.6-Observing API latency using Jaeger tracing
8-Metrics Monitoring with Prometheus
4
8.1-Metrics for large-scale systems
8.2-Exposing application component metrics for Prometheus
8.3-Prometheus configuration for metrics
8.4-Observing system metrics through Prometheus
9-Data Caching with Redis Cache
6
9.1-Challenges of high request and data volume
9.2-Caching for managing read only load
9.3-Caching technology selection
9.4-Service code changes for Redis cache
9.5-Redis cache configuration
9.6-Running system with Redis cache
10-Asynchronous Processing with RabbitMQ
5
10.1-Managing write only load for Async workflows
10.2-Messaging queue technology selection
10.3-Service code changes for RabbitMQ
10.4-RabbitMQ configuration
10.5-Running system with RabbitMQ
11-Horizontal Scalability with Cassandra
6
11.1-RDBMS Limitations and Data Partitioning
11.2-Distributed database technology selection
11.3-Cassandra schema vs Postgres schema
11.4-Service code changes for Cassandra
11.5-Cassandra configuration
11.6-Running system with highly available Cassandra database cluster
12-Deployment with Kubernetes on Google Cloud
12
12.1-Moving from test deployment to production deployment
12.2-Reasons for Kubernetes and Cloud deployment
12.3-Kubernetes cluster architecture
12.4-Setting up Cloud Container Registry
12.5-Creating Kubernetes Cluster on Google Cloud
12.6-Kubernetes configuration for the system
12.7-Deploying system on Kubernetes
12.8-Exposing system to Internet using External Load Balancers
12.9-High availability with Kubernetes
12.10-Auto-scaling with Kubernetes
12.11-Rolling upgrades with Kubernetes
12.12-Shutting down Kubernetes cluster