Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マイクロサービス始めてみよう!

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 マイクロサービス始めてみよう!

Avatar for Shu Adachi

Shu Adachi

June 23, 2023
Tweet

More Decks by Shu Adachi

Other Decks in Technology

Transcript

  1. アジェンダ 1. オープニング 18:00 – 18:05 2. 座学 18:05 –

    18:25 3. ハンズオン・デモ 18:25 – 18:55 4. QA・クロージング 18:55 – 19:00 ※時刻は⽬安です。進⾏により多少前後する可能性があります
  2. はじめに 当イベントは⽇本IBMおよび⽇鉄ソリューションズの有志エンジニアによって企画された勉強会です。 クラウドネイティブやマイクロサービスなどのテーマを中⼼に、今後も⾊々な勉強会・イベントを開催する予定です 本勉強会の内容は、エンジニア個⼈の⾒解であり、所属する企業の公式⾒解ではありません。 セッション中はマイクミュートでの参加にご協⼒お願いします。 本イベントは録画してアーカイブ公開する予定ですので、その点ご了承ください。 本発表で利⽤している製品の名称およびロゴは下記の組織または企業の商標となります。 CNCFはCloud Native Computing

    Foundationの登録商標です。 Kubernetes, k8s, Prometheus, OpenTelemetryおよびそれらのロゴはLinux Foundationの登録商標です。 Docker および Dockerロゴは、⽶国および/またはその他の国におけるDocker, Inc.の商標または登録商標です。 KillercodaはKLLR GmbHの登録商標です。 LinuxはLinus Torvaldsの⽇本およびその他の国における商標または登録商標です。 NS(ロゴ)、NSSOL、NS Solutionsは、⽇鉄ソリューションズ株式会社の登録商標です。 その他本⽂記載の会社名及び製品名は、それぞれ各社の商標⼜は登録商標です。
  3. ⾃⼰紹介 ⽥村 ⼤樹(Daiki Tamura) <所属> ⽇鉄ソリューションズ株式会社 システム研究開発センター <経歴> u 2017-2019

    Webシステムに対する負荷試験実⾏や性能分析 u 2020-2022 常駐先でクラウド上での開発運⽤案件(主に基盤担当) u 2023- クラウドネイティブ分野の研究開発(最近はeBPF周りに関⼼) <趣味> オーケストラ(クラリネット)
  4. ⾃⼰紹介 ⾜⽴ 嵩(Shu Adachi) <所属> ⽇本アイ・ビー・エム株式会社 テクノロジー事業本部 Customer Success Manager

    <経歴> u 2016-2021 製造業のお客様のアカウントSE u 2021- 現職にて弊社戦略製品のCSM <趣味> ゴルフ, 筋トレ, (ちょっとだけ)英会話
  5. ⾃⼰紹介 上中⾕ 健(Ken Kaminakaya) <所属> ⽇鉄ソリューションズ株式会社 システム研究開発センター <経歴> u 2016-2019

    様々なお客様にてOracle DB導⼊案件を実施 u 2019-2021 オンプレ基盤全体の設計・構築 u 2021- クラウドネイティブ分野の研究開発(主にOpenTelemetry) <趣味> ペット、ゲーム
  6. おさらい︓クラウドネイティブとは システムの開発・運⽤を、クラウドコンピュー ティング(クラウド)が持つ特徴を最⼤限に活 かして⾏うというアプローチ。 クラウドの持つ特徴︓ オンデマンドに計算資源を利⽤可能 柔軟性・スケーラビリティ 様々な便利な機能(マネージドサービス) → 単なる物理マシンの置き換えではないという

    こと これにより、アプリケーションを実⾏する基盤 が頻繁に⼊れ替わることになる。 →「コンテナ」が重要な役割を果たしている ▼ 6/13回: 「クラウドネイティブの旅に出よう」より https://speakerdeck.com/tkhresk/cloudnative-trailmap-kuraudoneiteibunolu-nichu-you-trail- mapnochu-xin-zhe-xiang-kejie-shuo?slide=10
  7. おさらい︓コンテナとは アプリケーションをパッケージングする仕組み、 またはその基盤。 プロセスを、まるでコンテナの中にいるかのよう に、隔離した状態で実⾏するような技術。 例えば、あるプログラムを実⾏するにあたって必 要なライブラリなどの依存関係を含みながら、他 のプロセスやホストOSへの影響を少なく独⽴して 実⾏できるといった意味。 重要な性質︓

    ⾼速 軽量 可搬性 → どこでも、すぐに、同じように、アプリケー ションをコンテナとして実⾏できる ▼ 6/13回: 「クラウドネイティブの旅に出よう」より https://speakerdeck.com/tkhresk/cloudnative-trailmap-kuraudoneiteibunolu-nichu-you- trail-mapnochu-xin-zhe-xiang-kejie-shuo?slide=17
  8. マイクロサービスとは システムを、複数の独⽴したサービスに分割し、サービス間をAPIによって 連携させて動作するアーキテクチャのこと。 フロントエンド 機能フラグ カート email ⽀払い 配送 レコメンド

    不正検出 会計 広告 カタログ 通貨 チェックアウト ⾒積 データベース層 APIサービス層 WEB層 従来の3層アーキテクチャ ※ 本⽇この後に登場するデモアプリのサービスたち マイクロサービス
  9. マイクロサービスの主なメリット① 開発が容易→速いリリース 1つのサービスが1チームに閉じているので、意思決定やコミュニケーション等のオーバーヘッドが少ない 機能開発的な視点でも、インフラ・アプリという視点でも ただし、API仕様の互換性担保には気を配らないといけない サービス単位で適材適所に様々な技術選択が可能 ある機能追加に対して、変更を加える対象サービスが1つで済む サービス単位でリリース頻度を制御できる フロントエンド カート

    ⽀払い 配送 v1 レコメンド 会計 広告 カタログ チェックアウト Typescript Node.js Rust Go .NET Go Java Python Go 配送 v2 dev dev dev SRE SRE Team:配送 dev dev dev SRE SRE Team:会計 コンテナの軽量性が効いてくる。 ・多種多様な技術を隔離された環境内で独⽴に実⾏でき、 ・軽量なので、同時に複数起動しても余分なリソース消費が少ない
  10. マイクロサービスの主なメリット③ スケールの柔軟性 サービス単位に柔軟にリソース増強などが⾏える (特定機能に負荷が集中するようなケースでのリソース効率が良くなる) フロントエンド カート ⽀払い 配送 v1 レコメンド

    会計 広告 チェックアウト カタログ データベース層 AP WEB層 AP AP APIサービス層 コンテナの⾼速性が効いてくる ・アプリケーションが⾼速に起動するので、負荷に対しての追従が速い
  11. 関連する技術や概念、⼿法などのキーワード キーワード 概要 ドメイン駆動設計 ドメインの知⾒者とともに反復的にドメインに関する知識をモデル化 してソフトウェアに当てはめる設計⼿法。 フィーチャーフラグ 特定の機能のオン/オフを、コードの変更なく動的に切り替えるように する機構のこと。リリースとデプロイを分離する。 可観測性/オブザーバビリティ

    システムの出⼒をもとに内部の状態や挙動を把握することができる性 質。 OpenTelemetry 可観測性を⾼めるために収集するデータ(メトリクス・ログ・トレー ス等)についての標準規格を定義するプロジェクト(*) API Gateway API管理における共通的な関⼼事を担うソフトウェアコンポーネント。 認証・流量制御・マネタイズ・開発者ポータル等の機能を担うことが 多い。 (*) このうち、メトリクスを収集する代表的なOSSであるPrometheusについては、 別回の 「Prometheusを触ってみた」( 7/6(⽊) 18時)も合わせて御覧ください︕ https://ibm-developer.connpass.com/event/287905/
  12. 本⽇紹介するサンプルアプリケーション 複数の⾔語を使⽤ https://opentelemetry.io/docs/demo/architecture/ ⾔語 サービス .NET カート C++ 通貨 Erlang/Elixir

    機能フラグ Go 会計, チェックアウト, 商品カタログ Java 広告 JavaScript フロントエンド, ⽀払い Kotlin 不正検出 PHP ⾒積 Python レコメンド Ruby Eメール Rust 配送 https://opentelemetry.io/docs/demo/ アーキテクチャ 左記のサービスがgRPC, HTTP, TCPを介して相互通信
  13. Appendix: 世の中にあるオープンソースなサンプルアプ リケーションたち URL 特徴 FreeCodeCamp 有名所 Todoアプリアプリケーション Java python-patterns

    Pythonのデザインパターン集 App Building Workshop C#のアプリ製作ワークショップ ASP.NET Core for Beginners .net coreのSPAアプリ GoogleCloudPlatform/micro service-demo マイクロサービス microservices- demo/microservices-demo マイクロサービス(最近はあまりメンテされていなさそう) open- telemetry/opentelemetry- demo マイクロサービス https://www.realworld.how / 3層アーキテクチャ。単⼀の共通仕様に沿って、多数の技術での実装が公開 されている 他にもご存知でしたらコメントください︕