강의

멘토링

커뮤니티

Programming

/

Back-end

拡張可能なシステムを設計する

現代のデジタル製品とサービスは、小さなアイデアから始まり、何百万ものユーザーに愛される製品へと成長します。これを可能にする鍵は、拡張性の高いシステム設計です。この講義では、小規模から大規模なシステムへと成長できる設計原理と実践方法を学びます。

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

学習した受講者のレビュー

受講後に得られること

  • 小規模から大規模なサービスに成長するための拡張性の高いシステム設計の基本原理を学びます。

  • 可用性、性能、拡張性を考慮した段階的な設計戦略と実践方法を学びます。

  • プラットフォーム、サーバー、クライアント エンジニアリングの役割と連携方法について説明します。

スケーラブルなシステムを設計する。小さなアイデアから大規模なサービスへ -

現代のデジタル製品とサービスは、小さなアイデアから始めて、何百万人ものユーザーに愛される姿に成長します。これを可能にする鍵は、スケーラブルなシステム設計です。スケーラビリティは、システムがユーザーの増加とデータの暴力に対応する能力です。

この講義はプロジェクト#POTD(Photo of the Day)を中心に行われます。 POTDは一日一枚の写真で私たちの物語を特別にするシンプルで直感的なアプリです。ユーザーは写真を撮って短い投稿でアップロードした後、他のユーザーとコミュニケーションをとり、[いいね]をタップしてコメントできます。また、ハッシュタグを使って関心事が似た人の写真を簡単に閲覧できるアイデアから出発しました。

しかし、シンプルに見えるこのアプリも、ユーザーが徐々に増えていく過程でシステム運営に多くの課題を抱えています。このレッスンでは、POTDプロジェクトを通じてOutside-InおよびAPI-First Development Approachを適用してMVP(最小機能製品)を設計してリリースした後、実際にユーザー数とトラフィックが増加したときに発生するさまざまな問題を解決し、システムを拡張していく過程を学びます。

POTDプロジェクトで取り上げる主な学習内容は次のとおりです。

  • 最小機能製品として出発し、初期のユーザー要件に焦点を当てた簡潔で効率的なシステム設計を学びます。

  • ユーザーの増加に備えてサーバーを水平に拡張し、ロードバランサーを介してトラフィックを効果的に分散する方法を学びます。

  • データベースのクラスタリング、レプリケーション、キャッシング戦略により、大規模なデータを確実かつ迅速に処理する方法を学びます。

  • データベース検索の制限を克服するために、検索エンジンとメッセージキューを導入して効率的な検索と非同期処理を実装します。

  • 機械学習を導入してユーザーデータを分析し、パーソナライズされた推奨システムを設計します。

  • CDNとマルチデータセンターを介してグローバルユーザーに迅速で信頼性の高いサービスを提供する方法を学びます。

ソフトウェア開発は単にシステムを動作させるのではなく、変化する環境でも価値を維持し拡張できるようにすることです。このレッスンで、スケーラブルで柔軟なシステム設計の第一歩を一緒に始めましょう。 🚀

このようなことを学びます。

スケーラブルなシステム設計

POTDプロジェクトを通じて、MVPから始めてグローバルサービスを設計するプロセスを段階的に学びます。ロードバランシング、データベースクラスタリング、検索エンジン、キャッシュ、CDNなどの主要技術を活用して、パフォーマンスとスケーラビリティを備えたシステムを設計します。

スケーラビリティを考慮したソフトウェア設計

水平拡張で発生するセッション管理の問題を解決し、ソフトウェアを柔軟に設計する方法を学びます。また、変化する環境でもシステムの価値を維持できる適応型アーキテクチャについても学びます。

受講前の注意

注意事項

  • この講義は実践を含まない理論中心の講義であり、主に概念と戦略を紹介し、理解を助けるために焦点を当てています。

  • このレッスンでは、スケーラブルなシステム設計に初めて触れる学習者のために概念を理解しやすく説明します。しかし、各技術の深化された内容は別々の学習が必要です。

  • この講義は、より正確な配信のためにAIボイス技術を使用して作成されました。


こんな方に
おすすめです

学習対象は
誰でしょう?

  • プログラミングには慣れているが、システム アーキテクチャの設計には慣れていない方

  • 実務経験はないが、ソフトウェアエンジニアリングの全体的な構造とシステム設計の原理を理解したい方

  • 小さなアイデアから出発して大規模なサービスを作成し、運営するプロセスについて学びたい方

前提知識、
必要でしょうか?

  • 1 つ以上のプログラミング言語 (Java、Python など) の経験が必要です。

  • コンピューター サイエンス (CS) の基本概念 (データベース、ネットワーク、アルゴリズムなど) を理解する必要があります。

  • HTTP と Web アプリケーションの動作原理の基礎が必要です。

こんにちは
です。

1,435

受講生

44

受講レビュー

4.9

講座評価

3

講座

JYK management

“Jazz Your Knowledge 🆙

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

——

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

カリキュラム

全体

16件 ∙ (1時間 19分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

15件

4.9

15件の受講レビュー

  • pilming님의 프로필 이미지
    pilming

    受講レビュー 2

    平均評価 5.0

    5

    100% 受講後に作成

    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

      受講レビュー 1

      平均評価 5.0

      5

      100% 受講後に作成

      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

        受講レビュー 1

        平均評価 5.0

        5

        19% 受講後に作成

        The diagrams are well-organized and easy to understand!

        • sootudio님의 프로필 이미지
          sootudio

          受講レビュー 1

          平均評価 5.0

          修正済み

          5

          100% 受講後に作成

          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

            受講レビュー 1

            平均評価 5.0

            5

            81% 受講後に作成

            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.

            ¥1,410

            jykmww1219の他の講座

            知識共有者の他の講座を見てみましょう!

            似ている講座

            同じ分野の他の講座を見てみましょう!