We may earn an affiliate commission when you visit our partners.
Course image
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
  • 大型系统架构的功能性需求。

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

  • 用软件架构图进行演示

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

  • API——系统设计的重要部分简介

  • API类型

  • 最佳实践

  • API——系统设计的重要部分简介

  • API类型

  • 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

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
介绍了API网关、内容分发网络和消息代理等现代架构构建模块,这些都是构建可扩展系统的关键组件
涵盖了事件驱动架构模式,如事件溯源和命令查询职责分离,这些模式对于构建响应迅速且可扩展的系统至关重要
探讨了CAP定理对大型系统软件架构的影响,这有助于架构师在一致性、可用性和分区容错性之间做出明智的权衡
课程不包含编程内容,而是侧重于大型系统的设计阶段,这可能需要学习者具备一定的编程基础才能更好地理解架构概念
讨论了关系数据库和非关系数据库,以及提高数据库性能、可用性和可扩展性的技术,这对于处理大型系统中的数据至关重要
涉及服务水平协议(SLA)、服务水平目标(SLO)和服务水平指标(SLI),这些概念对于定义和衡量系统的可靠性和性能至关重要

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

现代大型系统的软件架构与设计

根据学员反馈,这门课程为学习现代大型系统的软件架构系统设计提供了扎实的基础。许多学生认为课程对系统设计面试极大的帮助,因为它清晰地解释了高扩展性高可用性高性能关键概念。课程覆盖了业界验证的构建块架构模式,被认为是非常实用的内容。尽管课程不包含编程实践,且有少数评论认为某些部分深度不够讲解偏理论,但总体而言,学员们认为课程结构良好易于理解,是准备面试提升架构思维优秀起点
应用模式和最佳实践实用
"课程介绍的架构模式和最佳实践在工作中很有指导意义。"
"最后的系统设计实践案例非常有价值。"
"学到的理论知识可以直接应用到实际项目的设计中。"
"课程内容帮助我更好地理解现有系统的架构。"
介绍了大型系统的基础模块
"这些基础知识是理解大型系统架构的基石。"
"对业界常用的技术组件有很好的概览。"
"这些构建块的介绍对理解实际系统非常有帮助。"
"课程系统地介绍了各种重要的系统构建块,比如负载均衡、消息队列、CDN等。"
复杂架构理论阐述易懂
"老师把复杂难懂的架构概念讲得很清楚。"
"很多之前模糊的概念在这门课里得到了澄清。"
"对于高扩展性、可用性和性能的解释非常到位,通俗易懂。"
"课程结构条理清晰,易于理解和吸收。"
为系统设计面试提供关键知识
"这个课程对系统设计面试的准备很有帮助。"
"内容直接关联系统设计面试常考点。"
"学习完这门课,我面试时对架构问题的回答更有信心了。"
"涵盖了构建大型系统所需的许多重要概念,对面试非常有益。"
某些主题讲解相对基础
"感觉有些主题讲得不够深入,更像是概念介绍。"
"对于有一定经验的工程师来说,部分内容可能偏基础。"
"希望能对特定架构模式或技术有更详细的探讨。"
"在性能调优、数据库优化等方面可以有更深入的章节。"
课程注重理论,无代码示例
"课程完全没有涉及编程实现,只有理论讲解。"
"希望能有一些更贴近实际的代码或动手环节。"
"如果能结合一些具体的实现案例,理解会更深入。"
"虽然课程说明了没有编程,但实际学习中还是感觉缺少了实践部分。"

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 现代大型系统的软件架构与设计 with these activities:
阅读《领域驱动设计》
帮助学生理解领域驱动设计思想,为设计复杂的业务系统打下基础。
Show steps
  • 通读《领域驱动设计》一书。
  • 重点关注领域模型、限界上下文和聚合等概念。
  • 思考如何在实际项目中应用领域驱动设计。
阅读《企业应用架构模式》
帮助学生深入理解软件架构模式,为课程中关于多层物理架构、微服务架构和事件驱动架构的内容打下基础。
Show steps
  • 通读《企业应用架构模式》一书。
  • 重点关注与课程相关的章节,例如分层架构、微服务和事件驱动架构。
  • 思考如何在实际项目中应用这些架构模式。
绘制系统架构图
帮助学生掌握系统架构图的绘制方法,并提高沟通能力。通过绘制系统架构图,学生可以更清晰地表达自己的设计思想。
Show steps
  • 选择一个你熟悉的系统或应用。
  • 确定系统的主要组件和它们之间的关系。
  • 使用合适的工具绘制系统架构图。
  • 请其他同学或老师 review 你的系统架构图。
Three other activities
Expand to see all activities and additional details
Show all six activities
撰写API设计文档
帮助学生巩固API设计知识,并提高实际应用能力。通过撰写API设计文档,学生可以更好地理解API的设计原则和最佳实践。
Show steps
  • 选择一个你感兴趣的系统或应用。
  • 定义系统的功能需求和API接口。
  • 撰写API设计文档,包括API的描述、参数、返回值和错误码。
  • 请其他同学或老师 review 你的API设计文档。
设计一个高可扩展的论坛系统
帮助学生将所学知识应用到实际项目中,并提高系统设计能力。通过设计一个高可扩展的论坛系统,学生可以更好地理解大型系统的架构设计。
Show steps
  • 明确论坛系统的功能需求和非功能需求。
  • 设计论坛系统的架构,包括前端、后端和数据库。
  • 选择合适的架构模式和技术栈。
  • 编写设计文档,详细描述系统的架构和组件。
  • 进行系统测试和性能优化。
整理课程笔记和资料
帮助学生巩固所学知识,并方便日后复习。通过整理课程笔记和资料,学生可以更好地理解课程内容。
Show steps
  • 回顾课程视频和讲义。
  • 整理笔记,并补充遗漏的知识点。
  • 收集与课程相关的资料,例如论文、博客和开源项目。
  • 将整理好的笔记和资料分类整理,方便日后查阅。

Career center

Learners who complete 现代大型系统的软件架构与设计 will develop knowledge and skills that may be useful to these careers:
软件架构师
软件架构师负责设计和构建可扩展、可靠和高效的软件系统。本课程可以帮助你培养成为一名成功的软件架构师所必需的关键技能。课程涵盖了现代架构建设模块和技术,如负载均衡、消息代理和API网关,这些都是软件架构师日常工作中会用到的工具。该课程还深入探讨了行业验证的软件架构模式和最佳实践,软件架构师可以利用这些来构建支持庞大网络流量和大数据处理的高度可扩展系统。此外,课程还教授如何像专业的软件架构师一样思考和决策,为实际工作做好准备。
系统设计师
系统设计师专注于软件系统的设计和规划。本课程可以帮助系统设计师掌握系统设计的各个阶段,并最终完成软件架构。课程中关于明确系统技术要求、定义API以及应用现代架构建设模块的内容,对系统设计师来说非常有价值。通过本课程,系统设计师可以学习如何构建可扩展、高可用和高性能的系统,从而更好地满足用户需求。本课程涵盖的内容极具实用性,为你构建实际系统奠定基础。课程涉及的所有技术和模式均为顶级软件公司所使用。
首席软件工程师
首席软件工程师在技术团队中扮演着领导角色,负责指导和监督软件开发过程,并经常参与软件架构的设计和决策。本课程可以帮助首席软件工程师提升其在软件架构方面的能力。通过学习行业验证的软件架构模式和最佳实践,首席软件工程师可以更好地指导团队构建高质量的软件系统。同时,课程中关于高可扩展性和高可用性的内容对于构建大型系统尤为重要。成为首席软件工程师之后,承担更大的责任、发挥更大的影响力,这通常也会伴随着更强的工作满足感、更高的职业安全感和更好的薪酬待遇。
高级软件工程师
高级软件工程师通常需要参与软件架构和设计工作,尤其是在大型复杂项目中。本课程可以帮助高级软件工程师掌握软件架构和系统设计的核心概念。例如,学习如何明确系统的技术要求,定义易于使用且功能强大的应用程序接口(APIs),以及应用现代架构建设模块和技术,实现高可扩展性、高可用性和高性能。通过本课程,高级软件工程师可以提升自己的技术水平,为承担更多架构方面的责任做好准备。课程不包含编程内容,但却能帮助高级软件工程师从更高的层面理解软件开发,从而编写出更有效率和更具可维护性的代码。
技术主管
技术主管负责领导技术团队,并制定技术战略。他们需要对软件架构和系统设计有深入的理解,以便做出正确的技术决策。本课程可以帮助技术主管掌握构建可扩展至每日覆盖千百万用户的实际系统,以及如何处理和存储PB级数据。此外,课程中关于API设计、负载均衡和数据存储的内容对于技术主管制定技术战略具有重要的参考价值。技术主管可以通过本课程提升自己的技术领导力,更好地指导团队完成项目。
解决方案架构师
解决方案架构师负责为特定的业务问题设计和实施技术解决方案。本课程可以帮助解决方案架构师提升其在大型系统软件架构方面的能力。课程涵盖了如何构建可扩展至每日覆盖千百万用户的实际系统,以及如何处理和存储PB级数据。这对于解决方案架构师来说,掌握现代架构建设模块和技术,如负载均衡、消息代理和API网关。他们可以利用行业验证的软件架构模式和最佳实践,构建支持庞大网络流量和大数据处理的高度可扩展系统。
应用架构师
应用架构师专注于单个应用程序的架构设计。本课程可以帮助应用架构师更好地理解软件架构的整体原则,以及如何将这些原则应用到具体的应用程序中。课程中关于API设计、软件架构模式以及质量属性需求的内容,对于应用架构师来说非常有帮助。通过学习这些内容,应用架构师可以设计出更健壮、可维护和可扩展的应用程序。学习本课程,可以帮助应用架构师明确系统的技术要求,不遗漏任何细节。
云架构师
云架构师专注于设计、构建和维护基于云计算的系统。本课程可以帮助云架构师更好地理解云环境下的软件架构和系统设计。课程中关于负载均衡、内容分发网络(CDN)以及可扩展性数据存储等内容,对于云架构师来说非常重要。通过学习这些内容,云架构师可以更好地利用云计算平台的优势,构建高性能、高可用和高可扩展性的云应用。云架构师可以将云技术融入到现有的系统中,实现高可扩展性,高可用性和高性能。
数据架构师
数据架构师负责设计和管理组织的数据资产。本课程可以帮助数据架构师更好地理解大数据架构模式,以及如何处理和存储PB级数据。课程中关于非关系数据库、可扩展性非结构化数据存储以及大数据处理策略的内容,对数据架构师来说非常有价值。通过本课程,数据架构师可以构建更有效的数据管理系统,从而更好地支持业务决策。数据架构师可以应用行业验证的软件架构模式、建设模块和最佳实践,从而更好地进行大数据处理。
企业架构师
企业架构师负责从整体上规划和管理组织的技术架构。本课程可以帮助企业架构师更好地理解大型系统的软件架构和设计,从而做出更明智的技术决策。企业架构师可以通过本课程,像真正的专业软件架构师一样思考和决策。课程涵盖了现代架构建设模块和技术,实现高可扩展性、高可用性和高性能。企业架构师可以运用行业验证的软件架构模式和最佳实践,建设支持庞大网络流量和大数据处理的高度可扩展系统。
技术顾问
技术顾问为客户提供技术方面的咨询服务。本课程可以帮助技术顾问更好地理解软件架构和系统设计,从而为客户提供更专业的建议。即使你想继续编程,也需要在编程中时刻考虑整体软件架构,否则代码将无法充分发挥作用。课程涵盖了收集软件架构需求,并进行分类以及做出重要权衡和架构决策。技术顾问可以通过本课程提升自己的技术知识,从而更好地为客户提供服务。
DevOps工程师
DevOps 工程师负责自动化软件开发和部署流程。本课程可以帮助 DevOps 工程师更好地理解软件架构,从而更有效地进行自动化。DevOps工程师将会学习到易于使用、功能强大的应用程序接口(APIs)。课程中关于高可用性和可扩展性的内容对于 DevOps 工程师来说非常重要。DevOps 工程师可以通过本课程提升自己的技术水平,从而更好地支持软件开发团队。
数据库管理员
数据库管理员负责管理和维护数据库系统。本课程可以帮助数据库管理员更好地理解数据库在大型系统架构中的作用,以及如何优化数据库性能和可扩展性。例如,定义系统的技术要求、高级组件和API。课程中关于非关系数据库、可扩展性数据存储以及数据库性能优化的内容,对数据库管理员来说非常有价值 。通过本课程,数据库管理员可以更好地管理和维护数据库系统,从而提高系统的整体性能和可靠性。
项目经理
项目经理负责管理软件开发项目。虽然项目经理不需要精通软件架构的细节,但了解软件架构的基本概念可以帮助他们更好地与技术团队沟通,并做出更合理的项目计划。课程不包含编程内容,却极具实用性,为你构建实际系统奠定基础。通过本课程,项目经理可以更好地理解项目的技术风险,并采取相应的应对措施。
产品经理
产品经理负责定义和管理软件产品。了解软件架构的基本概念可以帮助产品经理更好地与开发团队沟通,并制定更符合技术实际的产品规划。本课程可以帮助产品经理了解软件架构的整体原则,从而更好地定义产品的技术需求。通过本课程,产品经理可以更好地与技术团队合作,开发出更成功的产品。

Reading list

We've selected two 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 现代大型系统的软件架构与设计.
本书是软件架构领域的经典之作,详细介绍了各种企业应用架构模式。阅读本书可以帮助学生深入理解课程中涉及的架构模式,并学习如何在实际项目中应用这些模式。本书既可以作为学习参考,也可以作为日常工作中的工具书。
本书是领域驱动设计(DDD)的经典之作,介绍了如何通过领域模型来指导软件开发。阅读本书可以帮助学生更好地理解业务需求,并设计出更符合业务逻辑的系统。本书对于理解微服务架构和事件驱动架构非常有帮助。

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