Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kazuhiro Sera
PDF, PPTX
30,357 views
Scala が支える医療系ウェブサービス #jissenscala
https://jissenscala.doorkeeper.jp/events/19660
Engineering
◦
Read more
68
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 41
2
/ 41
3
/ 41
4
/ 41
5
/ 41
6
/ 41
7
/ 41
8
/ 41
9
/ 41
10
/ 41
11
/ 41
12
/ 41
13
/ 41
14
/ 41
15
/ 41
16
/ 41
17
/ 41
18
/ 41
19
/ 41
20
/ 41
21
/ 41
22
/ 41
23
/ 41
24
/ 41
25
/ 41
26
/ 41
27
/ 41
28
/ 41
29
/ 41
30
/ 41
31
/ 41
32
/ 41
33
/ 41
34
/ 41
35
/ 41
36
/ 41
37
/ 41
38
/ 41
39
/ 41
40
/ 41
41
/ 41
More Related Content
PDF
多分モダンなWebアプリ開発
by
tak-nakamura
PDF
Scala Warrior and type-safe front-end development with Scala.js
by
takezoe
PDF
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
by
takezoe
PDF
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
by
TIS Inc.
PDF
ネタじゃないScala.js
by
takezoe
PDF
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
by
Kazuhiro Sera
PDF
Scala + Finagleの魅力
by
Kota Mizushima
PDF
実戦Scala
by
Yuto Suzuki
多分モダンなWebアプリ開発
by
tak-nakamura
Scala Warrior and type-safe front-end development with Scala.js
by
takezoe
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
by
takezoe
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
by
TIS Inc.
ネタじゃないScala.js
by
takezoe
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
by
Kazuhiro Sera
Scala + Finagleの魅力
by
Kota Mizushima
実戦Scala
by
Yuto Suzuki
What's hot
PDF
Isomorphic web development with scala and scala.js
by
TanUkkii
PPTX
サーバーレスで ガチ本番運用までやってるお話し
by
Akira Nagata
PDF
OWIN って何?
by
miso- soup3
PPTX
React.js + Reduxで作るSPA
by
Shohei Saeki
PDF
2016/05/01 Visual Studio with Cordova
by
miso- soup3
PDF
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
by
yoshiaki iwanaga
PDF
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
PDF
Swagger 入門
by
Yoshiaki Yoshida
PDF
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
by
Toshiaki Maki
PDF
Service worker が拓く mobile web の新しいかたち
by
Kinuko Yasuda
PDF
Sbtのマルチプロジェクトはいいぞ
by
Yoshitaka Fujii
PDF
One ASP.NET, OWIN & Katana
by
miso- soup3
PPTX
20140518 JJUG MySQL Clsuter as NoSQL
by
Ryusuke Kajiyama
PDF
Jawsug chiba API Gateway
by
Takuro Sasaki
PDF
Skinny Controllers, Skinny Models
by
Kazuhiro Sera
PDF
serverless
by
Akira Otsuka
PDF
ScalaにまつわるNewsな話
by
Yosuke Mizutani
PDF
Servlet と Future の関わり方 #scala_ks
by
Kazuhiro Sera
PDF
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
by
Eugene Yokota
PDF
sbt, past and future / sbt, 傾向と対策
by
scalaconfjp
Isomorphic web development with scala and scala.js
by
TanUkkii
サーバーレスで ガチ本番運用までやってるお話し
by
Akira Nagata
OWIN って何?
by
miso- soup3
React.js + Reduxで作るSPA
by
Shohei Saeki
2016/05/01 Visual Studio with Cordova
by
miso- soup3
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
by
yoshiaki iwanaga
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
Swagger 入門
by
Yoshiaki Yoshida
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
by
Toshiaki Maki
Service worker が拓く mobile web の新しいかたち
by
Kinuko Yasuda
Sbtのマルチプロジェクトはいいぞ
by
Yoshitaka Fujii
One ASP.NET, OWIN & Katana
by
miso- soup3
20140518 JJUG MySQL Clsuter as NoSQL
by
Ryusuke Kajiyama
Jawsug chiba API Gateway
by
Takuro Sasaki
Skinny Controllers, Skinny Models
by
Kazuhiro Sera
serverless
by
Akira Otsuka
ScalaにまつわるNewsな話
by
Yosuke Mizutani
Servlet と Future の関わり方 #scala_ks
by
Kazuhiro Sera
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
by
Eugene Yokota
sbt, past and future / sbt, 傾向と対策
by
scalaconfjp
Similar to Scala が支える医療系ウェブサービス #jissenscala
PDF
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
by
Kazuya Sugimoto
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
by
Toru Kawamura
PPT
Inside mobage platform
by
Toru Yamaguchi
PDF
Jjug springセッション
by
Yuichi Hasegawa
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
by
dcubeio
PDF
クラウド開発に役立つ OSS あれこれ
by
Masataka MIZUNO
PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
by
Daichi Koike
PDF
M3の医療webサービス群を支える基盤技術
by
IKEDA Kiyoshi
PDF
マイクロサービス運用の所感 #m3dev
by
Kazuhiro Sera
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
by
Kazuhiro Sera
PDF
OpenStack概要
by
Akira Yoshiyama
PDF
Skinny Framework 進捗どうですか? #fud_scala
by
Kazuhiro Sera
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
by
Shinpei Ohtani
PDF
CloudStack Ecosystem Day - OpenStack/Swift
by
irix_jp
PDF
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
by
Future Of Data Japan
PDF
プロキシーを使ってテストを楽にする
by
Shunji Konishi
PDF
Spring “BigData”
by
Recruit Technologies
PPTX
Fluxflex meetup 2011 in Tokyo
by
Kyosuke Inoue
PPTX
fluxflex meetup in Tokyo
by
Kyosuke Inoue
PDF
OSSで支えられるライブドアの巨大ログ集計 #nhntech
by
SATOSHI TAGOMORI
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
by
Kazuya Sugimoto
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
by
Toru Kawamura
Inside mobage platform
by
Toru Yamaguchi
Jjug springセッション
by
Yuichi Hasegawa
こんなに使える!今どきのAPIドキュメンテーションツール
by
dcubeio
クラウド開発に役立つ OSS あれこれ
by
Masataka MIZUNO
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
by
Daichi Koike
M3の医療webサービス群を支える基盤技術
by
IKEDA Kiyoshi
マイクロサービス運用の所感 #m3dev
by
Kazuhiro Sera
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
by
Kazuhiro Sera
OpenStack概要
by
Akira Yoshiyama
Skinny Framework 進捗どうですか? #fud_scala
by
Kazuhiro Sera
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
by
Shinpei Ohtani
CloudStack Ecosystem Day - OpenStack/Swift
by
irix_jp
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
by
Future Of Data Japan
プロキシーを使ってテストを楽にする
by
Shunji Konishi
Spring “BigData”
by
Recruit Technologies
Fluxflex meetup 2011 in Tokyo
by
Kyosuke Inoue
fluxflex meetup in Tokyo
by
Kyosuke Inoue
OSSで支えられるライブドアの巨大ログ集計 #nhntech
by
SATOSHI TAGOMORI
More from Kazuhiro Sera
PDF
めんどくさくない Scala #kwkni_scala
by
Kazuhiro Sera
PDF
ScalikeJDBC Tutorial for Beginners
by
Kazuhiro Sera
PDF
Skinny Framework 1.0.0
by
Kazuhiro Sera
PDF
テストを書くのが嫌いな君へ #m3dev
by
Kazuhiro Sera
PDF
Solid And Sustainable Development in Scala
by
Kazuhiro Sera
PDF
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
by
Kazuhiro Sera
PDF
Skinny Framework Progress Situation
by
Kazuhiro Sera
PDF
Beginning Scala with Skinny Framework #jjug_ccc
by
Kazuhiro Sera
PDF
Future on Servlet #scala_ks
by
Kazuhiro Sera
PDF
Scala on Rails #rakutentech
by
Kazuhiro Sera
PDF
歌舞伎座.tech 1 LT - ScalikeJDBC Async & Skinny Framework #kbkz_tech
by
Kazuhiro Sera
PDF
A Test Code Generator for RSpec Users
by
Kazuhiro Sera
PDF
All I learned while working on a Scala OSS project for over six years #ScalaM...
by
Kazuhiro Sera
KEY
プラガブル Play20 Scala
by
Kazuhiro Sera
PDF
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
by
Kazuhiro Sera
PDF
Skinny 2 Update
by
Kazuhiro Sera
PDF
Skinny Meetup Tokyo 2 日本語スライド
by
Kazuhiro Sera
PDF
Contributing to Scala OSS from East Asia #ScalaMatsuri
by
Kazuhiro Sera
PDF
Crucible @ M3, Inc.
by
Kazuhiro Sera
PDF
テストの運用について #m3dev
by
Kazuhiro Sera
めんどくさくない Scala #kwkni_scala
by
Kazuhiro Sera
ScalikeJDBC Tutorial for Beginners
by
Kazuhiro Sera
Skinny Framework 1.0.0
by
Kazuhiro Sera
テストを書くのが嫌いな君へ #m3dev
by
Kazuhiro Sera
Solid And Sustainable Development in Scala
by
Kazuhiro Sera
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
by
Kazuhiro Sera
Skinny Framework Progress Situation
by
Kazuhiro Sera
Beginning Scala with Skinny Framework #jjug_ccc
by
Kazuhiro Sera
Future on Servlet #scala_ks
by
Kazuhiro Sera
Scala on Rails #rakutentech
by
Kazuhiro Sera
歌舞伎座.tech 1 LT - ScalikeJDBC Async & Skinny Framework #kbkz_tech
by
Kazuhiro Sera
A Test Code Generator for RSpec Users
by
Kazuhiro Sera
All I learned while working on a Scala OSS project for over six years #ScalaM...
by
Kazuhiro Sera
プラガブル Play20 Scala
by
Kazuhiro Sera
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
by
Kazuhiro Sera
Skinny 2 Update
by
Kazuhiro Sera
Skinny Meetup Tokyo 2 日本語スライド
by
Kazuhiro Sera
Contributing to Scala OSS from East Asia #ScalaMatsuri
by
Kazuhiro Sera
Crucible @ M3, Inc.
by
Kazuhiro Sera
テストの運用について #m3dev
by
Kazuhiro Sera
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