We may earn an affiliate commission when you visit our partners.
Course image
NewTechWays - Anurag Yadav

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.

Read more

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.

Enroll now

What's inside

Learning objectives

  • 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

Syllabus

Overview of the course
Developer To Architect

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

Read more
How to design and improve performance of a system

Performance Module - Contents

A reference software system for discussing performance
What is performance
How do performance problems look like
Performance principles
System performance objectives
Performance measurement metrics
Serial request latency
Network transfer latency
Minimizing network transfer latency
Memory access latency
Minimizing memory access latency
Disk access latency
Minimizing disk access latency
CPU processing latency
Minimizing CPU processing latency
Some common latency costs
Concurrency related latency
Amdahl's law for concurrent tasks
Gunther's universal scalability law
Shared resource contention
Minimizing shared resource contention
Minimizing locking related contention
Pessimistic Locking
Optimistic Locking
Compare and swap mechanism
Deadlocks
Coherence related delays
Caching
System architecture for performance
Caching for performance
HTTP Caching of static data
Caching of dynamic data
Caching related challenges

Course slides for Performance section

Performance presentation slides
How to architect highly scale systems
Module contents overview
Performance vs Scalability
Vertical & Horizontal scalability
Reverse proxy
A reference software system for discussing scalability
Scalability principles
Modularity for scalability
Replication
Stateful replication in web applications
Stateless replication in web applications
Stateless replication of services
Database replication
Database replication types
Need for specialized services
Specialized services - SOAP/REST
Asynchronous services
Asynchronous processing & scalability
Caching for scalability
Vertical partitioning with micro-services
Database partitioning
Database partitioning selection
Routing with database partitioning
Methods for horizontal scalability
Dealing with large scale systems
Load balancing multiple instances
Discovery service and load balancing
Load balancer discovery
HLB vs SLB
Layer-7 load balancers
DNS as load balancer
Global server load balancing
Global data replication
Auto scaling instances
Micro-Services Architecture
Micro-Services Motivation
Service Oriented Architecture
Micro-Services Architecture Style
Transactions in Micro-Services
Compensating Transactions - SAGA Pattern
Micro-services communication model
Event driven transactions
Extreme scalability with NoSQL and Kafka
Summary
Scalability presentation slides
How to architect highly available, reliable and resilient systems
Failures in large scale distributed systems
Partial system failures
Reliability engineering topics
Reliability
Availability
High Availability
Fault Tolerance
Designing Fault Tolerance
Fault tolerant design
Redundancy
Types of redundancy
Single point of failures
Stateless component redundancy

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches about a topic that is highly relevant in industry
Develops technical skills that are core for working in this field
Develops strong professional development skills
Involves hands-on practice and interactive materials
Increases learners' edge in understanding this topic

Save this course

Save Software Architecture & Technology of Large-Scale Systems to your list so you can find it easily later:
Save

Reviews summary

Expertly taught software architecture

Learners say that this engaging course on Software Architecture & Technology of Large-Scale Systems is well received by students because of its knowledgeable instructor, easy-to-understand explanations, and interesting content. Students largely positive about the course appreciate the clear structure and practical examples that solidify their understanding of the subject matter. With a high confidence score of 79, this course is highly recommended for anyone seeking in-depth knowledge in this field.
Students find the course content engaging and interesting.
"It’s very engaging so far"
"Very interesting. Already learned alot"
"easy to understand and lots of examples"
The instructor is knowledgeable and easy to understand.
"knowledgeable and easy to understand"
"Sal's background as a teacher really shows in the way she structures her courses and in the way she produces the content."
"Eden is very good with the content he delivers"
The course is well-structured and easy to follow.
"Easy to understand for beginners. Well-structured."
"A great course to start with LangChain and LLMs. The course is easy to follow and clearly explained."
"I like the way the course is set up. I've found the topics easy to remember so far"
A few students have mentioned technical difficulties with code examples or videos.
"Following the lessons are difficult since some of the packages are outdated and he doesn't even tell us which version we should use."
"It was a good course to understand how Langchain does things. But the quality of the videos are absmal. Some videos with the low audio and most of the videos you cannot see the code, either because the low quality or because it's not zoomed in!"
Some students have reported that the course content is outdated.
"Contents were good. However, there are some outdated codes which do not functional anymore. Needs to be updated."
"Enrolling with high hopes, I found the outdated material and discrepancies with LangChain's state dampened my enthusiasm."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Software Architecture & Technology of Large-Scale Systems with these activities:
Organize your notes, assignments, and resources
This activity will help you to stay organized and focused throughout the course, and it will make it easier to review your materials later.
Show steps
  • Create a system for organizing your notes, assignments, and resources.
  • Regularly review and update your notes.
  • Keep all of your materials in one place.
Read "Building Microservices" by Sam Newman
This book provides an in-depth look at the principles and practices of microservices architecture, which is a key topic covered in the course.
Show steps
  • Read the book thoroughly.
  • Take notes and highlight important passages.
  • Discuss the book with other students or professionals.
Follow a tutorial on how to build a RESTful API using Node.js and Express
This activity will provide you with hands-on experience in building a RESTful API, which is a common task in software development.
Browse courses on RESTful APIs
Show steps
  • Find a reputable tutorial on how to build a RESTful API.
  • Follow the tutorial step-by-step.
  • Test your API to make sure it works as expected.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Practice building small applications with the tools discussed in the course
This activity will help you develop hands-on experience and solidify your understanding of the tools and principles covered in the course.
Browse courses on Application Development
Show steps
  • Choose a simple application idea to work on.
  • Research the tools and technologies needed for your application.
  • Build your application.
  • Test and debug your application.
Attend a workshop on cloud computing
This activity will provide you with a deeper understanding of cloud computing, which is becoming increasingly important in software development.
Browse courses on Cloud Computing
Show steps
  • Find a reputable workshop on cloud computing.
  • Attend the workshop and participate actively.
  • Apply the knowledge and skills you learned in the workshop to your own projects.
Design and implement an architectural solution for a real-world problem
This activity will challenge you to apply the concepts learned in the course to a practical problem.
Browse courses on Architectural Design
Show steps
  • Identify a real-world problem that you would like to solve with a software solution.
  • Design an architectural solution for your problem.
  • Implement your solution using the tools and technologies covered in the course.
  • Test and evaluate your solution.
Contribute to an open source project related to software architecture
This activity will give you practical experience in working on real-world software architecture problems.
Browse courses on Open Source
Show steps
  • Find an open source project related to software architecture.
  • Identify an issue or feature that you can contribute to.
  • Fork the project and create a pull request.
  • Collaborate with the project maintainers to get your contribution merged.

Career center

Learners who complete Software Architecture & Technology of Large-Scale Systems will develop knowledge and skills that may be useful to these careers:
Software Architect
As a Software Architect, you will design and develop software systems. You will also integrate new technologies into existing systems and provide technical guidance to other members of your team. This course will help you build a foundation in software architecture and design. You will learn about different architectural patterns and how to apply them to real-world problems. You will also learn about the latest trends in software development, such as cloud computing and big data.
Lead Software Engineer
As a Lead Software Engineer, you will lead a team of software engineers in the development of software systems. You will also be responsible for ensuring that your team's work meets the highest standards of quality and efficiency. This course will help you develop the skills you need to be a successful Lead Software Engineer. You will learn about software architecture, design, and development. You will also learn about project management and team leadership.
Senior Software Engineer
As a Senior Software Engineer, you will work on complex software development projects. You will be responsible for designing, developing, and testing software systems. You will also be responsible for mentoring junior engineers and providing technical guidance to your team. This course will help you develop the skills you need to be a successful Senior Software Engineer. You will learn about software architecture, design, and development. You will also learn about advanced programming techniques and algorithms.
Systems Engineer
As a Systems Engineer, you will design, develop, and deploy complex software systems. You will also be responsible for integrating new technologies into existing systems and providing technical support to users. This course will help you build a foundation in systems engineering. You will learn about software architecture, design, and development. You will also learn about system integration and deployment.
DevOps Engineer
As a DevOps Engineer, you will be responsible for bridging the gap between software development and operations. You will work with developers to ensure that their code is deployable and maintainable. You will also work with operations to ensure that the infrastructure is scalable and reliable. This course will help you develop the skills you need to be a successful DevOps Engineer. You will learn about software development, operations, and continuous delivery.
Cloud Architect
As a Cloud Architect, you will design and develop cloud-based solutions. You will also be responsible for migrating existing applications to the cloud and providing technical guidance to your team. This course will help you build a foundation in cloud computing. You will learn about cloud architecture, design, and development. You will also learn about the latest trends in cloud computing, such as serverless computing and microservices.
Data Architect
As a Data Architect, you will design and develop data-driven solutions. You will also be responsible for managing data assets and providing technical guidance to your team. This course will help you build a foundation in data architecture. You will learn about data modeling, data warehousing, and data analytics. You will also learn about the latest trends in data management, such as big data and machine learning.
Security Architect
As a Security Architect, you will design and develop secure software systems. You will also be responsible for assessing the security of existing systems and providing technical guidance to your team. This course will help you build a foundation in security architecture. You will learn about security principles, security design, and security testing. You will also learn about the latest trends in security, such as cloud security and mobile security.
Software Tester
As a Software Tester, you will be responsible for testing software systems for bugs. You will also be responsible for providing feedback to developers on the quality of their code. This course will help you build a foundation in software testing. You will learn about different testing techniques and tools. You will also learn about the latest trends in software testing, such as agile testing and automation testing.
Technical Writer
As a Technical Writer, you will be responsible for creating documentation for software systems. You will also be responsible for providing training to users on how to use these systems. This course will help you build a foundation in technical writing. You will learn about different writing styles and techniques. You will also learn about the latest trends in technical writing, such as online documentation and user experience.
Product Manager
As a Product Manager, you will be responsible for defining the vision for a software product. You will also be responsible for working with engineers and designers to bring this vision to life. This course will help you build a foundation in product management. You will learn about different product development methodologies and tools. You will also learn about the latest trends in product management, such as agile product development and customer experience.
Project Manager
As a Project Manager, you will be responsible for planning, executing, and controlling software development projects. You will also be responsible for working with stakeholders to ensure that the project meets their needs. This course will help you build a foundation in project management. You will learn about different project management methodologies and tools. You will also learn about the latest trends in project management, such as agile project management and risk management.
Business Analyst
As a Business Analyst, you will be responsible for gathering and analyzing business requirements. You will also be responsible for working with stakeholders to define the scope of a software project. This course will help you build a foundation in business analysis. You will learn about different business analysis techniques and tools. You will also learn about the latest trends in business analysis, such as agile business analysis and user experience.
UI/UX Designer
As a UI/UX Designer, you will be responsible for designing the user interface for software systems. You will also be responsible for ensuring that the user interface is usable and visually appealing. This course may help you build a foundation in UI/UX design. You will learn about different UI/UX design principles and tools. You will also learn about the latest trends in UI/UX design, such as responsive design and mobile design.
Scrum Master
As a Scrum Master, you will be responsible for facilitating agile software development projects. You will also be responsible for ensuring that the team is following the Scrum process. This course may help you build a foundation in Scrum. You will learn about the different roles and responsibilities in Scrum. You will also learn about the different Scrum ceremonies and artifacts.

Reading list

We've selected 11 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Software Architecture & Technology of Large-Scale Systems.
Comprehensive guide to designing and building data-intensive applications. It covers a wide range of topics, including data modeling, storage, processing, and analysis.
Practical guide to designing and building cloud-native Java applications. It covers a wide range of topics, including cloud-native architecture, design patterns, and best practices.
Comprehensive guide to Kubernetes, the open-source container orchestration platform. It covers a wide range of topics, including Kubernetes architecture, cluster management, and application deployment.
Comprehensive guide to Apache Kafka, the open-source distributed streaming platform. It covers a wide range of topics, including Kafka architecture, cluster management, and application development.
Comprehensive guide to Elasticsearch, the open-source distributed search and analytics engine. It covers a wide range of topics, including Elasticsearch architecture, cluster management, and application development.
Comprehensive guide to Apache Hadoop, the open-source distributed computing platform. It covers a wide range of topics, including Hadoop architecture, cluster management, and application development.
Comprehensive guide to MongoDB, the open-source document database. It covers a wide range of topics, including MongoDB architecture, data modeling, and application development.
Comprehensive guide to Docker, the open-source container platform. It covers a wide range of topics, including Docker architecture, container management, and application development.
Concise guide to the JavaScript programming language. It covers a wide range of topics, including JavaScript syntax, semantics, and best practices.
Practical guide to Node.js, the open-source JavaScript runtime environment. It covers a wide range of topics, including Node.js architecture, application development, and best practices.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Software Architecture & Technology of Large-Scale Systems.
Software Architecture & Design of Modern Large Scale...
The Complete Microservices & Event-Driven Architecture
Google Certified Professional Cloud Architect
Microsoft Azure Solutions Architect: Design Authorization
Exam Prep: AWS Certified Solutions Architect - Associate
Architecting in AWS
The Software Architect Code: Building the Digital World
Software Architecture for the Enterprise Architect
Microsoft Azure Solutions Architect: Design Authentication
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser