강의

멘토링

로드맵

Inflearn brand logo image
Programming

/

Back-end

Thiết kế hệ thống có khả năng mở rộng

Các sản phẩm và dịch vụ kỹ thuật số hiện đại bắt đầu từ những ý tưởng nhỏ và phát triển thành sản phẩm được hàng triệu người dùng yêu thích. Điểm mấu chốt giúp điều này trở thành hiện thực chính là thiết kế hệ thống có khả năng mở rộng. Trong khóa học này, bạn sẽ học được các nguyên tắc thiết kế và phương pháp thực hiện giúp hệ thống phát triển từ quy mô nhỏ đến quy mô lớn.

(4.8) 13 đánh giá

146 học viên

시스템설계
이론 중심
software-design
Architecture

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Bạn sẽ học được các nguyên tắc cơ bản về thiết kế hệ thống mở rộng để phát triển từ dịch vụ nhỏ lẻ thành dịch vụ lớn.

  • 학습자는 가용성, hiệu suất và khả năng mở rộng được cân nhắc trong chiến lược thiết kế từng bước và các biện pháp thực hiện.

  • 플랫폼, máy chủ và kỹ thuật viên khách hàng có vai trò và cách thức hợp tác như thế nào?

Thiết kế các hệ thống có khả năng mở rộng; Từ những ý tưởng nhỏ đến các dịch vụ quy mô lớn-

Các sản phẩm và dịch vụ số hiện đại bắt đầu từ những ý tưởng nhỏ và phát triển thành thứ được hàng triệu người dùng yêu thích. Chìa khóa để thực hiện điều này chính là thiết kế hệ thống có khả năng mở rộng. Khả năng mở rộng là khả năng của hệ thống đáp ứng nhu cầu tăng trưởng của người dùng và sự bùng nổ dữ liệu.

Bài giảng này tập trung vào dự án #POTD (Ảnh trong ngày) . POTD là một ứng dụng đơn giản và trực quan giúp câu chuyện của chúng ta trở nên đặc biệt chỉ với một bức ảnh mỗi ngày. Người dùng có thể chụp ảnh, tải ảnh lên kèm chú thích ngắn, sau đó tương tác với người dùng khác, thích ảnh và để lại bình luận. Mọi chuyện bắt đầu với ý tưởng giúp việc tìm kiếm ảnh của những người có cùng sở thích trở nên dễ dàng hơn bằng cách sử dụng hashtag.

Nhưng ngay cả ứng dụng có vẻ đơn giản này cũng đặt ra nhiều thách thức đối với hoạt động của hệ thống khi số lượng người dùng tăng dần. Trong bài giảng này, chúng ta sẽ thiết kế và ra mắt MVP (Sản phẩm khả thi tối thiểu) bằng cách áp dụng Phương pháp phát triển Outside-In và API-First thông qua dự án POTD, sau đó giải quyết nhiều vấn đề khác nhau xảy ra khi số lượng người dùng và lưu lượng truy cập thực sự tăng lên và triển khai hệ thống. Bạn sẽ học được quy trình mở rộng.

Những bài học chính sẽ được đề cập trong dự án POTD bao gồm:

  • Bắt đầu với một sản phẩm khả thi tối thiểu, bạn sẽ học cách thiết kế các hệ thống đơn giản, hiệu quả tập trung vào các yêu cầu ban đầu của người dùng.

  • Tìm hiểu cách mở rộng máy chủ theo chiều ngang để đáp ứng nhu cầu tăng trưởng của người dùng và cách phân phối lưu lượng hiệu quả bằng bộ cân bằng tải.

  • Tìm hiểu cách xử lý lượng dữ liệu lớn một cách đáng tin cậy và nhanh chóng bằng cách sử dụng các chiến lược phân cụ cơ sở dữ liệu, sao chép và lưu trữ đệm.

  • Để khắc phục những hạn chế của tìm kiếm trong cơ sở dữ liệu, chúng tôi giới thiệu một công cụ tìm kiếm và hàng đợi tin nhắn để thực hiện tìm kiếm hiệu quả và xử lý không đồng bộ.

  • Chúng tôi sử dụng máy học để phân tích dữ liệu người dùng và thiết kế hệ thống đề xuất được cá nhân hóa.

  • Tìm hiểu cách cung cấp dịch vụ nhanh chóng và đáng tin cậy cho người dùng toàn cầu thông qua CDN và nhiều trung tâm dữ liệu.

Phát triển phần mềm không chỉ là việc tạo ra các hệ thống hoạt động mà còn là việc làm cho chúng bền bỉ và có khả năng mở rộng trong môi trường thay đổi. Hãy thực hiện bước đầu tiên hướng tới việc thiết kế các hệ thống có khả năng mở rộng và linh hoạt trong khóa học này. 🚀

Tìm hiểu về những điều này

Thiết kế hệ thống có khả năng mở rộng

Thông qua dự án POTD, bạn sẽ tìm hiểu quy trình từng bước để thiết kế một dịch vụ toàn cầu, bắt đầu từ MVP. Thiết kế một hệ thống có hiệu suất và khả năng mở rộng bằng cách tận dụng các công nghệ chính như cân bằng tải, phân cụ cơ sở dữ liệu, công cụ tìm kiếm, bộ nhớ đệm và CDN.

Thiết kế phần mềm cho khả năng mở rộng

Tìm hiểu cách giải quyết các vấn đề quản lý phiên phát sinh khi mở rộng theo chiều ngang và thiết kế phần mềm một cách linh hoạt. Ngoài ra, chúng ta sẽ tìm hiểu về kiến ​​trúc thích ứng có thể duy trì giá trị của hệ thống ngay cả trong môi trường thay đổi.

Những điều cần lưu ý trước khi tham gia lớp học

Ghi chú

  • Khóa học này thiên về lý thuyết, không có bài tập thực hành và chủ yếu tập trung vào việc giới thiệu và hiểu các khái niệm và chiến lược.

  • Khóa học này cung cấp lời giải thích dễ hiểu về các khái niệm dành cho người mới học về thiết kế hệ thống có khả năng mở rộng. Tuy nhiên, nội dung sâu hơn của từng kỹ thuật đòi hỏi phải nghiên cứu riêng biệt.

  • Bài giảng này được tạo bằng công nghệ giọng nói AI để truyền tải chính xác hơn.


Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Những người quen thuộc với lập trình nhưng không quen thuộc với thiết kế kiến ​​trúc hệ thống.

  • 실무 kinh nghiệm không có, nhưng muốn hiểu về cấu trúc chung của kỹ thuật phần mềm và nguyên tắc thiết kế hệ thống

  • Bất kỳ ai muốn tìm hiểu về quá trình bắt đầu từ một ý tưởng nhỏ và tạo ra và vận hành một dịch vụ quy mô lớn

Cần biết trước khi bắt đầu?

  • Bạn cần có kinh nghiệm về một hoặc nhiều ngôn ngữ lập trình (Java, Python, v.v.).

  • Bạn cần hiểu các khái niệm cơ bản của khoa học máy tính (CS) (cơ sở dữ liệu, mạng, thuật toán, v.v.).

  • Bạn cần có kiến thức cơ bản về nguyên lý hoạt động của HTTP và ứng dụng web.

Xin chào
Đây là

1,390

Học viên

42

Đánh giá

4.9

Xếp hạng

3

Các khóa học

JYK management

“Jazz Your Knowledge 🆙

“당신의 지식을 더 신나게, 더 매력적으로 만들어라“

——

"당신의 아이디어가 세상을 바꿀 수 있습니다. 우리는 그 과정을 함께합니다."

Chương trình giảng dạy

Tất cả

16 bài giảng ∙ (1giờ 19phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

13 đánh giá

4.8

13 đánh giá

  • pilming님의 프로필 이미지
    pilming

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    I applied and watched it all at once! This course is introduced as a course for beginners, but I think it's content that will be helpful to everyone in the IT industry! When you're running towards your goal of studying, getting a job, or changing jobs, you can easily get caught up in the 'trees' and not see the 'forest'. (That's what happened to me...😭^😭) Even before taking the course, I had heard of and knew concepts like 'search engine' and 'scale out'. However, I didn't systematically organize and understand why they were needed and how they developed after implementation. So if I had explained the content covered in this course, I would have ended up focusing on specific concepts (trees) that I knew the best. However, this course allows you to naturally understand how these concepts are connected and expanded into a huge service that handles traffic from all over the world!! Thanks to this, I was able to look at service design from a broader perspective! The course progresses in a way that makes it feel like one thing leads to another, so it was so fun that I watched it all at once, but I think I'll be checking it out often in the future!

    • jacky님의 프로필 이미지
      jacky

      Đánh giá 1

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      I had the chance to hear this content in another lecture by the instructor, and I enjoyed it so much that I thought I had to listen to it again when it came out as a lecture. I always study the details, so I wanted to know the big picture, and this is a good lecture that helps me understand what part of the project I am involved in and how it is related to other parts. Having a perspective that looks at the whole picture from a distance makes me feel like my vision has become much wider.

      • sebiinim님의 프로필 이미지
        sebiinim

        Đánh giá 1

        Đánh giá trung bình 5.0

        5

        19% đã tham gia

        The diagrams are well-organized and easy to understand!

        • sootudio님의 프로필 이미지
          sootudio

          Đánh giá 1

          Đánh giá trung bình 5.0

          Đã chỉnh sửa

          5

          100% đã tham gia

          I was able to improve my 'scalable web application design' skills by taking this course. I highly recommend it to students/job seekers who want to grow as web developers, especially backend developers! One of the most difficult things I faced when I started studying web development was 'knowing why certain technologies are needed'. In particular, I only knew about the structure of the web, such as servers, databases, and clients, but when I entered boot camp and carried out projects, I had many opportunities to encounter unfamiliar technologies such as Redis, Kafka, RabbitMQ, and Elasticsearch. I heard that it would be good to gain experience using these technologies, and I even tried some of them. However, I felt that these were not to solve a 'problem', but rather to leave them as just 'helpful experiences', which was a shame. Then, while listening to this lecture, I was able to resolve many of the things I was curious about. Starting with the most basic functions, the lecture presents problem situations, introduces the technologies that can solve them and how they solve the problems, and finally introduces representative examples of the technologies. As a result, the concept that 'B solution (technology) can be used for problem A' is established when designing a system. In addition, whenever a technology required for system design is added, it is shown as an architecture diagram, and the lecture is provided so that the flow and structure of requests/responses can be easily understood. Ultimately, I believe that you can effectively respond to problems that occur when creating web services, and also develop the technical ability to solve problems. Currently, I am taking the lecture and re-creating the structure of the project I made before based on the lecture content. I can see the parts that I did not understand before or the parts that I designed inefficiently, and I was able to create a more improved structure. I hope that other people who are studying web development will also develop the ability to design scalable and efficient web systems in future projects by taking this course!! :)

          • heechanlog3127님의 프로필 이미지
            heechanlog3127

            Đánh giá 1

            Đánh giá trung bình 5.0

            5

            81% đã tham gia

            I enjoyed it so much. It feels like the fundamentals that I should always be seeing, hearing, and practicing, but I think I become lax because I'm always exposed to them. As a result, I find it difficult when problems arise in projects. This lecture simply shifted the perspective I was missing. It talks about stories that I encounter so often, but it feels new every time I hear them. Thank you for the great lecture.

            239.154 ₫

            Khóa học khác của jykmww1219

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!