Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Programming

/

Back-end

バックエンドアプリケーションのパフォーマンスを向上させる - 基礎編

'バックエンドアプリケーションのパフォーマンスをテストする'の後続のレッスンで、あなたが作成したバックエンドアプリケーションのパフォーマンスを向上させるための基礎を築くことができるレッスンです。

  • foo
3시간 만에 완강할 수 있는 강의 ⏰
성능측정
stress-testing
artillery
cache
performance-tuning
asynchronous-programming

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

こんなことが学べます

  • APIパフォーマンステスト

  • サーバーリソースがパフォーマンスに影響を与える理由と改善方法

  • 非同期を活用したパフォーマンスの向上

  • スノーフレークを活用した重複チェックなしでユニークなキーを作る方法

  • インデックスとキャッシュを利用したルックアップパフォーマンスの向上

性能テストをしてみたら、
今回は性能改善をしてみるべきでしょうか?


過去のパフォーマンステスト講義で予告したとおり、パフォーマンス改善講義に戻りました。 🤗


単独で開発するのとは異なり、実務でチームとして働き始めたときに経験した最大の変化があります。まさに性能を測定して改善することでした。単独でアプリケーションを作成するときは、ユーザー数が少なくパフォーマンスが大幅に問題ではありませんでしたが、実務では多くのデータを処理し、トラフィックが増加するにつれてパフォーマンステストが必須であることがわかりました。うまく動作する機能であってもパフォーマンスが悪いとシステム全体の障害点になりやすく、これはユーザー体験を大きく損なう可能性があります。

このレッスンでは、これらの問題を解決するためのパフォーマンステストの後、APIのロジックに合わせた改善方法について説明します。短縮URLサービスの例として、バックエンドアプリケーションのパフォーマンスを段階的に向上させる方法を理解しやすく準備しました。

まず、短縮URLアプリケーションの基本コードを見て、サーバーにデプロイするプロセスを進めます。生成APIとクエリAPIのパフォーマンスを測定し、どのようにパフォーマンスが向上するかを事前に調べて、パフォーマンスの改善方法を1つずつ適用します。

生成APIの場合、要求処理スレッドの数を増やし、サーバーサイズを増やし、応答と生成を分離するなどの手法を使用してパフォーマンスを向上させることができます。非同期処理とスノーフレークアルゴリズムが生成APIのパフォーマンスを大幅に向上させる方法を学びます。

Query APIのパフォーマンスを向上させるためには、データベースインデックスの追加、キャッシュの使用、WindowsWingの利用などをカバーしています。これにより、ルックアップのパフォーマンスを大幅に向上させる方法を実践を通じて体験できます。


API固有のロジックを分析してパフォーマンスを改善する方法を導き出す


スノーフレークを利用した短縮URLキー重複チェックロジックの削除


段階的な性能改善案の提示と性能試験結果の確認


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

1⃣サーバーリソースを増やしてパフォーマンスを向上させる方法

パフォーマンスに影響を与えるアプリケーションサーバーのリソースにはいくつかあります。 CPU、メモリ、ディスクなどの物理リソースから始まり、スレッドや接続などのソフトウェアリソースもあります。これらはすべて最終的にパフォーマンスに影響します。このレッスンでは、これらのサーバーリソースがパフォーマンスにどのように影響し、どのようにパフォーマンスを向上させるかについて説明します。

2⃣非同期を活用したLatencyを減らす

APIのユーザーであるクライアントが感じるアプリケーションのパフォーマンスは、最終的に要求への応答が戻るまでの時間であるLatencyによって決まります。その結果、同じことをしても、クライアントがより迅速に応答を受け取ると、APIのパフォーマンスがよく感じられます。クライアントが本物のユーザーではなく別のサーバーである場合、システム全体のパフォーマンスにも影響します。この部分を改善できるようにする非同期を活用したパフォーマンスを改善する方法を学びます。

3⃣インデックスとキャッシュを利用したルックアップパフォーマンスの向上

ルックアップのパフォーマンスについて話すときに欠けずに登場する存在は、まさにインデックスとキャッシュです。インデックスは主にデータベースレベルで扱われ、キャッシュはアプリケーション内に存在するキャッシュや共有キャッシュなど様々な形で存在します。このレッスンでは、インデックスとキャッシュの詳細については説明しませんが、インデックスとキャッシュの存在がAPIのパフォーマンスにどれだけ大きな影響を与える可能性があるかを示しています。

4⃣ Windowsウィングを活用したUpdate Queryパフォーマンスの向上

同じレコードを対象に更新クエリが飛行し続ける状況では、レコードにかかるロックによって急激にパフォーマンスが低下する可能性があります。こんなことを普通にホットスポットと呼びます。 Hot Spot の問題に対するパフォーマンスを改善する方法はいくつかありますが、短縮 URL の redirectCount を増やす作業に適した Windows ウイングで問題を解決してみます。

*)講義で行った内容はバッチ処理に近いですが、ウインドウイングと同じアイデアを持っています。 Kafkaを活用するように変えれば、ウインドウイングに簡単に変えることができるでしょう。

受講前の注意

練習環境

  • オペレーティングシステムとバージョン(OS):Windows 10、

  • 使用ツール: Intellij Community 2023.2, Google Chrome


学習資料

選手の知識と注意事項

  • クラウドサービスはVultrというサービスを使用していますが、AWSやGCPなど他のクラウドサービスを使用しても構いません。ただし、他のクラウドサービスを使用する場合は、ファイアウォールの設定など、いくつかの違いがあります。しかし、このような問題は、皆さんが直接検索してみて、体にぶつかってみればもっと多く得られると思います。

  • 従来のパフォーマンステストのレッスンで使用していたArtilleryを使用してパフォーマンステストを実施しています。 nGrinderを活用したパフォーマンステストは付録で簡単に示しています。

  • 受講中に質問がある場合は、質問を残してください。更新する必要がある場合は、更新します。


こんな方に
おすすめです

学習対象は
誰でしょう?

  • 以前の講義者'バックエンドアプリケーションのパフォーマンスをテストする'を受講した人

  • APIのパフォーマンスを向上させるためによく利用される方法について学びたい人

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

  • バックエンドアプリケーションの開発経験

  • パフォーマンステストに興味がある、または試した経験

こんにちは
です。

5,210

受講生

221

受講レビュー

104

回答

4.9

講座評価

9

講座

안녕하세요.

멘토링을 하면서 주니어 개발자들이 어려워 하는 개념들에 대해 어떻게 하면 쉽게 전달할 수 있을지에 대해서 많은 고민을 하고 있는 푸(Foo)라고 합니다.

잘 부탁 드리겠습니다.


이력

  • 2019. 08 ~ 현재 : 카카오 자바 백엔드 개발자

  • 2021. 08 ~ 현재 : programmers 백엔드 데브코스 멘토

  • 2021. 12 ~ 현재 : F-Lab 자바 백엔드 멘토

 

  • 이것이 취업을 위한 백엔드 개발이다 with 자바(링크)

 

기타 이력 및 타 플랫폼 강의들은 아래 GitHub 링크에서 확인할 수 있습니다.

GitHub - https://github.com/lleellee0

カリキュラム

全体

17件 ∙ (2時間 39分)

講座掲載日: 
最終更新日: 

受講レビュー

全体

8件

4.8

8件の受講レビュー

  • fain9301님의 프로필 이미지
    fain9301

    受講レビュー 93

    平均評価 4.8

    5

    100% 受講後に作成

    良い講義ありがとうございます。

    • foo
      知識共有者

      ウォンドクヒさん、講義の完講まで、本当にお疲れ様でした!

  • shameless84649님의 프로필 이미지
    shameless84649

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    性能改善に興味があり、講座を受講したのですが、大変参考になりました。

    • sasas님의 프로필 이미지
      sasas

      受講レビュー 49

      平均評価 4.9

      5

      100% 受講後に作成

      • foo
        知識共有者

        쿄큐큐様、受講後の感想をお寄せいただき、誠にありがとうございます!! 最後まで受講いただき、お疲れ様でした。

    • gihunkim9243님의 프로필 이미지
      gihunkim9243

      受講レビュー 1

      平均評価 4.0

      4

      100% 受講後に作成

      • foo
        知識共有者

        gihun.kimさんの受講をありがとうございました!

    • hanumoka님의 프로필 이미지
      hanumoka

      受講レビュー 48

      平均評価 4.4

      4

      100% 受講後に作成

      次の講義を楽しみにしています。

      • foo
        知識共有者

        hanumokaさんの受講評をいただきありがとうございます。 (_ _)

    ¥4,709

    fooの他の講座

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

    似ている講座

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