
Explore how to evolve a simple 3d architecture application into a full end-to-end, large-scale system running on your machine, tackling architectural challenges with modern architectures and open-source products.
Create a Linux workstation VM on Google Cloud by configuring a project and a Compute Engine instance with Ubuntu, 4 CPU, 16 GB RAM.
Dockerize a react single-page app with an engine x base image, copy the react build, apply an engine x configuration, and launch via docker compose on port 80.
Configure and start the gateway service via Docker Compose, override environment variables, and route client requests through the gateway to admin and authorization services, validating with health checks and UI.
Explore how server-side and client-side load balancing handle multiple instances for gateway service and web application, using discovery services, reverse proxies, and ribbon load balancer or engine-x for routing.
Configure Jaeger tracing in a microservices setup, run synchronous and asynchronous flows, and inspect traces from order, inventory, and gateway services to observe latency.
Enable Prometheus metrics across Spring services by configuring the framework to expose /actuator/prometheus on port 8080, and integrate Django Prometheus by installing the package, updating urls, middleware, and installed apps.
Explore how to scale web apps and services to handle high request and data volume, and examine database bottlenecks and data-architecture strategies to prevent overload.
Implement a redis cache in the product service by configuring the connection and template, fetching products from cache with database fallbacks, and managing expiry and invalidation to prevent stale data.
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