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
Recapping Chatwork Scala Journey - ScalaMatsuri...
Search
yoshiyoshifujii
April 15, 2023
Programming
0
2.6k
Recapping Chatwork Scala Journey - ScalaMatsuri2023
ScalaMatsuri 2023
https://scalamatsuri.org/ja/
yoshiyoshifujii
April 15, 2023
Tweet
Share
More Decks by yoshiyoshifujii
See All by yoshiyoshifujii
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / Reliability and Observability from the Perspective of a Product Owner
yoshiyoshifujii
1
1.4k
プロダクトオーナーがFour Keys + 信頼性に思うところ / Product Owners Think of Four Keys + Reliability
yoshiyoshifujii
0
460
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months
yoshiyoshifujii
1
250
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
120
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
800
サマーインターンシップ2019で学生とDDDなScala開発に取り組んだ / Working on DDD and Scala development with students at Summer Internship 2019
yoshiyoshifujii
2
4k
Clean Architecture in Practice @ScalaMatsuri2019
yoshiyoshifujii
9
3.9k
実践 Clean Architecture
yoshiyoshifujii
13
10k
k8sもよく分かってないけどRancherを兎に角さわってみた
yoshiyoshifujii
1
570
Other Decks in Programming
See All in Programming
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
320
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
890
Quine, Polyglot, 良いコード
qnighy
4
640
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
24k
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
280
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
660
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.5k
最新TCAキャッチアップ
0si43
0
140
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
イベント駆動で成長して委員会
happymana
1
320
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
260
CSC509 Lecture 12
javiergs
PRO
0
160
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Building Adaptive Systems
keathley
38
2.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Building an army of robots
kneath
302
43k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Transcript
Chatwork の Scala 近況 ScalaMatsuri 2023 2023年04月15日 Chatwork株式会社
会社概要 2 会社名 Chatwork株式会社 代表取締役CEO 山本 正喜 従業員数 312名(2022年12月末日時点) 所在地
東京、大阪 設立 2004年11月11日
3 一部の先進的な人だけではなく、 世界中で働くあらゆる人が、自分自身の働き方を 常に「一歩先」へと進めていける プラットフォームを提供する すべての人に、 一歩先の働き方を 働くをもっと楽しく、 創造的に 人生の大半を過ごすことになる「働く」という
時間において、ただ生活の糧を得るためだけではなく、 1人でも多くの人がより楽しく、自由な創造性を 存分に発揮できる社会を実現する Vision Mission ミッション・ビジョン
4 コミュニケーションが活性化すると会話がはずむように、 ビジネスの現場を活性化させていくことで、 仕事をもっとワクワク、 心がはずむものに変えていきたい。 ユーザーの働き方を誰よりも深く理解し、 いつでも、どんな場所でも、 やりたいことに集中できる働き方の提供を通して、 ビジネスを活性化させる存在へ。 https://youtu.be/3NHp8caltK0
1人ひとりの成功をテクノロジーの力で導き、ビジネスを活性化させる存在になり たいという想いをブランドムービーで表現しています。ぜひ、ご覧ください。 ブランドムービー「かわる、はじまる Chatwork」 「Chatwork」が実現したい世界
INDEX 目次 Scala(Matsuri) と Chatwork (Chatworkでの) Scala 近況 1 2
5
Scala(Matsuri) と Chatwork 1 CHAPTER 6
2014年 開発合宿 7 - 当時、Chatwork は2011年3月の公開以来、順調にユーザー 数を伸ばし2014年4月時点で世界170カ国42,000社の企業 に導入されるまでに成長していた。 - そんな中、バックエンドで動いているプログラムが今後の運
用において最適ではないのではという懸念 - 合宿の結果、 Scala を採用することに決定 - 静的言語としての保守性とパフォーマンスの高さ (IDEも 充実) - 動的言語からスイッチして成功した実績があること (Twitter、dwangoなど) - AWSはJava SDKが最も充実していた(他言語のSDKが当 時それほどリッチではなかった) - Javaのスキルセットを持つメンバーが何人かいた - PHPエンジニアでも短時間(開発合宿中)でそれなりに 書けるようになった https://c-note.chatwork.com/post/82673710090/dev-camp
2014 ScalaMatsuri 8 - Silver Sponsor - 結構、ノリノリで即決だったみたい - Scala初学者のみなさんが、どんどん吸収していってる様子が当時のチャットに残っていました
2016 ScalaMatsuri 9 - 将軍スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o sbt-awsプラグインを使って簡単デプロイ
- @tototoshi Playソースコード完全マスターへの道 - @yoshiyoshifujii Scalaでドメイン駆動設計に真正面から取り組んだ話 - 忍者スポンサー - @daiksy - @hayasshi_
2017 ScalaMatsuri 10 - スポンサーは…おやすみ - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o ChatWorkのScala採用プロダクト
“Falcon” リリースまでの失敗と成功の歴史 - @yoshiyoshifujii Serverless ArchitectureをScalaで構築するぞ - 忍者スポンサー - @daiksy
2018 ScalaMatsuri 11 - 大名スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o リアクティブDDD実践入門
- @daiksy Scala製システムを3年間運用することで起きた様々なことへの対処 - @crossroad0201 実践ScalaでDDD(改訂版)
2019 ScalaMatsuri 12 - 大名スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o AWS
EKSとAkkaを使ってEvent Sourcingを作るにはどうしたらよいか - @yoshiyoshifujii 実践 Clean Architecture - @s10myk4 悩める開発者に贈る ~サービスの継続的な成長を支える分析設計手法
2020 ScalaMatsuri 13 - 大名スポンサー - 現在、Chatwork社に在籍中の登壇者 - @j5ik2o Scalaで解説する、ビジネスパターンによるモデル駆動設計
2022 ScalaMatsuri 14 - 将軍スポンサー - 現在、Chatwork社に在籍中の登壇者 - @tototoshi Cats
Effect 3とScala 3による純粋関数型プログラミング - @crossroad0201 Akka Persistence Typedにおけるドメインオブジェクトの実装パターン
ScalaMatsuri とのながーーーーいお付き合い 15 - 2014年 から 10年目のお付き合い - 直接的に ScalaMatsuri
で転職しました! という訳ではなくとも - 間接的に Chatwork を知っていただく機会になれているなぁと - 改めて感謝を申し上げます
(Chatworkでの) Scala 近況 2 CHAPTER 16
Scala どうしてる? 17 - Chatwork は、現在も PHP をメインシステムで運用しつつも、クリティカルな部分や新しいサブシステムについては、 Scalaを採用して運用しています -
今後の想定(あくまで想定。必ずしもそうとは言えない。ケースバイケースあり) - PHP - 既存のシステムで引き続き - 既存の資産を使いたいとき - Scala - 書き込み中心のシステムで採用 - 高い稼働率で運用する場合の良い選択肢となり得るだろう - Akka を使いたいとき - Go / Rust - 読み込み中心のシステムで採用 - 一部が落ちても問題ないシステム(充分Webサーバーがスケールできるような状況) - FaaS を使いたいとき
Scala 3 どうしてる? 18 - 使用したいライブラリが全てScala3に対応しているサブシステムで、Scala3にして運用しています。 - 使用用途が限定的で、バッチ実行するアプリケーション - 各チームで判断して
Scala3 を採用しています。 - 使用したいライブラリが対応していないため、見送っている場合もあります。 - ただ、Scala3 は構文とかも大きく様々な記述ができるため、チーム内での擦り合わせが必要だと話しています。 - インデントベース or ブロックベース - インデント 2 or 3 - など
Akka どうしてる? 19 - @j5ik2o が Chatwork Creator’s Note で
Akka のライセンス変更について を書きました。 - Akka 2.7 から Apache License Version 2.0 から Business Source License (BSL) v1.1 に変わりました。 - 非プロダクション環境の開発では無償で使用できますが、本番環境での稼働にはLightbend社の有償ラインセンスが必要に なります。(ただし、年間売上US $25 million以下は無償) - Chatworkさんどうするの? - 既存システム - 弊社のScalaを使ったマイクロサービスのほとんどでAkkaが利用されています。 - 改めて確認すると、それらのシステムでAkka独自機能を使わないと実現できない機能というのはありません。 - Akka を切り離す工数見合いで2つの方針 - 他のスタックへ移行する or 商用ライセンスを契約 - 次期システム - 絶賛開発中の次期システムは、 CQRS/Event Sourcing のために Akka 独自機能を前提に設計しています。 - 商用ライセンスの契約を前提としています。 - Command 側のみで Akka を使っていくことになるため、ライセンス数はそこまでにならない想定をしています。
20 Join Our Team! Chatwork採用 https://recruit.chatwork.com/ 働くをもっと楽しく、創造的 に