ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

「よくある業務開発の自動化事情」を聞いてきた!

11月28日にJJUG CCC 2015 Fallに行ってきた話のつづき。




■How to speed up your application using JCache

・JSR107
・ヘーゼルキャストの関心高いけど、今日はJCacheの話
・キャッシング入門
 キャッシュ:ナノセカンドで返ってきたりする
 特色①パフォーマンス②オフロード③スケーラブルでないところにスケーラビリティ
  →需要が急に増える場合、ヘーゼルキャストを入れて早めたり

・いつキャッシュを使うか
 データを2回以上使うなら価値あり
 キャッシングが有効になるところ
  ①Webアプリ(突然需要上がる)
  ②ネットワークにまたがるシステム
  ③データが複雑、オブジェクトが入り組んでいる
  ④オブジェクトがグラフ構造


・データベースキャッシング

・キャッシュ:RAMに構築
  Java:分散キャッシュ→ヒープストア:ガベージコレクションの制約
  (メモリの三角形の)上のほうは1つのマシン上で考えている
            下のほうは分散→クラスタ組んでいるのを想定

・アムダールの法則:複数プロセス実行時、パフォーマンスを高めるには、
          ボトルネックを早くしたほうがよい

・キャッシュの効率
 あまり統計データ持っていない
 キャッシュ効率高い:オフロードできている
  効率での考慮→レファレンスデータ、データ変更頻度、頻繁に使われるデータ

・分散キャッシュ

・オブジェクトのコピー:安全性に問題
  →イミュータブルなデータなら安全
  問題→一貫性、整合性、マルチコンシステンシー、Javaメモリーモデル、
     Eventual Consistency、weak Consistency、atomic oparation

・Javaキャッシング
 JDBCみたいなものを目指している
 完了した
 Spring 4.0サポート、4.1拡張
 Spring Boot 使ってくれます
 実装したもの:長いリストになっている
 Mavanでの設定

・コンセプト JSR107
 出発点 Map VS Cache API どちらもキーバリュー
 Jcache サービスローダー キャッシングプロバイダを見つける
    キャッシュマネージャー DBに相当
    キャッシュ  キーバリュー

 ジェネリックを使っている
 かぎとなるAPIは、putとget(put;値返さない)

・Spring
 アノテーションで操作できる

・Jcacheのインプリは6種くらいある
 Jar入れ替えなどでOK
 当然ヘーゼルキャスト使ってね!




■よくある業務開発の自動化事情

・広いままでもできなくはないけど AAA(A* Automation Alliance)
 キレイな事例紹介で終わる

・今回はJava,Webアプリケーション、受託開発、スキル会社バラバラを想定
 5個ぐらいの現場で会ったこと

・自動化の目的→早く帰ること
 2種類
  手作業とまったく同じものを出力する自動化
  手作業でできないことを自動化する

・対象はすべての活動

・ビッグバン自動化

【自動化事情】

・環境構築
  開発、検証、本番
 課題
   ・手順書ベース(更新されていない)
   ・複数バージョン動作させたいとき
 解決
   ・プロビジョニングツール
   ・仮想化技術、コンテナ技術
 使ってみたところ
   ・クリーンすぎて困った→テストつくるとき
 現実
   ・プロジェクトだとコスト重い
   ・現場に浸透していない。その人だけ使えても・・・
   ・重い
   ・組織の壁

・構成管理
 前提
   ・CVSはあたりまえ、SVNかGit使ってる
   ・Gitは気合いるけど、多くなってきた
   ・検証済みマージ
   ・リポジトリはNexus/とArtifactory
 現実
   ・コミットしてはいけないファイルをコミットしてしまう
   ・ローカル用の設定変更
   ・Gitはトラブルに弱い→たまに事故
   ・Mavenのリリースバージョン

・ビルド
   ・antで解決していた
 課題
   ・依存関係
 解決
   ・Gradleなど
 現実
   ・ビルドツールは使いこなされていない
   ・mavenの場合、pom.xmlとかは特定の人しかわからない

・CI
   ・Jenkins
 課題
   ・ワンクリックデプロイ
   ・CIサーバーは市民権をええいる(ビルドサーバー)
 現実
   ・属人性の排除はできていない。CI職人へ
   ・ワンクリックデプロイは組織の壁

・コーディング
   ・設計書から自動生成だ
    →イマドキのフレームワークなら生成する必要ないだろう
     IDEによる自動記述→IDEを使い倒そう
 課題
   ・大量のソース書く
 解決
   ・パワフルなフレームワーク
   ・JVM言語
 現実
   ・昔自動生成した、ソースコードは?
   

・テスト
   ・自動テストはよく話題に上がる
    システム自動化カンファレンス
   ・JUnitなテスト Excelマクロで生成:無駄に量が多い
   ・JUnit5
   ・ブラウザ使うやつ: selenium
 課題
   ・自動化して工数減らす
 現実
   ・自動化しても工数減らない
   ・実行には時間がかかる

【自動化観察日記】
1章
  自動化担当召喚
2章
  即時対応したい
  →パトランプなど
  順風満帆
3章
 崩壊の足音
  担当者変更
 黙らされたCIサーバー

テスト自動化 8つの誤解:ググって調べる

自動化ハイ
げんかつぎ

【まとめ】
・自動化は
  高速道路はあるが
  突っ走ったら死ぬ
  適当に降りて迷宮に入ること