We may earn an affiliate commission when you visit our partners.
Michael Pogrebinsky | Software Architecture, System Design, Java Expert, Transyes 有译思 | 专业语言服务团队, and Top Developer Academy LLC

准备让事业更上一层楼了吗?

想要掌握软件架构和系统设计吗?

那你就来对地方啦!

在这门实用课程中,你将学习如何构建可扩展至每日覆盖千百万用户的实际系统,以及如何处理和存储PB级数据。

如果你想成为软件架构师,或已经是软件架构师,但需要好好复习一下,那么这就是为你量身打造的课程。

在这里,你可以为下一场系统设计面试做好准备、鼓足信心。

在这里,你将学习:

·明确系统的技术要求,不遗漏任何细节

·定义易于使用、功能强大的应用程序接口(APIs)

·应用现代架构建设模块和技术,实现高可扩展性、高可用性和高性能

·运用行业验证的软件架构模式和最佳实践

·建设支持庞大网络流量和大数据处理的高度可扩展系统

·像真正的专业软件架构师一样思考和决策

学完本课程后,你将掌握实现模糊需求和高层次需求所需的技能,经历系统设计的各个阶段,并最终完成软件架构。

本课程虽不包含编程内容,却极具实用性,为你构建实际系统奠定基础。

本课程涉及的所有技术和模式均为顶级软件公司所使用。

除视频讲座外,你还将获取:

·与课程主题有关的大量资源

·帮助你检验学习效果和复习课程内容的小测验

·提升学习体验的站外文章及视频链接

Read more

准备让事业更上一层楼了吗?

想要掌握软件架构和系统设计吗?

那你就来对地方啦!

在这门实用课程中,你将学习如何构建可扩展至每日覆盖千百万用户的实际系统,以及如何处理和存储PB级数据。

如果你想成为软件架构师,或已经是软件架构师,但需要好好复习一下,那么这就是为你量身打造的课程。

在这里,你可以为下一场系统设计面试做好准备、鼓足信心。

在这里,你将学习:

·明确系统的技术要求,不遗漏任何细节

·定义易于使用、功能强大的应用程序接口(APIs)

·应用现代架构建设模块和技术,实现高可扩展性、高可用性和高性能

·运用行业验证的软件架构模式和最佳实践

·建设支持庞大网络流量和大数据处理的高度可扩展系统

·像真正的专业软件架构师一样思考和决策

学完本课程后,你将掌握实现模糊需求和高层次需求所需的技能,经历系统设计的各个阶段,并最终完成软件架构。

本课程虽不包含编程内容,却极具实用性,为你构建实际系统奠定基础。

本课程涉及的所有技术和模式均为顶级软件公司所使用。

除视频讲座外,你还将获取:

·与课程主题有关的大量资源

·帮助你检验学习效果和复习课程内容的小测验

·提升学习体验的站外文章及视频链接

如果你符合下列情形,那么本课程就非常适合:

·你想学习软件架构,而高校或编程集训营通常不教授这门课

·你想成为软件架构师或高级技术人员,如高级/首席软件工程师或技术主管

·你正准备参加系统设计面试,希望增加成功机会,从众多候选人中脱颖而出

那还等什么?:)

马上开始吧!

常见问题

-只有软件架构师才能学习本课程吗?

当然不是!软件架构师只是一个头衔。事实上,许多公司并不设这一头衔。大多数软件架构和系统设计工作都由公司内部最受信任的工程师负责。要想获得这种信任,你需要向经理证明你具备扎实的软件架构和系统设计知识——这正是你将在本课程中要学习的内容。

-软件架构很重要吗?为什么要学习软件架构?

现代大型系统的软件开发十分复杂,通常需要多名软件工程师历经数月才能完成。没有成熟的计划和架构,就不可能开始建造大厦,同样,没有合理的设计和认可的软件架构,就不可能启动大型软件项目。如果系统的软件架构不良,整个项目就很可能失败。相反,如果软件架构很好,就会对许多人的生活产生显著积极影响,并帮助你的公司成长和发展。

-本课程包含编程内容吗?

不包含。软件架构属于大型系统的设计阶段。只有在软件架构确定后才会进行编程。我们应该改变固有思维,认识到编程只是软件工程的一小部分。软件架构和设计做得好,编程及其后续环节就会非常容易和顺畅。反之,软件架构做不好,到了实施阶段就会遇到严峻挑战。

-所有软件工程师都应该努力成为软件架构师吗?

是,又不是。随着经验的积累,软件工程师有望承担更多的软件架构和设计工作。在大多数公司里,高级软件工程师需要掌握软件架构技能,哪怕职位名称中不含“软件架构师”这个词。此外,即使你想继续编程,也需要在编程中时刻考虑整体软件架构,否则代码将无法充分发挥作用。如果你决心成为一名软件架构师,就要承担更大的责任、发挥更大的影响力,这通常也会伴随着更强的工作满足感、更高的职业安全感和更好的薪酬待遇。

Enroll now

What's inside

Learning objectives

  • 每日响应数百万条请求的大型系统的软件架构
  • 设计高可扩展性、高可用性、高性能的软件系统
  • 应用行业验证的软件架构模式、建设模块和最佳实践
  • 定义系统的技术要求、高级组件和api
  • 为下一场系统设计面试鼓足信心

Syllabus

简介

软件架构简介与动因及大型系统软件架构定义

进入软件架构师的思维模式。学习收集软件架构需求,并进行分类。做出重要权衡和架构决策。
  • 软件架构师做出决策和权衡的驱动因素

  • 需求类型及相关挑战和风险

Read more
系统设计和需求类型简介——随堂测验
  • 大型系统架构的功能性需求。

  • 软件架构师获取所有功能性需求的分步指南

  • 用软件架构图进行演示

特性需求收集过程——随堂测验
软件的质量属性需求
质量属性需求——随堂测验
软件架构中的系统约束
系统约束——随堂测验
大型系统中最重要的质量属性

系统性能需求的定义、重要软件架构考量以及系统性能测量

性能——随堂测验
可扩展性
可扩展性——随堂测验
可用性——简介和测量
可用性——随堂测验
容错性和高可用性
服务水平协议(SLA),服务水平目标(SLO),服务水平指标(SLI)
业界的SLA示例
API设计
  • API——系统设计的重要部分简介

  • API类型

  • 最佳实践

API设计——随堂测验
远程过程调用(RPC)
流行的RPC框架和技术
  • API——系统设计的重要部分简介

  • API类型

REST API——随堂测验
大型系统架构构建块
域名系统(DNS)、负载均衡和全局负载均衡(GSLB)
负载均衡解决方案和云技术
消息代理
消息代理解决方案和云技术
API网关
API网关解决方案和云技术
内容分发网络——CDN
CDN解决方案和云技术
软件架构构建块——随堂测验
全局数据存储
关系数据库和事务的ACID特性
事务的ACID特性
非关系数据库
非关系数据库——答案
提高数据库性能、可用性和可扩展性的技术
提高数据库性能、可用性和可扩展性的技术——随堂测验
  • CAP定理释义

  • CAP定理对大型系统软件架构的影响

CAP定理——随堂测验
可扩展性非结构化数据存储
可扩展性非结构化数据存储——云解决方案和开源解决方案
软件架构模式
软件架构模式和风格简介
多层物理架构
多层物理架构——随堂测验
  • 向微服务架构迁移的动因

  • 每个软件架构师都需要了解的最佳实践和反模式

微服务架构——随堂测验
  • Definition and building blocks of Event Driven Architecture

  • Event Driven Architecture Patterns such as Event Sourcing, CQRS and others

事件驱动架构——随堂测验
大数据架构模式
大数据简介

Big Data processing strategies and Architecture Design Patterns

Lambda架构
软件架构与系统设计实践
设计高扩展性论坛1——要求与API
设计高扩展性论坛2——功能架构图
设计高扩展性论坛3——软件最终架构
设计电商平台1——需求与时序图
设计电商平台2——功能图
设计电商平台3——软件最终架构
奖励章节
课程福利——学无止境

Save this course

Save 现代大型系统的软件架构与设计 to your list so you can find it easily later:
Save

Activities

Coming soon We're preparing activities for 现代大型系统的软件架构与设计. These are activities you can do either before, during, or after a course.

Career center

Learners who complete 现代大型系统的软件架构与设计 will develop knowledge and skills that may be useful to these careers:

Reading list

We haven't picked any books for this reading list yet.
Provides a detailed analysis of the architecture of several popular open source applications. It great resource for learning about the different architectural patterns and techniques that are used in real-world software systems.
Provides a comprehensive overview of software architecture, covering the principles, practices, and tools involved in designing and building large-scale software systems. It is an excellent resource for both experienced software architects and those new to the field.
Provides a comprehensive catalog of software architecture patterns. It great resource for learning about the different types of architectural patterns and how to use them to solve common software design problems.
Provides a fun and engaging introduction to design patterns, which are reusable solutions to common software design problems. It great resource for learning about the different types of design patterns and how to use them effectively.
Provides a detailed guide to designing and building software systems that are clean, maintainable, and extensible. It great resource for learning about the principles of software architecture and how to apply them to real-world projects.
Introduces the concept of domain-driven design (DDD), which software design approach that focuses on understanding the core domain of a software system and designing the system around that domain. DDD powerful technique for managing the complexity of large-scale software systems.
Provides a practical guide to designing and building microservices-based systems. It covers the key concepts and principles of microservices architecture, and provides detailed guidance on how to implement microservices in a variety of programming languages and frameworks.
Provides a detailed guide to designing and building enterprise integration patterns. It great resource for learning about the different types of integration patterns and how to use them to solve common integration problems.
Provides a practical guide to software architecture. It covers the key concepts and principles of software architecture, and provides guidance on how to apply them to the design and development of real-world software systems.
Provides a practical guide to designing and building software architectures that are flexible and adaptable. It great resource for learning about the principles of evolutionary architecture and how to apply them to real-world projects.
Provides a comprehensive guide to designing and building data-intensive applications. It covers the key concepts and principles of data-intensive architecture, and provides guidance on how to apply them to the design and development of real-world applications.
Provides a practical guide to designing and building scalable software systems. It covers the key concepts and principles of scalability, and provides guidance on how to apply them to the design and development of real-world systems.
Provides a practical guide to software architecture for developers. It covers the key concepts and principles of software architecture, and provides guidance on how to apply them to the design and development of real-world software systems.
Provides a practical guide to domain-driven design, a software design approach that focuses on modeling the domain of the problem rather than the implementation.
Provides a comprehensive overview of the principles and practices of designing scalable systems, covering topics such as performance optimization, load balancing, and fault tolerance.
Provides a deep dive into the architecture and design of microservices, covering topics such as service discovery, load balancing, and fault tolerance.
Provides a comprehensive guide to designing and building data-intensive applications, covering topics such as data modeling, storage, processing, and analysis.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser