Slide 1

Slide 1 text

EventHub All Rights Reserved. TypeScriptで統一したアーキテクチャ 2024年05月11日

Slide 2

Slide 2 text

EventHub All Rights Reserved. 自己紹介 ● 井関 正也(@iskmsy) ● 株式会社EventHub 取締役CTO ● 2016年2月に代表の山本と一緒に EventHubを創業 ● 開発組織、技術、プロダクトをみてます Chromium、Geckoのコミッターでした。 2

Slide 3

Slide 3 text

EventHub All Rights Reserved. EventHubとは 3 すべてのイベントを一気通貫でラクラク管理 成果を最大化するNO.1イベントプラットフォーム※ ※ 日本マーケティングリサーチ機構調べ「オンラインイベント」に関する競合調査(2021年8月期) EventHubには、イベント開催に必要なあらゆる機能が揃っ ています。優れた操作性に加え、様々な形式のイベントに 利用できるため、多くの企業・団体様に選ばれています。 ● 参加申込から当日開催、開催後アンケートまで対応 ● オンライン、オフライン、ハイブリッド形式全てのイベン トタイプで利用可能 ● ウェビナー・カンファレンスなどを中心に、BtoBイベント の開催実績は1000件以上

Slide 4

Slide 4 text

EventHub All Rights Reserved. 今日お話すること 少人数のエンジニアからスタートしたEventHubでどういった 理由で選定した技術なのかをお話します 4

Slide 5

Slide 5 text

EventHub All Rights Reserved. 技術選定の判断軸 5 組織 技術 製品 市場に受け入れられる製品であり続けるために、技術と組織を変化させていく

Slide 6

Slide 6 text

EventHub All Rights Reserved. 製品-フェーズによって求められる要件 6 PSF(Problem Solution Fit)到達前 顧客課題の発見・解決策の模索。できるだけコードは書かずに検証できるのが理想。 PMF(Product Market Fit) 到達前 最適な顧客体験・プランの構築。将来の拡張性を考慮しつつ個人あたりの開発効率を向上さ せていく。 PMF(Product Market Fit)到達後 更なる顧客拡大のために組織も拡大していきたい。個人あたりの開発効率も維持しつつ組織 拡大させていく。 1 2 3

Slide 7

Slide 7 text

EventHub All Rights Reserved. 組織-開発スタイル 7 ● EventHubは、スクラムによる開発を推進しており、 フルサイクルを前提としています ● 一部のスペシャリストを除いて、エンジニアは原則、 設計から開発・テスト、QA、リリース、O&M、 サポートの全ての工程に携わります Design
 Develop
 QA
 Deploy
 O&M
 Support
 Fullcycle
 Developer


Slide 8

Slide 8 text

EventHub All Rights Reserved. 技術スタック 8 フロントエンド Typescript、React、styled-component バックエンド Typescript、Node.js、NestJS、TypeORM データベース MySQL インフラ AWS(Fargate、Elastic Beanstalk) CI CircleCI モニタリング Sentry、AWS CloudWatch

Slide 9

Slide 9 text

EventHub All Rights Reserved. 選定技術 9 TypeScriptでの統一 フロントエンド・バックエンドを同一リポジトリで管理 NestJSの採用 1 2 3 ● 認知負荷を低減できる ● コード共通化できる ● モジュールを横断した編集がしやすい ● 環境構築やビルドなどのプロセスを統一しやすい ● 実装方法の指針がある ● TypeScript との親和性

Slide 10

Slide 10 text

EventHub All Rights Reserved. TypeScriptでの統一 10 選定理由 ● 言語スイッチによる認知負荷の低減できる ● フロントエンド・バックエンドでコードを共通化できる デメリット ● プロダクト要件に合わせたバックエンドの選定ができない。

Slide 11

Slide 11 text

EventHub All Rights Reserved. Validationの統一 11 ● class-validatorを利用して、フロントエンド・バックエンドにおいて処理を統一 ○ 共通のクラスファイルを作成 ○ フロントエンドでリクエストする際にvalidationを実行 ○ バックエンドでリクエスト内容をvalidationを実行 共通クラス NestJSでのバリデーション フロントエンドでのバリデーション

Slide 12

Slide 12 text

EventHub All Rights Reserved. 選定技術 12 TypeScriptでの統一 フロントエンド・バックエンドを同一リポジトリで管理 NestJSの採用 1 2 3 ● 認知負荷を低減できる ● コード共通化できる ● モジュールを横断した編集がしやすい ● 環境構築やビルドなどのプロセスを統一しやすい ● 実装方法の指針がある ● TypeScript との親和性

Slide 13

Slide 13 text

EventHub All Rights Reserved. エンジニア積極採用中です!!! 13 https://jobs.eventhub.co.jp/ ● Webエンジニア ● セキュリティエンジニア ● QAエンジニア ● インフラエンジニア ● コーポレートエンジニア ● BizOps