Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マイクロサービス始めてみよう!
Search
Shu Adachi
June 23, 2023
Technology
1
620
マイクロサービス始めてみよう!
Shu Adachi
June 23, 2023
Tweet
Share
More Decks by Shu Adachi
See All by Shu Adachi
コンテナ入門
shuadachi
0
300
2023/3/24 IBM Cloud + SPSS Modeler Flow でデータ分析をやってみよう!
shuadachi
0
120
IBM Cloud + SPSS Modeler Flow でデータ分析をやってみよう!
shuadachi
0
360
Other Decks in Technology
See All in Technology
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
4
460
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
100
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
140
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
770
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
3
200
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
240
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
190
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
旅先で iPad + Neovim で iOS 開発・執筆した話
zozotech
PRO
0
100
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
380
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
Featured
See All Featured
The SEO Collaboration Effect
kristinabergwall1
0
350
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
110
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Discover your Explorer Soul
emna__ayadi
2
1.1k
Are puppies a ranking factor?
jonoalderson
1
2.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
IBM Tech/Developer Dojo 2023/06/22 マイクロサービス始めてみよう
本セッションについて 概要 いわゆるモダンなアプリケーション開発には不可⽋となっている「マイクロサービス」と、 それを⽀える「コンテナ技術」の概要について解説します。 Cloud Native Computing Foundation(CNCF)が定義するクラウドネイティブな世界へ の⼊り⼝として、サンプルのマイクロサービスアプリケーションを題材に使い、座学だけ でなく実際にデモを交えながらよりリアルに体験いただきます
対象者 マイクロサービスに興味・関⼼のある⽅ マイクロサービスが実際にどの様に動作するかを⾒てみたい・触ってみたい⽅ サンプルアプリをどの様に学習に活⽤すれば良いか知りたい⽅
アジェンダ 1. オープニング 18:00 – 18:05 2. 座学 18:05 –
18:25 3. ハンズオン・デモ 18:25 – 18:55 4. QA・クロージング 18:55 – 19:00 ※時刻は⽬安です。進⾏により多少前後する可能性があります
はじめに 当イベントは⽇本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は、⽇鉄ソリューションズ株式会社の登録商標です。 その他本⽂記載の会社名及び製品名は、それぞれ各社の商標⼜は登録商標です。
⾃⼰紹介 ⽥村 ⼤樹(Daiki Tamura) <所属> ⽇鉄ソリューションズ株式会社 システム研究開発センター <経歴> u 2017-2019
Webシステムに対する負荷試験実⾏や性能分析 u 2020-2022 常駐先でクラウド上での開発運⽤案件(主に基盤担当) u 2023- クラウドネイティブ分野の研究開発(最近はeBPF周りに関⼼) <趣味> オーケストラ(クラリネット)
⾃⼰紹介 ⾜⽴ 嵩(Shu Adachi) <所属> ⽇本アイ・ビー・エム株式会社 テクノロジー事業本部 Customer Success Manager
<経歴> u 2016-2021 製造業のお客様のアカウントSE u 2021- 現職にて弊社戦略製品のCSM <趣味> ゴルフ, 筋トレ, (ちょっとだけ)英会話
⾃⼰紹介 上中⾕ 健(Ken Kaminakaya) <所属> ⽇鉄ソリューションズ株式会社 システム研究開発センター <経歴> u 2016-2019
様々なお客様にてOracle DB導⼊案件を実施 u 2019-2021 オンプレ基盤全体の設計・構築 u 2021- クラウドネイティブ分野の研究開発(主にOpenTelemetry) <趣味> ペット、ゲーム
アンケートやご質問についてのご案内 u 下記から受け付けておりますので、どうぞお気軽にお願いいたします。 u 簡単なアンケートをご⽤意しています。 アクセス確認も兼ねてご覧になってみてください。 https://app.sli.do/event/nh3knVCDCi2cfZSRrkfsUw Event Code︓#dojo_20230622pm
本発表に⾄る背景・モチベーション モダンなアプリケーション開発のことを学びたいが、具体的にどういうふうに作っていけ ば良いか分からない(HelloWorldは分かったから、もう少しだけ踏み込みたい︕) 新しいツールやサービスを試すのに、実践的な題材となるアプリケーションを何か動かし たい オープンソースで公開されているデモアプリケーションを参考にするのが⼿っ取り早いか も︕・・・だが、 たくさんあって、どれを選べばよいのか困る k8s Manifest等は提供されていても、具体的な仕組みまで書かれたドキュメントや⽇本語情報
はなく意外と使い勝⼿に困ることも多々ある 世の中にあるサンプルアプリケーションを少し紐解き、 どんな構造や仕組みになっているのか、まとめてみよう(今回の発表)
おさらい︓クラウドネイティブとは システムの開発・運⽤を、クラウドコンピュー ティング(クラウド)が持つ特徴を最⼤限に活 かして⾏うというアプローチ。 クラウドの持つ特徴︓ オンデマンドに計算資源を利⽤可能 柔軟性・スケーラビリティ 様々な便利な機能(マネージドサービス) → 単なる物理マシンの置き換えではないという
こと これにより、アプリケーションを実⾏する基盤 が頻繁に⼊れ替わることになる。 →「コンテナ」が重要な役割を果たしている ▼ 6/13回: 「クラウドネイティブの旅に出よう」より https://speakerdeck.com/tkhresk/cloudnative-trailmap-kuraudoneiteibunolu-nichu-you-trail- mapnochu-xin-zhe-xiang-kejie-shuo?slide=10
おさらい︓コンテナとは アプリケーションをパッケージングする仕組み、 またはその基盤。 プロセスを、まるでコンテナの中にいるかのよう に、隔離した状態で実⾏するような技術。 例えば、あるプログラムを実⾏するにあたって必 要なライブラリなどの依存関係を含みながら、他 のプロセスやホストOSへの影響を少なく独⽴して 実⾏できるといった意味。 重要な性質︓
⾼速 軽量 可搬性 → どこでも、すぐに、同じように、アプリケー ションをコンテナとして実⾏できる ▼ 6/13回: 「クラウドネイティブの旅に出よう」より https://speakerdeck.com/tkhresk/cloudnative-trailmap-kuraudoneiteibunolu-nichu-you- trail-mapnochu-xin-zhe-xiang-kejie-shuo?slide=17
マイクロサービスとは システムを、複数の独⽴したサービスに分割し、サービス間をAPIによって 連携させて動作するアーキテクチャのこと。 フロントエンド 機能フラグ カート email ⽀払い 配送 レコメンド
不正検出 会計 広告 カタログ 通貨 チェックアウト ⾒積 データベース層 APIサービス層 WEB層 従来の3層アーキテクチャ ※ 本⽇この後に登場するデモアプリのサービスたち マイクロサービス
主な重要ポイント 独⽴にデプロイ可能であること サービス同⼠はネットワークを介してAPIで繋ぐ 1つのサービスは1つのビジネス的な機能に基づいてモデル化されていること (必ずしも技術観点で分割しない) あるサービスに対しては、1つの開発チームが担当すること (1つの開発チームが複数のサービスを⾒るのは問題ない) 技術的アプローチであると同時に、 組織の構造や⽂化も含めての検討が肝要
マイクロサービスの主なメリット① 開発が容易→速いリリース 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:会計 コンテナの軽量性が効いてくる。 ・多種多様な技術を隔離された環境内で独⽴に実⾏でき、 ・軽量なので、同時に複数起動しても余分なリソース消費が少ない
マイクロサービスの主なメリット② 障害範囲の局所化 何かが落ちても部分的には使えて、全く使えないという状況にはなりにくくなる。 データベース層 APIサービス層 WEB層 フロントエンド カート ⽀払い 配送
v1 レコメンド 会計 広告 カタログ チェックアウト レコメンド ︖
マイクロサービスの主なメリット③ スケールの柔軟性 サービス単位に柔軟にリソース増強などが⾏える (特定機能に負荷が集中するようなケースでのリソース効率が良くなる) フロントエンド カート ⽀払い 配送 v1 レコメンド
会計 広告 チェックアウト カタログ データベース層 AP WEB層 AP AP APIサービス層 コンテナの⾼速性が効いてくる ・アプリケーションが⾼速に起動するので、負荷に対しての追従が速い
デメリットや苦労すること 適切なサービス分割⽅法 チーム体制 複雑化(いわゆる「 デススター」) 障害箇所の特定 複数サービスに渡るデータのトランザクション制御 (特に、失敗した場合のロールバック) 開発環境等での再現
関連する技術や概念、⼿法などのキーワード キーワード 概要 ドメイン駆動設計 ドメインの知⾒者とともに反復的にドメインに関する知識をモデル化 してソフトウェアに当てはめる設計⼿法。 フィーチャーフラグ 特定の機能のオン/オフを、コードの変更なく動的に切り替えるように する機構のこと。リリースとデプロイを分離する。 可観測性/オブザーバビリティ
システムの出⼒をもとに内部の状態や挙動を把握することができる性 質。 OpenTelemetry 可観測性を⾼めるために収集するデータ(メトリクス・ログ・トレー ス等)についての標準規格を定義するプロジェクト(*) API Gateway API管理における共通的な関⼼事を担うソフトウェアコンポーネント。 認証・流量制御・マネタイズ・開発者ポータル等の機能を担うことが 多い。 (*) このうち、メトリクスを収集する代表的なOSSであるPrometheusについては、 別回の 「Prometheusを触ってみた」( 7/6(⽊) 18時)も合わせて御覧ください︕ https://ibm-developer.connpass.com/event/287905/
体験する ここからは、マイクロサービス×コンテナ のよりリアルな体験として、 実際にサンプルアプリケーションを題材にしながら、具体的に深掘りしていきます。
本⽇紹介するサンプルアプリケーション GitHubにて公開されている OpenTelemetryのデモベース マイクロサービスベースの 分散システム Docker または Kubernetes で 簡単
にお試し可能 本⽇紹介するデモ環境はKillercoda にて公開中 https://github.com/open-telemetry/opentelemetry-demo
本⽇紹介するサンプルアプリケーション 複数の⾔語を使⽤ 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を介して相互通信
Killercoda(読み︓きらーこーだ) 本⽇デモで使⽤する学習プラットフォーム ブラウザから Linux または Kubernetes の環境に即座にアクセス可能 GitHubアカウントやEメールなどでサインインすることで無料で利⽤可能
起動するマイクロサービスアプリケーション 天体望遠鏡のECサイト 「あなたのお買い物傾向におすすめの商品はこち ら」の様な推奨機能を提供 デモでは上記サービスを停⽌してみて動作を確認 (他のサービスに影響が出るかどうか) サービスに負荷をかけてオブザーバビリティ環境 で負荷状況を可視化 エラーが発⽣した際のトレース⽅法の紹介
demo https://killercoda.com/nssol-kkmnky/scenario/microservice-handson
本⽇のまとめ マイクロサービスの概要とメリット・デメリットについて理解できた マイクロサービスの開発の第1歩としてサンプルアプリケーションの動作を確認 アプリケーションの起動 マイクロサービスのメリット・デメリットの⼀部を体感 どのようなコンポーネントが必要になるのか理解できた Call to Action︕ ぜひハンズオン⼿順をご⾃⾝の⼿で実施して、
周りのエンジニアにもマイクロサービスに触れてみてもらってください。
We are hiring!! u ⽇鉄ソリューションズでは、 クラウドネイティブ技術を⽤いてお客様のDXを推進する仲間を募集中です u ご興味ある⽅は、ぜひお問い合わせください。 弊社⼈事より、ご連絡を差し上げます 採⽤ページ︓
https://www.nssol.nipponsteel.com/recruit/careers/ 「NSSOL キャリア採⽤」
アンケートにご協⼒お願いいたします https://app.sli.do/event/nh3knVCDCi2cfZSRrkfsUw Event Code︓#dojo_20230622pm
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層アーキテクチャ。単⼀の共通仕様に沿って、多数の技術での実装が公開 されている 他にもご存知でしたらコメントください︕