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.5k
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
440
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months
yoshiyoshifujii
1
250
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
110
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
790
サマーインターンシップ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
560
Other Decks in Programming
See All in Programming
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
10
4.5k
Pinia Colada が実現するスマートな非同期処理
naokihaba
2
150
gopls を改造したら開発生産性が高まった
satorunooshie
8
240
Nuxt UI Pro、NuxtHub、Nuxt Scripts、Nuxtエコシステムをふんだんに利用して開発するコーポレートサイト@Vue Fes Japan 2024
shingangan
3
880
Vitest Browser Mode への期待 / Vitest Browser Mode
odanado
PRO
2
1.7k
JaSST 24 九州:ワークショップ(は除く)実践!マインドマップを活用したソフトウェアテスト+活用事例
satohiroyuki
0
260
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
16
4k
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
240
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
130
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
1
290
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
150
go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
arthur1
10
2.3k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Building Your Own Lightsaber
phodgson
102
6k
Building an army of robots
kneath
302
42k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
504
140k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
290
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
107
49k
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/ 働くをもっと楽しく、創造的 に