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

Honoで実現するバックエンド開発のイマ

sugar-cat
October 21, 2024
2.4k

 Honoで実現するバックエンド開発のイマ

sugar-cat

October 21, 2024
Tweet

Transcript

  1. 2 sugar cat(@sugar235711) 社会人3年生 SREもどき パフォーマンスとセキュリティが好き [登壇] Hono Conference 2024

    ・Using Hono in B2B SaaS [ブログ] Honoを使い倒したい2024 HonoとCasbinで認可制御を実装する 登壇者情報 @sugar235711 @sugar-cat7
  2. 11 他言語出身者がバックエンドTSを始める上での大きな参入障壁 ランタイム/バンドラ/パッケージマネージャー/Linter/Formatter….etc  デファクトっぽいものがたくさんある。何を選んで良いのかわからない。 広大なエコシステム 1. バックエンド TS特有の難しさ ホスティングするサービスは? ・Container

    Base ・EKS/ECS… ・Serverless Function ・Lambda… Cloud Providerは? ・AWS/Google Cloud…etc 使用予定のサービスでの ランタイム対応状況 ・distroless等の軽量なイメージで動くの か ・Node以外のランタイムは対応しているの か、バージョンはどうか
  3. 13 他言語出身者がバックエンドTSを始める上での大きな参入障壁 ランタイム/バンドラ/パッケージマネージャー/Linter/Formatter….etc  デファクトっぽいものがたくさんある。何を選んで良いのかわからない。 広大なエコシステム 1. バックエンド TS特有の難しさ ホスティングするサービスは? ・Container

    Base ・EKS/ECS… ・Serverless Function ・Lambda… Cloud Providerは? ・AWS/Google Cloud…etc ・SDK経由?Integrationは必要? 開発者体験を優先したい? ・特殊な実装WebSocketやSSE の実装を楽したい ・OpenAPIやtRPCを使ってス キーマ駆動の開発がしたい 他チームとの共同をし易く、かつ負 債になり得る実装は極力自前で実装 しない
  4. 16 Web標準に基づき、軽量で、高速に、どんなJavaScriptランタイムでも動く Webフレームワーク • 特徴 ◦ 実行環境の差分を吸収できるAdapter ◦ 組み込みでWeb標準のAPIを扱い易くしたHelper ◦

    Webアプリケーション開発で必要になる便利機能を詰め込んだ Middleware ◦ 型システムを生かした開発ができるRPC Modeのサポート Hono概要 1. バックエンドTS特有の難しさ
  5. 17 Web標準に基づき、軽量で、高速に、どんなJavaScriptランタイムでも動く Webフレームワーク • 特徴 ◦ 実行環境の差分を吸収できるAdapter ◦ 組み込みでWeb標準のAPIを扱い易くしたHelper ◦

    Webアプリケーション開発で必要になる便利機能を詰め込んだ Middleware ◦ 型システムを生かした開発ができるRPC Modeのサポート Hono概要 1. バックエンドTS特有の難しさ
  6. 18 他言語出身者がバックエンドTSを始める上での大きな参入障壁 ランタイム/バンドラ/パッケージマネージャー/Linter/Formatter….etc  デファクトっぽいものがたくさんある。何を選んで良いのかわからない。 広大なエコシステム 1. バックエンド TS特有の難しさ ホスティングするサービスは? ・Container

    Base ・EKS/ECS… ・Serverless Function ・Lambda… Cloud Providerは? ・AWS/Google Cloud…etc Honoなら.... ・Web標準にしたがっているので (基本)どのランタイムでも動く →Node/Deno/Bun/Workerd関係ない、 Adapterからランタイム固有のAPIも簡 単に使用できる
  7. 20 他言語出身者がバックエンドTSを始める上での大きな参入障壁 ランタイム/バンドラ/パッケージマネージャー/Linter/Formatter….etc  デファクトっぽいものがたくさんある。何を選んで良いのかわからない。 広大なエコシステム 1. バックエンド TS特有の難しさ ホスティングするサービスは? ・Container

    Base ・EKS/ECS… ・Serverless Function ・Lambda… Cloud Providerは? ・AWS/Google Cloud…etc ・SDK経由?Integrationは必要? 開発者体験を優先したい? ・特殊な実装WebSocketやSSE の実装を楽したい ・OpenAPIやtRPCを使ってス キーマ駆動の開発がしたい Honoなら.... ・ミドルウェアが充実(一般的な Web開発で必要なものは大体ある) ・Helperを使用してStreamや WebSocketを扱える
  8. 21 Honoの構成要素 1. バックエンドTS特有の難しさ Middeware [Built in] ・CORS ・Authentication ・Cache

    [Third Party] ・Zod OpenAPI ・GraphQL Server ・OAuth Providers Adapter ・node ・bun ・deno ・workerd ・edge-light ・fastly ・env Helper ・JWT ・Streaming ・WebSocket ・html ・SSG ・Testing
  9. 37 いわゆるtRPC相当のことができる機能 普通のREST APIを書き、Routeの型をhono/clientに渡すことで、型補完の恩恵を 受けることができる、もちろんZod OpenAPIのREST APIとも併用可能 Hono RPC 2.

    HonoとTypeScriptバックエンド開発 hcをベースにAPIリクエストやレス ポンスを型安全に扱える。 built inの機能なので内部はfetch のラッパー。どこでも動く。
  10. 44 指標となるメトリクスやトレースを収集し、システムの状態を把握できるようにモニタリン グを行う モニタリング 3. 運用について SRE サイトリライアビリティエンジニアリング 図III -1

    サービスの信頼性の階層 
 何の指標を集める? ・APIごとのリクエスト数 ・CPU/Memory使用率 ・API ごとのエラー率 使用する監視ツールは? ・DatadogやNewRelicの監視 Saas ・各クラウドプロバイダーの監視 ツール
  11. 45 指標となるメトリクスやトレースを収集し、システムの状態を把握できるようにモニタリン グを行う モニタリング 3. 運用について SRE サイトリライアビリティエンジニアリング 図III -1

    サービスの信頼性の階層 
 何の指標を集める? ・APIごとのリクエスト数 ・CPU/Memory使用率 ・API ごとのエラー率 使用する監視ツールは? ・DatadogやNewRelicの監視 Saas ・各クラウドプロバイダーの監視 ツール アプリケーションの改修は必要? ・エラースキーマやハンドリング は適切か ・構造化ログはとっているか ・トレースやプロファイリングを しているか
  12. 46 指標となるメトリクスやトレースを収集し、システムの状態を把握できるようにモニタリン グを行う モニタリング 3. 運用について SRE サイトリライアビリティエンジニアリング 図III -1

    サービスの信頼性の階層 
 何の指標を集める? ・APIごとのリクエスト数 ・CPU/Memory使用率 ・API ごとのエラー率 使用する監視ツールは? ・DatadogやNewRelicの監視 Saas ・各クラウドプロバイダーの監視 ツール アプリケーションの改修は必要? ・エラースキーマやハンドリング は適切か ・構造化ログはとっているか ・トレースやプロファイリングを しているか Hono×TypeScriptでどうする?