O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio

Confira estes a seguir

1 de 42 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Anúncio

Semelhante a Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版) (20)

Mais recentes (20)

Anúncio

Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)

  1. 1. Spring Boot + Doma + AngularJS で作る ERP(統合基幹業務システム) LINE Developer Meetup in Fukuoka #9 2014/12/20
  2. 2. 自己紹介 • 名前: 松崎 学 • Twitter: matsumana • blog: http://matsumana.info • 所属: 株式会社キャム http://cam-net.co.jp/ • 職業: ソフトウェアエンジニア
 (プログラマ、ITインフラエンジニア)
  3. 3. JJUG CCC 2014 Fall で発表した内容を かいつまんでお話します 元のスライドはこれです http://goo.gl/CGWzRG
  4. 4. 今日お話する事 • 弊社サービスを支える技術の概要
 ・アーキテクチャの歴史
 ・インフラ • Spring Boot, Doma, AngularJSを選んだ理由と
 実際に使ってみた感想
  5. 5. サービスの歴史 フレームワーク編 • 2007∼ Seasar2 (Teeda + S2Dao)
 ※現在も稼働中 • 2012∼ Java EE 6 (JSF + JPA)
 ※現在も稼働中 • 2014∼ Spring Boot + Doma + AngularJS
  6. 6. サービスの歴史 インフラ編 • 2007∼ 国内データセンター • 2013∼ AWS
  7. 7. インフラの 全体概要図
  8. 8. http://goo.gl/cTexvM
  9. 9. • サーバやミドルウェアは必ず障害が発生する前提で
 考えたインフラ構成とアーキテクチャ • 一部に障害が発生してもサービスが止まらないように
 各レイヤーは冗長構成にする • サービスが止まるような障害の場合でも
 出来るだけ早く復旧出来るようにする ポイント
  10. 10. 使用しているソフトウェア • Webサーバ: Apache 2.2 • APサーバ: Seasar2 → Tomcat 6
 Java EE 6 → GlassFish 3.1.2.2
 Spring Boot → Jetty9.2.3.v20140905 • DBサーバ: PostgreSQL 9.3 • 監視: Zabbix 2.0
 EC2インスタンスのOSリソース監視
 APサーバをJMXで監視 (Zabbix Javaゲートウェイ) • CI,デプロイ: Jenkins
  11. 11. ログ収集はFluentd
  12. 12. • AWS (EC2, S3, Route53, SES, RDS, VPC) • GitHub • レスポンスタイム可視化: New Relic • ログ分析: Google BigQuery • 通知: HipChat 使用しているサービス
  13. 13. 次はアプリのお話
  14. 14. 2007年の サービスローンチ時から 開発を続けてきた Seasar2製のアプリですが 数年後には色んな問題が 出てきました
  15. 15. • ローンチ当時は、IE6とIE7のみサポート
 (開発を開始した2007年にはChromeは存在してない) • 2009年にリリースされたIE8で互換表示モード登場
 互換表示でしか動作しないアプリに
 なってしまった・・・ _人人 人人 人人 人人_ > 突然のオワコン感 <  ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
  16. 16. 互換モード以外にもいくつか
 問題が出てきた • 時代遅れ感が出てきたUI
 リッチなWebサイトが世の中に増えて
 顧客の目が肥えてきた • 他社システムと連携するため、
 REST API提供を求められるようになった
  17. 17. 今のアプリを改修するべきか?
 それとも作りなおすべきか?
  18. 18. この時点で画面数は 数百になっていた 改修するよりも 作りなおした方が良い という結論になる
  19. 19. 候補にあがったもの • Java EE 6 (JSF) • Spring • Play Framework 1
  20. 20. その時点で 一番良さそうだった Java EE 6を選択 サポートするブラウザはIE8以上とした (互換表示モードからの脱却)
  21. 21. Java EE 6で開発と 運用をやってみたけど • JPAでハマる事が多い • CDIに@ViewScopedがない
 ※Java EE7で改善されてます • PrimeFacesではGridの列固定が出来なかった
 ※現在のバージョンでは出来ます • JSFで作った画面が重く感じる
 ※画面項目数、サーバスペック、クライアントスペック等によるので
 あくまでも当社比です
  22. 22. 弊社にはJava EEは 合わないのでは?
 (́・ω・`) という気持ちになってきた
  23. 23. Java EE 6で2つの サブシステムを作ったが これ以上増やすのは やめようという結論になり
 次の手を模索する事に
  24. 24. そんなある日
 Spring Bootの存在を知る • JJUG ナイトセミナー 2014/01/21
 @makingさんの
 「Spring4とSpring Bootで作る
 次世代Springアプリケーション」
 http://www.slideshare.net/makingx/spring-4spring-boot-spring-jjug-jsug
  25. 25. 早速試してみた • Springで大変だと聞いていたxml設定ファイルや
 依存関係の複雑さが解決されているし、
 組み込みAPサーバもいい感じ
 • 元々、SpringとDropwizardに注目していたので
 いいとこ取りな感じがとても良い
  26. 26. いくつか候補をあげて 比較検討
  27. 27. 候補1 • Java EE 7(JSF) + Doma
 
 対応する商用アプリケーションサーバが
 未リリースなのでNG
 (リリース時期も未定だった)
  28. 28. 候補2 • Spring Boot (Spring MVC + Thymeleaf) + Doma
 
 JSFの複合コンポーネント的なものがない
 JSPだとカスタムタグがあるが
 Spring BootはJSPを推奨していないみたい
  29. 29. 候補3 • Spring Boot (Spring MVCでAPI) + Doma
 + Backbone.js
 
 JSFの複合コンポーネント的なものがない
 Backbone.jsで構造化は出来るが
 生産性がもっと高いものが良い
  30. 30. 候補4 • Spring Boot (Spring MVCでAPI) + Doma
 + AngularJS
 
 Directiveがカスタムタグの代替にはなりそう
 フロントフレームワークの中では遅い部類だと
 言われているが、試してみるとJSFよりサクサク動く
 ※当社比
  31. 31. Spring Boot, Doma,
 AngularJSを 使ってみた感想など
  32. 32. Spring Boot / Spring • Seasar2とJava EE 6を使ってきたので、
 Springのコンテナ機能(DI, トランザクション, AOPなど) は理解しやすかった • テストライブラリが充実していて良い感じ • 起動が早く快適に開発できる
 ※当社比 • サーバのリソース消費が少ない
  33. 33. Doma • SQLでゴリゴリ書きたい派には、とてもオススメ • 依存ライブラリが無いのも、とてもいい感じ • 便利機能がいっぱい
 ・Java8対応
 ・コンパイル時チェック
 ・SQLファイル内の変数チェック
 ・SQLファイルの存在チェック
 ・ページング (Limit, Offset, 総レコード件数) 他にも沢山あります。詳しくはドキュメントを http://doma.readthedocs.org/ja/latest/
  34. 34. AngularJS • 学習コストは確かに高いが、現在は日本語の書籍も
 あるので、多少は改善されているのかも • Directiveにてデザインと動作を共通化した部品が
 作成でき便利 • ライブラリはangular-bootstrapだけ使う事にした
 (その他で必要なものは自分たちで作る方針にした) • バージョンアップで後方互換性が保たれない
 (弊社の場合はアプリを改修して、バージョンアップ 
 に追従していく方針にした)
  35. 35. 弊社でのAngularJSの 使い方を少しだけご紹介 • Directiveに画面レイアウト情報とデータを与えて
 画面項目を動的に生成
 マルチテナントなアプリなので、
 顧客ごとのカスタマイズをマスタで行えるようにしています
  36. 36. <hoge-form-grid layout-src="layout.formLayout" model-src="model" > </hoge-form-grid> <hoge-table-grid-paging layout-src="layout.tableLayout" model-src="model" > </hoge-table-grid-paging> <hoge-table-grid layout-src="layout.tableLayout" model-src= model"> </hoge-table-grid>
  37. 37. モジュール構成 (概要) • Javaのビルドルーツ: Maven • フロントエンドのタスクツール: Grunt
 maven-grunt-pluginを使ってMavenから起動される
 jshint, karma(Jasmine), concat, cssmin, uglifyを実行する
  38. 38. Spring BootやDomaに 関するブログを いくつか書いてます
  39. 39. • Spring BootでO/Rマッパーの比較 • Spring Bootのコネクションプーリングの比較 • Spring Bootのアプリケーションサーバの比較 • Spring BootでISUCON4予選のJava実装を作った • Spring Bootで現在捌いているリクエスト数を
 取得する • Spring + Domaで実装したアプリのユニットテスト http://matsumana.info/blog/categories/spring/
  40. 40. AngularJSは業務システムに 使えるのか? • 品質的には業務で使っても問題ないと思う • 画面モック(素のHTML)を元にアプリ作成可能 • AngularJSに限った事ではないが、
 現在流行っているフロントフレームワークが
 5年後、10年後も互換性を保った状態で流行っている とは考えにくい
 「動かなくなったらフロントだけ作りなおせば良い」
 という意見はあると思うが、フロントフレームワーク を使わなければ、発生しない不要なコストなのかも
  41. 41. 弊社の今後 • Spring Boot + Doma + AngularJSは
 弊社にはあっているので今後も使い続けるつもり
  42. 42. ご清聴 ありがとう ございました!

×