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.9k
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
技術的負債に立ち向かう、 ひとりから始めるチームづくり / From One to Team: Building Momentum Against Technical Debt
yoshiyoshifujii
1
230
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
1k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
1
270
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / Reliability and Observability from the Perspective of a Product Owner
yoshiyoshifujii
2
1.7k
プロダクトオーナーがFour Keys + 信頼性に思うところ / Product Owners Think of Four Keys + Reliability
yoshiyoshifujii
0
620
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months
yoshiyoshifujii
1
310
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
150
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
920
サマーインターンシップ2019で学生とDDDなScala開発に取り組んだ / Working on DDD and Scala development with students at Summer Internship 2019
yoshiyoshifujii
2
4.3k
Other Decks in Programming
See All in Programming
CSC509 Lecture 11
javiergs
PRO
0
300
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
410
歴史から学ぶ「Why PHP?」 PHPを書く理由を改めて理解する / Learning from History: “Why PHP?” Rediscovering the Reasons for Writing PHP
seike460
PRO
0
140
Vue 3.6 時代のリアクティビティ最前線 〜Vapor/alien-signals の実践とパフォーマンス最適化〜
hiranuma
2
430
What’s Fair is FAIR: A Decentralised Future for WordPress Distribution
rmccue
0
150
Private APIの呼び出し方
kishikawakatsumi
2
830
Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう
lagenorhynque
0
110
CSC509 Lecture 13
javiergs
PRO
0
240
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
2
540
仕様がそのままテストになる!Javaで始める振る舞い駆動開発
ohmori_yusuke
3
1.3k
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
15
48k
AI POSにおけるLLM Observability基盤の導入 ― サイバーエージェントDXインターン成果報告
hekuchan
0
470
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
A Tale of Four Properties
chriscoyier
161
23k
Docker and Python
trallard
46
3.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Code Review Best Practice
trishagee
72
19k
The Cult of Friendly URLs
andyhume
79
6.7k
A designer walks into a library…
pauljervisheath
210
24k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
117
20k
Done Done
chrislema
186
16k
Documentation Writing (for coders)
carmenintech
76
5.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
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/ 働くをもっと楽しく、創造的 に