Developer To Architect

Learn Software & Solution Architecture for Architecting and Deploying Large-Scale, Highly-Available and Secure Systems

Last updated 2022-01-10 | 4.4

- Architecting Software Systems and Solutions: We will start with a basic three tier application architecture which we will enhance as we move along.
- How to build a technical stack by getting architectural insights into products like Nodejs
- Redis
- Cassandra
- Kafka
- Hadoop
- Elastic Search
- .. and many more
- Non-Functional Requirements: How to design architecture considering Performance
- Scalability
- Reliability
- and Security

What you'll learn

Architecting Software Systems and Solutions: We will start with a basic three tier application architecture which we will enhance as we move along.
How to build a technical stack by getting architectural insights into products like Nodejs
Redis
Cassandra
Kafka
Hadoop
Elastic Search
.. and many more
Non-Functional Requirements: How to design architecture considering Performance
Scalability
Reliability
and Security
Deployment of large scale production systems using tools like Docker & Kubernetes

* Requirements

* You are
* or have been a good programmer
* you can do code design
* and write code in at least one programming language
* You understand three tier architecture
* and you broadly understand what web apps
* services
* and databases means

Description

Architecting software systems is a skill that is in huge demand, but it is not a readily available skill. To understand why this skill is rare to find, let's go through a few lines from Martin Fowler's blog on architecture.

He says: Architecture is about the important stuff. Whatever that is. It means that the heart of thinking architecturally about software is to decide what is important, (i.e. what is architectural), and then expend energy on keeping those architectural elements in good condition. For a developer to become an architect, they need to be able to recognize what elements are important, recognizing what elements are likely to result in serious problems should they not be controlled.

It takes a number of years for a developer to learn enough to become an architect. This learning largely depends on the kind of opportunities that you get in your career. Often these opportunities are limited to specific areas of work only.  However, to be an architect, you must possess extensive technical knowledge of as many areas as possible. You must understand all the complexities and challenges in different parts of a system. You need the ability to make upfront decisions by understanding various trade-offs. You should be able to foresee or anticipate critical problems that a system can face during its evolution.

This is where the 'Developer To Architect' course can be very useful for you. It assumes that you already have great development skills, and it builds from there. It extensively covers architecting non-functional properties of a system, handling of large-scale deployments, and internal working of popular open-source products for building software solutions.

To give you some details of what is specifically covered:

  • Architecting non-functional properties like Performance, Scalability, Reliability, Security. 

  • Large-scale deployment and operations using Docker containers and Kubernetes.

  • Internal working of popular open-source products like Node.js, Redis, Kafka, Cassandra, ELK stack, Hadoop, etc for confidently architecting software solutions.

In short, this course will help you learn everything you need to become a 'true' architect in a very short period of time.

Who this course is for:

  • All Software Developers who already know Code Design and now want to learn how to Architect Large-Scale Systems
  • All Software Architects who want to polish their Software Architecture and Solution Architecture skills

Course content

7 sections • 255 lectures

Introduction to Developer To Architect Preview 05:05

This video is a short overview of what is covered as part of the 'Developer To Architect' course.

Module contents overview Preview 02:09

Performance Module - Contents

A reference software system for discussing performance Preview 01:29

What is performance Preview 02:48

How do performance problems look like Preview 05:30

Performance principles Preview 11:06

System performance objectives Preview 04:30

Performance measurement metrics Preview 10:20

Serial request latency Preview 00:47

Network transfer latency Preview 07:08

Minimizing network transfer latency Preview 12:14

Memory access latency Preview 05:08

Minimizing memory access latency Preview 11:06

Disk access latency Preview 01:31

Minimizing disk access latency Preview 18:05

CPU processing latency Preview 04:54

Minimizing CPU processing latency Preview 10:10

Some common latency costs Preview 07:27

Concurrency related latency Preview 00:32

Amdahl's law for concurrent tasks Preview 11:58

Gunther's universal scalability law Preview 06:58

Shared resource contention Preview 08:55

Minimizing shared resource contention Preview 19:14

Minimizing locking related contention Preview 10:05

Pessimistic Locking Preview 06:11

Optimistic Locking Preview 11:11

Compare and swap mechanism Preview 10:03

Deadlocks Preview 11:11

Coherence related delays Preview 10:08

Caching Preview 00:29

System architecture for performance Preview 04:18

Caching for performance Preview 04:54

HTTP Caching of static data Preview 13:49

Caching of dynamic data Preview 12:21

Caching related challenges Preview 15:22

Summary Preview 04:41

Course slides for Performance section

Performance presentation slides Preview 00:03

Module contents overview Preview 01:43

Performance vs Scalability Preview 04:43

Vertical & Horizontal scalability Preview 05:44

Reverse proxy Preview 04:20

A reference software system for discussing scalability Preview 00:33

Scalability principles Preview 05:18

Modularity for scalability Preview 02:21

Replication Preview 04:27

Stateful replication in web applications Preview 13:12

Stateless replication in web applications Preview 05:51

Stateless replication of services Preview 03:11

Database replication Preview 04:51

Database replication types Preview 20:08

Need for specialized services Preview 04:53

Specialized services - SOAP/REST Preview 08:39

Asynchronous services Preview 08:21

Asynchronous processing & scalability Preview 07:57

Caching for scalability Preview 04:25

Vertical partitioning with micro-services Preview 06:49

Database partitioning Preview 15:37

Database partitioning selection Preview 08:04

Routing with database partitioning Preview 03:36

Methods for horizontal scalability Preview 02:23

Dealing with large scale systems Preview 00:23

Load balancing multiple instances Preview 03:49

Discovery service and load balancing Preview 07:15

Load balancer discovery Preview 02:22

HLB vs SLB Preview 04:29

Layer-7 load balancers Preview 03:44

DNS as load balancer Preview 05:10

Global server load balancing Preview 13:45

Global data replication Preview 10:04

Auto scaling instances Preview 06:27

Micro-Services Architecture Preview 00:19

Micro-Services Motivation Preview 05:54

Service Oriented Architecture Preview 11:48

Micro-Services Architecture Style Preview 12:25

Transactions in Micro-Services Preview 11:05

Compensating Transactions - SAGA Pattern Preview 14:53

Micro-services communication model Preview 03:37

Event driven transactions Preview 11:14

Extreme scalability with NoSQL and Kafka Preview 08:51

Summary Preview 04:15

Scalability presentation slides Preview 00:02

Module contents overview Preview 01:44

Failures in large scale distributed systems Preview 06:31

Partial system failures Preview 04:55

Reliability engineering topics Preview 00:46

Reliability Preview 02:25

Availability Preview 03:14

High Availability Preview 03:05

Fault Tolerance Preview 02:06

Designing Fault Tolerance Preview 00:12

Fault tolerant design Preview 01:02

Redundancy Preview 03:35

Types of redundancy Preview 05:32

Single point of failures Preview 02:32

Stateless component redundancy Preview 03:45

Stateful component redundancy Preview 15:21

Load balancer redundancy Preview 01:40

Datacentre infrastructure as SPOF Preview 02:11

Creating datacenter redundancy Preview 11:18

Fault detection Preview 00:46

Fault models Preview 02:48

Health checks Preview 02:52

External monitoring service Preview 07:31

Internal cluster monitoring Preview 08:23

Fault detection in a system Preview 02:08

Recovering from failures Preview 00:41

Stateless component recovery Preview 03:06

Stateful Failovers Preview 08:56

Load Balancer high availability Preview 01:12

Database recovery with hot standby Preview 05:00

Database recovery with warm standby Preview 06:24

Database recovery with cold backups Preview 06:19

High Availability in large scale systems Preview 11:50

Failover best practices Preview 01:44

System stability Preview 00:32

Timeouts Preview 05:15

Retries Preview 08:29

Circuit Breaker Preview 04:04

Fail Fast and Shed Load Preview 07:56

Summary Preview 03:45

Reliability presentation slides Preview 00:03

Module contents overview Preview 01:52

Security objectives Preview 07:36

Network security Preview 00:14

Symmetric key encryption Preview 06:25

Public key encryption Preview 09:07

Secure network protocol Preview 07:15

SSL and TLS Preview 05:53

Hashing Preview 06:10

Digital signatures Preview 09:43

Digital certificates Preview 10:37

Chain of trust Preview 08:47

TLS/SSL handshake Preview 04:29

Secure network channel Preview 03:21

Firewalls Preview 04:07

Network security Preview 05:01

Identity management Preview 00:14

Authentication and authorization Preview 01:53

Authentication Preview 01:19

Credentials transfer Preview 11:23

Credentials verification Preview 08:36

Stateful authentication Preview 08:22

Stateless authentication Preview 07:41

Single Sign-On Preview 03:17

Access management Preview 00:17

Role based access control model Preview 08:28

Role based access example Preview 05:17

Authorization Preview 07:01

OAuth2 token grant Preview 05:57

OAuth2 token grant - Code Flow Preview 07:35

OAuth2 token grant - Password Flow Preview 01:45

OAuth2 in a system Preview 02:15

OAuth2 token types Preview 10:39

Json Web Tokens Preview 06:29

Token storage Preview 05:37

Securing data at rest Preview 12:26

Securing a Software System Preview 05:15

Common vulnerabilities Preview 00:13

SQL Injection Preview 04:48

Cross Site Scripting Preview 05:07

Cross Site Resource Forgery Preview 07:26

Summary Preview 02:07

Security presentation slides Preview 00:03

Module contents overview Preview 02:51

Large scale deployment challenges Preview 01:06

Application deployment Preview 02:50

Infrastructure deployment Preview 03:53

System operations Preview 05:51

Modern deployment solutions Preview 01:07

Application deployment Preview 00:08

Component deployment Preview 03:04

Component deployment automation Preview 03:31

Deployment with Virtual Machines Preview 08:45

Isolation through virtual machines Preview 04:07

Deployment with Containers Preview 05:54

Docker containers Preview 06:13

Infrastructure deployment Preview 00:05

Infrastructure requirements Preview 01:30

Provisioning and configuration Preview 03:18

Deployment with containers on Cloud Preview 02:28

Deployment with AWS cloud stack Preview 08:09

Deployment with Kubernetes Preview 00:18

Kubernetes lifecycle management Preview 01:42

Kubernetes naming and addressing Preview 02:20

Kubernetes scaling with multiple instances Preview 02:04

Kubernetes load balacing Preview 01:55

Kubernetes high availability Preview 00:56

Kubernetes rolling upgrades Preview 02:30

Kubernetes capabilities Preview 03:29

Kubernetes deployment Preview 04:05

Kubernetes services and workloads Preview 04:00

Kubernetes architecture Preview 10:16

System upgrades Preview 00:15

Rolling updates Preview 02:33

Canary deployment Preview 01:37

Recreate deployment Preview 00:55

Blue Green deployment Preview 02:01

A/B testing Preview 03:15

Summary Preview 02:13

Deployment presentation slides Preview 00:03

Module contents overview Preview 02:44

Reference system for using tech platforms Preview 01:13

Web applications Preview 02:38

Solutions for web applications Preview 02:45

Apache web server Preview 05:32

Apache webServer architecture Preview 05:20

Apache webserver scalability Preview 05:06

Nginx webserver Preview 01:15

Nginx architecture Preview 09:42

Nginx as reverse proxy and cache Preview 04:46

Web containers & spring framework Preview 05:34

Jetty & Spring Preview 02:55

Node.JS Preview 04:29

Node.JS event loop Preview 12:06

Cloud Solutions for web Preview 13:44

Cloud storage Preview 05:32

Cloud CDN Preview 06:49

Services Preview 02:51

Services solutions Preview 01:44

Memcached Preview 04:49

Memcached Architecture Preview 13:53

Redis Cache & its architecture Preview 08:18

Cloud caching solutions Preview 02:08

RabbitMQ Preview 15:08

RabbitMQ architecture Preview 12:26

Kafaka architecture Preview 17:44

Redis Pub/Sub Preview 09:53

Cloud MQ solutions Preview 03:56

Datastores Preview 02:08

Datastore solutions Preview 02:13

RDBMS Preview 10:22

RDBMS scalability architecture Preview 07:52

NoSQL objectives & trade-offs Preview 10:54

Amazon DynamoDB Preview 09:24

DynamoDB architecture Preview 11:08

Google BigTable Preview 16:22

BigTable architecture Preview 15:02

HBase Preview 03:25

Cassandra Preview 15:08

Cassandra features Preview 04:36

MongoDB Preview 06:14

MongoDB architecture Preview 07:33

Analytics Preview 04:17

Analytics solutions Preview 02:07

Logstash architecture Preview 13:34

Logstash data streaming architecture Preview 10:28

Fluentd Preview 07:59

Elasticsearch Preview 18:14

Elasticsearch architecture Preview 17:12

Hadoop HDFS Preview 10:50

Map-Reduce Preview 21:42

Apache Spark Preview 09:32

Stream processing Preview 12:17

Summary Preview 11:22

Technology Stack presentation slides Preview 00:03