Submit Search
Upload
Scala が支える医療系ウェブサービス #jissenscala
•
68 likes
•
30,277 views
Kazuhiro Sera
Follow
https://jissenscala.doorkeeper.jp/events/19660
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 41
Download now
Download to read offline
Recommended
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
TIS Inc.
ネタじゃないScala.js
ネタじゃないScala.js
takezoe
Scala + Finagleの魅力
Scala + Finagleの魅力
Kota Mizushima
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
tak-nakamura
実戦Scala
実戦Scala
Yuto Suzuki
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
Recommended
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
TIS Inc.
ネタじゃないScala.js
ネタじゃないScala.js
takezoe
Scala + Finagleの魅力
Scala + Finagleの魅力
Kota Mizushima
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
tak-nakamura
実戦Scala
実戦Scala
Yuto Suzuki
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
Yosuke Mizutani
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
Eugene Yokota
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策
scalaconfjp
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
Swagger 入門
Swagger 入門
Yoshiaki Yoshida
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
yoshiaki iwanaga
Skinny Controllers, Skinny Models
Skinny Controllers, Skinny Models
Kazuhiro Sera
Sbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
Yoshitaka Fujii
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
One ASP.NET, OWIN & Katana
One ASP.NET, OWIN & Katana
miso- soup3
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
Kazuhiro Sera
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
Kinuko Yasuda
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
Jawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
React.js + Reduxで作るSPA
React.js + Reduxで作るSPA
Shohei Saeki
OWIN って何?
OWIN って何?
miso- soup3
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
miso- soup3
serverless
serverless
Akira Otsuka
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA
More Related Content
What's hot
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
Yosuke Mizutani
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
Eugene Yokota
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策
scalaconfjp
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
Swagger 入門
Swagger 入門
Yoshiaki Yoshida
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
yoshiaki iwanaga
Skinny Controllers, Skinny Models
Skinny Controllers, Skinny Models
Kazuhiro Sera
Sbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
Yoshitaka Fujii
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
One ASP.NET, OWIN & Katana
One ASP.NET, OWIN & Katana
miso- soup3
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
Kazuhiro Sera
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
Kinuko Yasuda
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
Jawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
React.js + Reduxで作るSPA
React.js + Reduxで作るSPA
Shohei Saeki
OWIN って何?
OWIN って何?
miso- soup3
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
miso- soup3
serverless
serverless
Akira Otsuka
What's hot
(20)
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
Swagger 入門
Swagger 入門
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Skinny Controllers, Skinny Models
Skinny Controllers, Skinny Models
Sbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
One ASP.NET, OWIN & Katana
One ASP.NET, OWIN & Katana
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
Jawsug chiba API Gateway
Jawsug chiba API Gateway
React.js + Reduxで作るSPA
React.js + Reduxで作るSPA
OWIN って何?
OWIN って何?
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
serverless
serverless
Similar to Scala が支える医療系ウェブサービス #jissenscala
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
Oshitari_kochi
クラウドネイティブ化する未来
クラウドネイティブ化する未来
Keisuke Nishitani
BPStudy20121221
BPStudy20121221
Shinichiro Takezaki
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
アシアル株式会社
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
AWS Blackbelt 2015シリーズ AWS Lambda
AWS Blackbelt 2015シリーズ AWS Lambda
Amazon Web Services Japan
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
ARC-003_モダン Web: たった今と、ほんの少し未来の話
ARC-003_モダン Web: たった今と、ほんの少し未来の話
decode2016
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE
陽平 山口
Oracle APEX概要
Oracle APEX概要
Nakakoshi Yuji
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Yoichi Kawasaki
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
Daisuke Masubuchi
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Chihiro Ito
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
Katsutoshi Nagaoka
Similar to Scala が支える医療系ウェブサービス #jissenscala
(20)
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
クラウドネイティブ化する未来
クラウドネイティブ化する未来
BPStudy20121221
BPStudy20121221
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
AWS Blackbelt 2015シリーズ AWS Lambda
AWS Blackbelt 2015シリーズ AWS Lambda
サーバーレスの今とこれから
サーバーレスの今とこれから
ARC-003_モダン Web: たった今と、ほんの少し未来の話
ARC-003_モダン Web: たった今と、ほんの少し未来の話
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE
Oracle APEX概要
Oracle APEX概要
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
More from Kazuhiro Sera
All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...
Kazuhiro Sera
Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuri
Kazuhiro Sera
Skinny Meetup Tokyo 2 日本語スライド
Skinny Meetup Tokyo 2 日本語スライド
Kazuhiro Sera
Skinny 2 Update
Skinny 2 Update
Kazuhiro Sera
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Kazuhiro Sera
Future on Servlet #scala_ks
Future on Servlet #scala_ks
Kazuhiro Sera
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3dev
Kazuhiro Sera
Scala on Rails #rakutentech
Scala on Rails #rakutentech
Kazuhiro Sera
Solid And Sustainable Development in Scala
Solid And Sustainable Development in Scala
Kazuhiro Sera
Beginning Scala with Skinny Framework #jjug_ccc
Beginning Scala with Skinny Framework #jjug_ccc
Kazuhiro Sera
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
Skinny Framework 1.0.0
Skinny Framework 1.0.0
Kazuhiro Sera
Skinny Framework Progress Situation
Skinny Framework Progress Situation
Kazuhiro Sera
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
Kazuhiro Sera
テストの運用について #m3dev
テストの運用について #m3dev
Kazuhiro Sera
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
Kazuhiro Sera
歌舞伎座.tech 1 LT - ScalikeJDBC Async & Skinny Framework #kbkz_tech
歌舞伎座.tech 1 LT - ScalikeJDBC Async & Skinny Framework #kbkz_tech
Kazuhiro Sera
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
Kazuhiro Sera
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
ScalikeJDBC Tutorial for Beginners
ScalikeJDBC Tutorial for Beginners
Kazuhiro Sera
More from Kazuhiro Sera
(20)
All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...
Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuri
Skinny Meetup Tokyo 2 日本語スライド
Skinny Meetup Tokyo 2 日本語スライド
Skinny 2 Update
Skinny 2 Update
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Future on Servlet #scala_ks
Future on Servlet #scala_ks
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3dev
Scala on Rails #rakutentech
Scala on Rails #rakutentech
Solid And Sustainable Development in Scala
Solid And Sustainable Development in Scala
Beginning Scala with Skinny Framework #jjug_ccc
Beginning Scala with Skinny Framework #jjug_ccc
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Skinny Framework 1.0.0
Skinny Framework 1.0.0
Skinny Framework Progress Situation
Skinny Framework Progress Situation
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
テストの運用について #m3dev
テストの運用について #m3dev
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
歌舞伎座.tech 1 LT - ScalikeJDBC Async & Skinny Framework #kbkz_tech
歌舞伎座.tech 1 LT - ScalikeJDBC Async & Skinny Framework #kbkz_tech
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
ScalikeJDBC Tutorial for Beginners
ScalikeJDBC Tutorial for Beginners
Scala が支える医療系ウェブサービス #jissenscala
1.
Scala が支える 医療系ウェブサービス Kazuhiro Sera
@seratch 2015/02/21 #jissenscala
2.
アジェンダ •サービス要件・チームの現状を紹介 •Web 開発における技術変遷 •Play Framework
導入事例 •実戦での OSS Octoparts 紹介 •Skinny Framework 導入事例 •その他の事例、実践内容 •所感、まとめ
3.
自己紹介 •2009 年から現職、ソフトウェアエンジニア •主に Java/Ruby/Scala
でコードを書く仕事 •基盤開発チーム:全社共通サービス・ライブラ リの開発・保守、AWS 管理等を担当 •ScalikeJDBC プロジェクトリード •Skinny Framework プロジェクトリード •Scalatra, json4s メンテナ(PR 待ってます)
4.
何をやっている会社?
5.
提供サービス(抜粋)
6.
提供サービス(抜粋)
7.
サービス要件の特徴 •m3.com は医療従事者向け会員制サービス •AskDoctors など一般の方向けサービス •サービスは小規模を含めると
50 以上 •システム障害に非常にシビアなサービス •医療現場に近いシステムの場合、安定性が第一 •創業時 (2000 年) から続くサービス、DB •既存のレポート向けデータ集計も考慮した設計
8.
チームの特徴 •事業別で約 10 (変動)
のチームに分かれる •オンプレミスが中心、インフラチームは全チー ムを横断で対応する体制 •新卒はほとんどいない(今年度は 1 名入社) •内製比率を高く保つことにこだわっている •Java が得意なエンジニアが多いが Java/Ruby/ Scala 全てこなすケースも増えている
9.
外国人採用への取り組み http://itpro.nikkeibp.co.jp/article/COLUMN/ 20140411/550091/ 正確には ”ネイティブレベルの 日本語能力を必須としない” という意図
10.
Web 開発の歴史 •創業期: シンプルな
Servlet、XML 中心な Java フレームワーク、Zope の活用 •2000 年代中盤: SAStruts、Spring MVC、 Play1が主流、ほぼ Java のみ •2010 年代: 既存 Java システムに JSON API を提供させて段階的にフロントエンドを刷新、 Rails、Play2、Skinny など Java 以外の言語 での開発が活発に
11.
アプリ開発技術の変遷 創業期 2008 -
2012 2013 - 2015 開発言語 Java Python Java Java Ruby Scala Web フレーム ワーク 独自 MVC Servlet / JSP Zope SAStruts Spring MVC Jersey (JAX-RS) Play Framework 1 etc.. Ruby on Rails Play Framework 2 Skinny Framework Spring MVC ORM JDBC そのまま 独自 JDBC S2JDBC Doma Spring JDBC Hibernate ActiveRecord ScalikeJDBC Skinny ORM Doma
12.
今週リニューアル
13.
m3.com を支える技術 2015 年からの新しい
m3.com は 多くの Scala OSS に支えられています (Play、ScalikeJDBC、Skinny・・・)
14.
新 m3.com 構成 JSON JSON JSON JSON JSON Octoparts
等の詳細は後ほど紹介 トップページ等の レンダリング
15.
導入事例の紹介
16.
Play Framework https://playframework.com/
17.
Play 導入状況 •2.0 リリース時
(2012 年) から一部で導入、 当時から稼働し続けるシステムもある •2014 年∼ Scala がメインの開発チームのリー ドにより Play の導入が増えた •現在、ロンチ前のものも含め 6 件の実績 •必要に応じて Scala/Play にキャッチアップす るエンジニアが増加中
18.
Play 事例(一部) 既存 Java
システム のリニューアル 2 件 長年運用していた Servlet、JSP ベースのシステムを REST API に置き換え。データモデル class の共有、 Swagger 連携、ScalikeJDBC (複雑なクエリ対応、 commons-dbcp2)、Elasticseach (elastic4s)、Sentry (raven-logback)、metrics-play、scaldi-play。 Octoparts (OSS) https://github.com/ m3dev/octoparts 複数のバックエンド API コールを並列実行してまとめ て返すミドルウェア。Netflix が公開している Hystrix を 使ったバックエンド障害検知・切り離し・自動復旧。 キャッシュの設定・キャッシュ削除 API。 Elasticsearch + Kibana 連携でバックエンド API のパ フォーマンスを視覚化。
19.
ライブラリ・運用 •定番で連携しているのは Scaldi、Swagger、 Dropwizard Metrics,
Sentry あたり •基本的には Play が提供する API を使う •DB アクセスは ScalikeJDBC のみ •Octoparts を挟んだシステム間 API 連携 •Jenkins ジョブで sbt universal:package-zip- tarball 実行 & アプリサーバに配布 •Play の daemon は upstart で起動停止
20.
Octoparts http://m3dev.github.io/octoparts/ character design by
@yancharica
21.
Octoparts とは バックエンド API
呼び出しを並列化するだけでなく キャッシュ・障害検知・切り離し・自動復旧まで 賢くやってくれるシステム間連携の仲介役
22.
Hystrix ・Netflix が公開している Java
で実装された OSS ・Octoparts は内部的に Hystrix の Command として バックエンド呼び出しを行う(#run() で)
23.
swagger-ui http://octoparts.herokuapp.com/swagger-ui/ キャッシュの破棄 Part の収集を API
に依頼
24.
API リクエスト例 https://github.com/m3dev/octoparts/blob/develop/models/src/main/ scala/com/m3/octoparts/model/ { "requestMeta": {"id":
“req-12345", "userId": “sera"}, "requests": [{"partId": “beer", "params": [{"key": “beerId”, "value": "1"}]}] } { "responseMeta": {"id": “req-12345", "processTime": 26}, "responses": [{"partId": “beer", "id": “beer”, “contents”: “{”name”: “yonayona”}”, “statusCode”: 200, “mimeType”: “application/json”, ”cookies”: [], "cacheControl": {"noStore": false, "noCache": false}, "warnings": [], "errors": [], "retrievedFromCache": false}] } リクエスト例 レスポンス例
25.
設定の変更 ・Part 単位の各種設定 ・スレッドプールの設定値変更 ・キャッシュグループの設定変更 ・JSON で設定をインポート ・JSON
で設定をエクスポート
26.
Hystrix ダッシュボード ・Hystrix が元々持つ機能 ・Circuit
と Thread Pool の状態を可視化 ・どの Part がどの程度スローダウンして いるか現状がリアルタイムで分かる
27.
ES + Kibana ・Fluentd
経由で Elasticsearch + Kibana で Part 単位の 応答状況を可視化(success/timeout/failure/cached success、応答時間) ・本番環境のリアルタイムな状況把握に利用
28.
Skinny Framework http://skinny-framework.org/
29.
Skinny 導入状況 •Rails、Play2 に次いで採用事例が増えている •Play1
メインだったチームが Skinny に移行 •Scala フリークではなかったチームが選択 •本番稼動 5 件、開発中含め計 6 件の実績 •2014/03 ∼ まだ若いフレームワークだが、特 にトラブルなく本番稼働中
30.
ライブラリ・運用 •普通の Web アプリ要件は標準機能で間に合う •既存の社内
Java ライブラリ(Servlet 関連も 含む)をそのまま組み込む •本番運用は Jenkins で war を社内 Maven リ ポジトリに publish、Tomcat に配る •運用側から見ると従来の Java と全く同じ
31.
Skinny 事例(一部) アンケートサービス Angular.js サーバサイド、Grunt
で JS ビルド。既存の ServletFilter 組み込み。Skinny ORM の複数データソー ス・スキーマ対応。管理 UI は scaffold ベース。 トラッキングデータ 集計基盤 データ分析の ETL(複数 DB・ログファイル)を crond でキックした skinny-task で実行。社内の担当者向け Web UI(設定入力、結果データダウンロード)。各種 メール通知(入力催促・結果通知)。 リアルタイム判定 API サービス 履歴データを元にリアルタイムで判定して結果を返す API サーバ。複数の条件判定を Servlet 上の Future 待 ち合わせで並列化。98 %tile 50ms 応答。管理 UI は i18n 機能で日英対応。
32.
Play と Skinny •事実、Play
は Scala 界隈でのデファクト •後発の動機 = 違う方向性のものを求めた •Skinny MVC は Future 前提の実装を求めな いアプリ要件・開発チームと相性がよい •会社としては常にすべての技術選択に開発チー ムによる主体的な判断を尊重する
33.
Jenkins CI •sbt-scoverage でカバレッジ計測 •scct
の頃に比べればかなり安定している •テスト結果が変わってしまうことがある対策と して、テスト実行とカバレッジ計測のジョブを 分けて、カバレッジ計測のジョブではテスト失 敗を無視…
34.
Zipkin •Twitter 社の OSS
分散トレーシングシステム •2013/10 から本番ボトルネック調査に活用 •自前の ServletFilter を仕込んでデータ取得 •運用が重くならないようにデータは Thrift で 受けて Redis に保存 http://twitter.github.io/zipkin/
35.
画面イメージ ここからドリルダウンして どのメソッドが遅いかまで追える
36.
Typesafe Subscription •Typesafe Subscription
を契約 •Play、Scala、sbt に関する Q&A サービス •Q&A は英語のみ、24 時間以内の回答保証 •何度か利用実績がある
37.
Apache Spark •オンラインでの Apache
Spark Workshop に 参加(Typesafe 社、2 日間) •社内 Tech Talk 等での情報共有 •一部で既存のログ集計・データ分析への応用を 始めている
38.
現場を見て私の所感 •レビューで議論に時間をかけすぎない •定番のコードスタイルは徐々に見えてくる •動作検証のためのテストコードは当然必要 •不要に Scala のハードルを上げないコード •Future
を扱うセンスに長けたメンバの需要 •同期処理が十分速ければよい場合もある •未来のアップデート対応コストへの意識
39.
まとめ •Scala が支える医療系ウェブサービスの話 •3 -
4 年前は一部のメンバだけのもの •今は機が熟して 普通に 使われるものに •Java の会社→Java/Ruby/Scala の会社 •Web 開発に Rails、Play2、Skinny •適材適所で Scala をうまく使おう
40.
一緒にやりましょう at.m3.com/job
Download now