Developer To Architect
Tags: Software Architecture
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
* 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