Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

越境する情シス:進化可能なアーキテクチャを手に入れる

4,478 views

Published on

レガシー化した既存システムを、どのように改善・発展させていくか。アーキテクチャの設計改善への取り組みの中間報告。

Published in: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

越境する情シス:進化可能なアーキテクチャを手に入れる

  1. 1. 進化可能なアーキテクチャ を手に入れる 有限会社 システム設計 増田 亨 越境アジャイル 2017-10-26 越境する情シス
  2. 2. 逆境
  3. 3. 特別文化遺産 がちがちの岩盤 破砕帯 ハウルの動く城 大きな泥団子 秘伝のたれ … 現状の変更禁止/立ち入り制限 低凝集・密結合 トンネル工事の最大の難所 動きながら壊れていく 代々伝わる運用奥義 岩盤の中で岩が細かく砕け、 隙間に地下水を大量に含んだ 軟弱な地層 構造のない集合体
  4. 4. 逆境との戦い方
  5. 5. アンチパターン
  6. 6. 全面刷新
  7. 7. 全面刷新 膨大なコスト(直接/間接) プロジェクトの長期化/度重なる遅延 前提条件の崩壊 当初目的の喪失 新たな逆境の拡大再生産
  8. 8. 逆境 もう一つの戦い方
  9. 9. アーキテクチャ リファクタリング
  10. 10. アーキテクチャ リファクタリング アーキテクチャの継続的な改善活動 外部インタフェースを維持しつつ内部構造を変更する
  11. 11. アーキテクチャ リファクタリング いつやるか? テストのタイミング 複数の関係者が 活動する時 障害の調査時 バグの修正時 軽微な機能追加 大きな機能変更
  12. 12. アーキテクチャリファクタリング 戦略
  13. 13. 戦略の選択肢 集中 分散 同期 非同期 直列 並列 長期的に大規模にどちらに取り組んでいくか? システムの「インテグレーション」の発想と技法が異なる世界
  14. 14. アーキテクチャリファクタリング 逆境との戦い方
  15. 15. 境界の発見 賞味期限切れの廃棄活動 ビジョン駆動 3カ月サイクル パレートの法則 持続的努力と学習曲線 戦う相手 ほんとうのリーダー 武器と戦術 兵站(ロジスティクス)
  16. 16. 境界の発見 • 構造の手がかりを見つける • IN/OUTのインタフェースを定義できる場所 • 責任分界点(部門や組織の利害の対立点) • テスト可能(手動で) • (理論)インタフェースを境に独自に変更可能 • (現実)密結合と副作用 • (現実を知る)推測ではなく実験で確かめる
  17. 17. 賞味期限切れの廃棄活動 • 余計な仕事を減らす事前準備 – コメントアウトされたコードの削除 – 使っていないコードの削除 – 使っていない区分の廃止 – 使っていないカラムの廃止 – 使っていないデータの削除(アーカイブ) • 賞味切れの発見 – 障害の調査や再現テストする時が絶好のチャンス • 賞味期限切れの廃棄活動を地道に積み重ねる – やる場合とやらない場合の一年後の違い
  18. 18. ビジョン駆動 • あるべき姿を描く • 方向性の明示 • そこに至る道は定義しない • そこに至る期日は定義しない • ビジョンに近づくための実験の奨励 – 実験なので失敗もある – 失敗から学ぶ
  19. 19. 3カ月サイクル • 3カ月ごとに実データでの並行運用を開始する – 実データでの運用=総合テスト • 活動のコントロール – 期限を定める – 予算を固定する – 仕様と品質は実運用に必要なレベルを維持 – スコープ(対象の機能やデータ範囲)を柔軟に縮小・拡大する • 3カ月サイクルの効能 – 中規模の開発のリズム – 業務のサイクルとの整合 • 3カ月ごとにビジョン(あるべき姿)を改定する
  20. 20. パレートの法則で取り組む 20%の 顧客 80%の 売上 20%の商品、20%の機能、20%のデータ項目、… 費用対効果の高い実証実験 8割を手に入れてから、残りの20%への取り組みを議論する
  21. 21. 持続的努力と学習曲線 出典:http://tamafas.tumblr.com/post/88756355771
  22. 22. 戦う相手 • ソースコード • 実データ • 提供中のサービスレベルの維持 • 戦線から離れてアーキテクチャを議論しない – コンサルタント、アーキテクト、上級SE、… – 単価が高いほど役に立たない • パワーポイントでアーキテクチャを判断しない 逆は真ではない…
  23. 23. ほんとうのリーダー • コードに責任を持つ現場の技術者の中で – 技術者仲間に頼られている – 視野が広い – 知識と経験が豊富 – ビジネスの言葉で会話できる(会話する意思がある) • 多くの場合、非公式なリーダー • 候補を見つける • 育成する – 先生につける、学ぶ機会(失敗する機会)を与える – 複数を育てる(相談相手) – 先生役をやらせる • サポートする – 公式なリーダーが非公式なリーダーを尊重する – 非公式なリーダーの見積もり、判断をオーバーライドしない – 非公式なリーダーに余計な仕事をさせない
  24. 24. 武器と戦術 議論の枠組みと共通の語彙 戦術的な基本スキルの習得 実装技術の習熟 実験を繰り返す
  25. 25. 議論の枠組みと共通の語彙 第4部 戦略的な設計 メッセージング パターン
  26. 26. 戦術的な基本スキルの習得 • リファクタリング – プログラムのモジュール構成(クラス構成)のリ ファクタリング – モデルのリファクタリング – データベースのリファクタリング
  27. 27. 実装技術の習熟 • Spring Integration • Spring Boot • AWS 分散・非同期・並列を指向した実装技術群 パワーポイントではなく、 実際に動くコードで 実験し、判断し、展開する 小さな実験→実戦投入→横展開をシームレスに実現可能
  28. 28. 実験を繰り返す • 実験環境という財産 – 実データ – できれば疑似環境で – できれば並行運用で • 小さな実験 – 失敗を繰り返す – 知見を蓄積する – 持続的な努力と学習曲線
  29. 29. 兵站(ロジスティクス) • 長く複雑な戦いを後方から継続的に支援する • 人材 • 食料、機材、弾薬 • 訓練 • 休暇 • 督励 • 慰問
  30. 30. アーキテクチャリファクタリング 逆境との戦い方
  31. 31. 境界の発見 賞味期限切れの廃棄活動 ビジョン駆動 3カ月サイクル パレートの法則 持続的努力と学習曲線 戦う相手 ほんとうのリーダー 武器と戦術 兵站(ロジスティクス)

×