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
TypeScriptで統一したアーキテクチャ
Search
iseki
May 11, 2024
Programming
0
540
TypeScriptで統一したアーキテクチャ
iseki
May 11, 2024
Tweet
Share
More Decks by iseki
See All by iseki
TypeScriptで統一したアーキテクチャ
masayaiseki
1
74
QUICの安全性解析と証明
masayaiseki
0
19
WebRTCの安全性証明をしたい
masayaiseki
0
20
Precise study on a SOA-PSA based optical signal regenerator with numerical analysis
masayaiseki
0
24
Other Decks in Programming
See All in Programming
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
色々なIaCツールを実際に触って比較してみる
iriikeita
0
330
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
230
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
4
640
Macとオーディオ再生 2024/11/02
yusukeito
0
370
Better Code Design in PHP
afilina
PRO
0
120
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
190
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
1k
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
880
Arm移行タイムアタック
qnighy
0
310
距離関数を極める! / SESSIONS 2024
gam0022
0
280
Less waste, more joy, and a lot more green: How Quarkus makes Java better
hollycummins
0
100
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Producing Creativity
orderedlist
PRO
341
39k
Six Lessons from altMBA
skipperchong
27
3.5k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Being A Developer After 40
akosma
86
590k
Optimizing for Happiness
mojombo
376
70k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Gamification - CAS2011
davidbonilla
80
5k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Side Projects
sachag
452
42k
Transcript
EventHub All Rights Reserved. TypeScriptで統一したアーキテクチャ 2024年05月11日
EventHub All Rights Reserved. 自己紹介 • 井関 正也(@iskmsy) • 株式会社EventHub
取締役CTO • 2016年2月に代表の山本と一緒に EventHubを創業 • 開発組織、技術、プロダクトをみてます Chromium、Geckoのコミッターでした。 2
EventHub All Rights Reserved. EventHubとは 3 すべてのイベントを一気通貫でラクラク管理 成果を最大化するNO.1イベントプラットフォーム※ ※ 日本マーケティングリサーチ機構調べ「オンラインイベント」に関する競合調査(2021年8月期)
EventHubには、イベント開催に必要なあらゆる機能が揃っ ています。優れた操作性に加え、様々な形式のイベントに 利用できるため、多くの企業・団体様に選ばれています。 • 参加申込から当日開催、開催後アンケートまで対応 • オンライン、オフライン、ハイブリッド形式全てのイベン トタイプで利用可能 • ウェビナー・カンファレンスなどを中心に、BtoBイベント の開催実績は1000件以上
EventHub All Rights Reserved. 今日お話すること 少人数のエンジニアからスタートしたEventHubでどういった 理由で選定した技術なのかをお話します 4
EventHub All Rights Reserved. 技術選定の判断軸 5 組織 技術 製品 市場に受け入れられる製品であり続けるために、技術と組織を変化させていく
EventHub All Rights Reserved. 製品-フェーズによって求められる要件 6 PSF(Problem Solution Fit)到達前 顧客課題の発見・解決策の模索。できるだけコードは書かずに検証できるのが理想。
PMF(Product Market Fit) 到達前 最適な顧客体験・プランの構築。将来の拡張性を考慮しつつ個人あたりの開発効率を向上さ せていく。 PMF(Product Market Fit)到達後 更なる顧客拡大のために組織も拡大していきたい。個人あたりの開発効率も維持しつつ組織 拡大させていく。 1 2 3
EventHub All Rights Reserved. 組織-開発スタイル 7 • EventHubは、スクラムによる開発を推進しており、 フルサイクルを前提としています •
一部のスペシャリストを除いて、エンジニアは原則、 設計から開発・テスト、QA、リリース、O&M、 サポートの全ての工程に携わります Design Develop QA Deploy O&M Support Fullcycle Developer
EventHub All Rights Reserved. 技術スタック 8 フロントエンド Typescript、React、styled-component バックエンド Typescript、Node.js、NestJS、TypeORM
データベース MySQL インフラ AWS(Fargate、Elastic Beanstalk) CI CircleCI モニタリング Sentry、AWS CloudWatch
EventHub All Rights Reserved. 選定技術 9 TypeScriptでの統一 フロントエンド・バックエンドを同一リポジトリで管理 NestJSの採用 1
2 3 • 認知負荷を低減できる • コード共通化できる • モジュールを横断した編集がしやすい • 環境構築やビルドなどのプロセスを統一しやすい • 実装方法の指針がある • TypeScript との親和性
EventHub All Rights Reserved. TypeScriptでの統一 10 選定理由 • 言語スイッチによる認知負荷の低減できる •
フロントエンド・バックエンドでコードを共通化できる デメリット • プロダクト要件に合わせたバックエンドの選定ができない。
EventHub All Rights Reserved. Validationの統一 11 • class-validatorを利用して、フロントエンド・バックエンドにおいて処理を統一 ◦ 共通のクラスファイルを作成
◦ フロントエンドでリクエストする際にvalidationを実行 ◦ バックエンドでリクエスト内容をvalidationを実行 共通クラス NestJSでのバリデーション フロントエンドでのバリデーション
EventHub All Rights Reserved. 選定技術 12 TypeScriptでの統一 フロントエンド・バックエンドを同一リポジトリで管理 NestJSの採用 1
2 3 • 認知負荷を低減できる • コード共通化できる • モジュールを横断した編集がしやすい • 環境構築やビルドなどのプロセスを統一しやすい • 実装方法の指針がある • TypeScript との親和性
EventHub All Rights Reserved. エンジニア積極採用中です!!! 13 https://jobs.eventhub.co.jp/ • Webエンジニア •
セキュリティエンジニア • QAエンジニア • インフラエンジニア • コーポレートエンジニア • BizOps