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
A hands-on approach to Software Solution Architecture of large-scale systems using modern methods & open source products
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
Khu vực Câu hỏi thường gặp trống
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
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
Client routing challenge & Gateway services
Netfix Zuul gateway service code and configuration
Running system with Netfliz Zuul gateway service
Static routing challenge & Discovery services
Netflix Eureka discovery service code and configuration
Running system with Netflix Eureka discovery service
Client based & Server based Load balancing
Netflix Ribbon load balancer code and configuration
Running system with Nginx & Ribbon load balancers
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
A little knowledge of Java will be helpful in understanding code. If you do not know Java, then a good experience with any other modern programming language will also do.
Familiarity with very basic Linux shell commands and scripting will be helpful. If you haven't worked on Linux, then a good scripting experience on any other platform will also do.
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
1.0
0 Học viên
105 Khóa học
1252 Đánh giá
Xin chào các bạn, tôi là Nguyễn Đình Cường, một lập trình viên và giảng viên đam mê công nghệ với hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Tôi tốt nghiệp từ Bưu Chính Viễn Thông và đã từng làm việc cho một số công ty công nghệ hàng đầu như FPT Software và VinGroup. Với chuyên môn chính là phát triển ứng dụng web, tôi đã làm việc với nhiều công nghệ như HTML, CSS, JavaScript, React cho front-end và Node.js, Express, MongoDB cho back-end. Không chỉ dừng lại ở việc viết mã, tôi còn yêu thích tìm hiểu sâu về thiết kế hệ thống và kiến trúc phần mềm. Tôi tin rằng quá trình học lập trình không chỉ đơn thuần là lý thuyết, mà còn là sự trải nghiệm thực tế và giải quyết vấn đề. Trong các khóa học của mình, tôi cố gắng cung cấp cho học viên những bài giảng thú vị và dễ hiểu, cùng với các bài tập thực hành giúp củng cố kiến thức. Tôi hy vọng rằng qua các khóa học của mình, bạn sẽ không chỉ học được cách viết mã, mà còn phát triển tư duy lập trình và kỹ năng giải quyết vấn đề. Hãy cùng nhau khám phá thế giới lập trình và biến ý tưởng của bạn thành hiện thực! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại liên hệ với tôi. Tôi rất vui được hỗ trợ bạn trong hành trình học tập của mình!
Xem chi tiết