Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
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,379

受講生

41

受講レビュー

4.9

講座評価

3

講座

JYK management

“Jazz Your Knowledge 🆙

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

——

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

カリキュラム

全体

16件 ∙ (1時間 19分)

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

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

受講レビュー

全体

13件

4.8

13件の受講レビュー

  • pilming님의 프로필 이미지
    pilming

    受講レビュー 2

    平均評価 5.0

    5

    100% 受講後に作成

    申し込んで一気に全部見ました! この講義は初心者向けと紹介されていますが、IT業界に携わるすべての人に役立つ内容だと思います! 勉強、就職、転職を目指して走っていると、ついつい「木」だけを見て「森」を見ないことがよくあります。(私自身もそうでした...😭^😭) 講義を受ける前にも、「検索エンジン」や「スケールアウト」といった概念は聞いたことがあり、知っていました。しかし、それがなぜ必要になるのか、そして導入後にどのような流れで発展するのかを体系的に整理して理解していたわけではありませんでした。そのため、私がこの講義で取り上げる内容を説明したとしても、結局は私が多少知っている特定の概念(木)に集中していたことでしょう。 しかし、この講義では、そのような概念がどのようにつながって、世界中のトラフィックを処理する巨大なサービスに拡張されるのかを自然に理解できるようにしてくれます!! おかげで、サービス設計をより広い視野で捉えることができるようになりました! 講義が次から次へと続くので、とても面白くて一気に視聴しましたが、これからも頻繁に視聴すると思います!

    • jacky님의 프로필 이미지
      jacky

      受講レビュー 1

      平均評価 5.0

      5

      100% 受講後に作成

      講師の他の講義でこの内容を聞く機会があったのですが、そのときとても楽しく聞いて、講義で出たら必ずまた聞こうと思いました。 いつも細部を勉強していたので、全体像を知りたいという気持ちが強かったのですが、自分が関与している部分がプロジェクト全体の中でどの部分なのか、他の部分とどのように関連しているのかを理解できる素晴らしい講義です。 全体から遠く離れた視点を持つことで、視野がずっと広くなったような気がします。

      • sebiinim님의 프로필 이미지
        sebiinim

        受講レビュー 1

        平均評価 5.0

        5

        19% 受講後に作成

        図式がすっきりしていて理解しやすいです!

        • sootudio님의 프로필 이미지
          sootudio

          受講レビュー 1

          平均評価 5.0

          修正済み

          5

          100% 受講後に作成

          講義を聴講し、「拡張可能なウェブアプリケーション設計」に関する力量を高めることができました。ウェブ開発者、特にバックエンド開発者として成長したい学生や就職活動中の方にはぜひ一度聴講をおすすめします! 私がウェブ開発の勉強を始めた時、最も難しかったことの一つが、「どのような技術がなぜ必要なのかを知ること」でした。 特にウェブの構造について、サーバー、DB、クライアント程度の構造しか知らなかったのが、ブートキャンプに入ってプロジェクトを進めるうちに、Redis、Kafka、RabbitMQ、Elasticsearchなど、馴染みのない技術に触れる機会が多くありました。 これらの技術を使う経験を積むと良いと聞き、一部は使ってみたりもしました。しかし、これらは「どのような問題」を感じ、それを解決するためではなく、ただ「役に立つ経験」程度で終わってしまうようで、残念に思うことが多くありました。 そんな中、この講義を聴講し、普段から疑問に思っていた部分を多く解消することができました。最も基本的な機能から始まり、問題状況を提示し、これを解決できる技術と、その技術がどのような形で問題を解決するのか、最後に該当技術の代表的な例を紹介してくださる方式で、システムを設計する際に「Aの問題にはBというソリューション(技術)を使うことができる」という概念が確立されます。 また、システム設計に必要な技術が追加されるたびに、これをアーキテクチャダイアグラムで見せてくださり、リクエスト/レスポンスの流れや構造などを簡単に把握できるように講義が提供されます。 最終的には、ウェブサービスを作る際に発生する問題に効果的に対処し、問題を解決する技術的な力量も身につけることができると思います。 現在、講義を聴講しながら、講義内容を基に以前作成したプロジェクトの構造を再構築しているのですが、以前は理解できなかった部分や非効率的に設計していた部分が目に見え、より改善された構造を作ることができました。ウェブ開発を勉強されている他の方々も、この講義を聴講し、今後進めるプロジェクトで拡張性があり効率的なウェブシステムを設計する力量が大いに養われることを願っています!! :)

          • heechanlog3127님의 프로필 이미지
            heechanlog3127

            受講レビュー 1

            平均評価 5.0

            5

            81% 受講後に作成

            とても楽しく拝見しました。 いつも見て、聞いて、実践することになる基礎のような気がしますが、 むしろいつも触れているため、自分自身が緩んでいるようです。 そのため、プロジェクトで問題が発生した際に難しく感じてしまいます。 この講義は、 私が見落としていた視野を簡単に変える講義でした。 とてもよく耳にする話ばかりですが、 聞くたびに毎回新しい発見があります。 良い講義をありがとうございました。

            ¥1,346

            jykmww1219の他の講座

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

            似ている講座

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