縛りプレイでも? "継続的デリバリ主義(ズム)"

60
継続的デリバリー(CD)の話を聞いてみよう 縛りプレイでも? "継続的デリバリ主義" Ver 1.0

Upload: miura-kazuhito

Post on 28-May-2015

950 views

Category:

Lifestyle


1 download

DESCRIPTION

DeveLove関西 継続的デリバリー(Continuous Delivery)のお話を聞いてみよう (2014/05/21) にて発表した資料です。(約20分) 申し込みサイト : http://devlove-kansai.doorkeeper.jp/events/10612

TRANSCRIPT

Page 1: 縛りプレイでも? "継続的デリバリ主義(ズム)"

継続的デリバリー(CD)の話を聞いてみよう

縛りプレイでも? "継続的デリバリ主義"

ズ ムズ ムVer 1.0

Page 2: 縛りプレイでも? "継続的デリバリ主義(ズム)"

お断り

この発表は「極めて個人的な見解」に基づいています。

●「思いこみ」「妄想」「希望」等、多くふくまれています。●世に発表されている「正解と思しきもの」から逸脱している可能性があります。●そこで「自分に役に立つエエカンジのモノ」を「自己責任」で感じ取ってください。

肩の力をぬいてリラッ クスで見てください〜

Page 3: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Part.1

茶番(オレはなぜココに居るのか?)

Page 4: 縛りプレイでも? "継続的デリバリ主義(ズム)"

自己紹介

三浦 一仁(ミウラ カズヒト)@kazuhito_m

Page 5: 縛りプレイでも? "継続的デリバリ主義(ズム)"

自己紹介

三浦 一仁(ミウラ カズヒト)@kazuhito_m

”なんで来たん?”氏

Page 6: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Q&Aその1

Q.今日はなんのために?

A.そうすね、自分の大好きな「継続的デリバリー」

というものを知って欲しくて…

Page 7: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Q&Aその2

Q.では「継続的デリバリー」についてはお詳しい?

A.いや勉強中なのですが…スゴイ概念だと憧れてます!

(出来るとは言っていない)

Page 8: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Q&Aその3

Q.で、今お仕事では何を?

A.…いやっ、あの……PrintScreen押して、ExcelにCtrl+Vするという…お仕事を…

Page 9: 縛りプレイでも? "継続的デリバリ主義(ズム)"

不徳のいたすところっ…!

くやしいですッ!

※完全に自分のせいです

Page 10: 縛りプレイでも? "継続的デリバリ主義(ズム)"

もう少し細かく言うと…

ソフトウェア

インフラチーム

ビジネス要件からの依頼

何かをどっかに入れてくれ依頼

環境のお守り

ポートやOS以下の操作

ポートやOS以下の操作

ポート開けとかハード周りの

依頼

本番への操作

テスト環境群 本番環境

・手順書書き・リリースのリハーサル(という画面コピー取り)

・資材用意・引き継ぎ…の毎日

テスト系 本番系

インフラっぽい名前のトコに居ながら…

継続的デリバれない日々

Page 11: 縛りプレイでも? "継続的デリバリ主義(ズム)"

近況の話を…

最近、よー怒られるんすよね…

● 経緯はどうでもエエねん!

● おまえは…すーぐそうやってモノゴトを単純化したがる

● 「楽したい」「さぼりたい」言い過ぎ…

Page 12: 縛りプレイでも? "継続的デリバリ主義(ズム)"

近況の話を…

最近、よー怒られるんすよね…

● 経緯はどうでもエエねん!

● おまえは…すーぐそうやってモノゴトを単純化したがる

● 「楽したい」「さぼりたい」言い過ぎ…

いつか正当化して

怒られんようにしたい…

Page 13: 縛りプレイでも? "継続的デリバリ主義(ズム)"

なにを主張しに来たんや…

すみません、完全に愚痴

でした!

Page 14: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Part.2

そうだ!「継続的デリバリー」

の話をしよう…

Page 15: 縛りプレイでも? "継続的デリバリ主義(ズム)"

思いの丈から

継続的デリバリー

良いですね!大好きです!

Page 16: 縛りプレイでも? "継続的デリバリ主義(ズム)"

でも何で学ぶのかなー?

バイブルといえば…

「継続的デリバリー」本

Page 17: 縛りプレイでも? "継続的デリバリ主義(ズム)"

無駄なところは無いのだけど

とは言えど…

ちと厚い…

Page 18: 縛りプレイでも? "継続的デリバリ主義(ズム)"

いや、サボりたいわけじゃなくて…

なんとか持ち歩かずに済む

”何か”を身につけたい…

Page 19: 縛りプレイでも? "継続的デリバリ主義(ズム)"

ちょっと乱暴ですが…

例えば中学数学なら…

「意味」を理解していたなら、解法を導き出しながら答えに着ける

問題

答え

公式公式

「公式」がわからなくても、

問題

答え

Page 20: 縛りプレイでも? "継続的デリバリ主義(ズム)"

これを継続的デリバリーで…

同じ結果に至ることの出来るマインド的”何か”を得て行きたい!

現場

イケてる現場

現場

イケてる現場

バイブルがなくても…

何か

Page 21: 縛りプレイでも? "継続的デリバリ主義(ズム)"

マインドつってもね…

散ってる要素を取らまえると…

反復可能プロセス

全てVer管理に

依存関管理

設定管理

環境管理

CI

デプロイメントPL

テスト戦略

自動化手法スクリプト

手作業廃絶

非機能要件テスト自動受け入れテスト

サーバプロビジョニング仮想化 クラウド

データベース管理

DBマイグレーション

データ管理メトリクスライフサイクルの意識

トレーサビリティ

VCSの運用/戦略

Page 22: 縛りプレイでも? "継続的デリバリ主義(ズム)"

整理・抽象化

少しつきつめると…

環境の自動生成/使い捨て

リリース仕組最初に/最初から

テスト自動化

デプロイメントPL

環境構成管理化

CIワンクリックデプロイ

構成管理

Page 23: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やり過ぎると…

三行でまとめてくれ…とかすると

物的リソースの柔軟性確保

人的・時間的な負荷分散

極限までの合理化

専門への集中/不要ノイズ除去

Page 24: 縛りプレイでも? "継続的デリバリ主義(ズム)"

ちょうど良い頃合いで…

これくらいを頭においておくと本が無くともいける?

環境の自動生成/使い捨て

リリース仕組最初に/最初から

テスト自動化

デプロイメントPL

環境構成管理化

CIワンクリックデプロイ

構成管理

Page 25: 縛りプレイでも? "継続的デリバリ主義(ズム)"

これを頭においておけば…

現場イケてる現場

考え方や

概念

それを使えば…

答えが出せる

Page 26: 縛りプレイでも? "継続的デリバリ主義(ズム)"

現場イケてる現場

継続的デリバリ

主義

今日この場ではこう呼びましょう!

ズ ム

Page 27: 縛りプレイでも? "継続的デリバリ主義(ズム)"

なにはともあれ…

「継続的デリバリ主義」を駆使して、

自分の「目の前の世界」

に役立てて見よう!

ズ ム

Page 28: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Part.3

実践(とあるプログラマーの場合)

Page 29: 縛りプレイでも? "継続的デリバリ主義(ズム)"

最近の傾向と対策的な…

このごろはどの現場でも…

あっ、言い過ぎました。直近、3現場ほどで…

1.環境のエキスパンド– 急に膨大に必要に、逆に全部要らなくなったり– 物理用意出来ても、動かせるまで大分かかったり

2.リリースが一大事– 専門「リリースチーム」あったり、毎日多忙だったり– 「自動?なにそれ美味しいの?」だったり…

が、問題になることが多い気がします。

Page 30: 縛りプレイでも? "継続的デリバリ主義(ズム)"

今日話すのはこっち!

このごろはどの現場でも…

あっ、言い過ぎました。直近、3現場ほどで…

1.環境のエキスパンド– 急に膨大に必要に、逆に全部要らなくなったり– 物理用意出来ても、動かせるまで大分かかったり

2.リリースが一大事– 専門「リリースチーム」あったり、毎日多忙だったり– 「自動?なにそれ美味しいの?」だったり…

が、問題になることが多い気がします。

Page 31: 縛りプレイでも? "継続的デリバリ主義(ズム)"

考案の自分語を言いたいだけちゃんかと…

「継続的デリバリ主義」で現場を組み立てる際には…

● リリースの仕組を最初に考える● リリースの仕組を最初から入れておく● モダナイズ(近代化)されたツールを使う● 同じ仕組を使い、育てていく

などが定石ですが…

Page 32: 縛りプレイでも? "継続的デリバリ主義(ズム)"

避けられないけど、残酷物語も多く…

でも、自分もそうですが…

●客先常駐「人●り」プログラマー● 自社開発の火消し(ヘルプ)

などやっていると、相対するのは…

「既存」のリリースプロセス

のリリース仕組

Page 33: 縛りプレイでも? "継続的デリバリ主義(ズム)"

ついにオレにも…

ソフトウェア

インフラチーム

ビジネス要件からの依頼

何かをどっかに入れてくれ依頼

環境のお守り

ポートやOS以下の操作

ポートやOS以下の操作

ポート開けとかハード周りの

依頼

本番への操作

テスト環境群 本番環境テスト系 本番系

〜お上の声〜

”良くして”(「リリースの方法」

を改善しといての意)

Page 34: 縛りプレイでも? "継続的デリバリ主義(ズム)"

では対象は?

テスト環境本番環境

Webサーバは典型的な

LAMP環境

ソースはPHPのWebアプリ

(一般と管理サイトがある程度)

リリースは「ファイル置き換え」程度

(場合によってはWebサーバ再起動)

Page 35: 縛りプレイでも? "継続的デリバリ主義(ズム)"

あれっ?

● 結構シンプルなんじゃね?

● 実際は…– 事故起きまくり

●サーバまちがえ、一部ファイル差分、等– リリース時間・人件費かかりまくり

● 少なくとも、二人ずつ3時間程度● ファイル数、複雑性により倍加

Page 36: 縛りプレイでも? "継続的デリバリ主義(ズム)"

おもわず突っ込まざるを得ない…

● 結構シンプルなんじゃね?

● 実際は…– 事故起きまくり

●サーバまちがえ、一部ファイル差分、等– リリース時間・人件費かかりまくり

● 少なくとも、二人ずつ3時間程度● ファイル数、複雑性により倍加

なんでやねん!「リリースを一大事」

どころか

「大事件」にしとるやないか…

Page 37: 縛りプレイでも? "継続的デリバリ主義(ズム)"

リリース作業は一体…

テスト環境本番環境

ソース差分ZIPアーカイブ

差分はジャストでなく、変更物以外も含まれ、

手順書が毎回違う

ソースをVCSに登録していない。

個々サーバで育てている

開発は別業者でソースは差分と

手順書がZIPで来る

WinのCSPツールでファイル単位でサーバに反映

ファイルサイズなどを頼りに目grep,手diff

ZIP内のファイル階層はサーバ内とは異なるため

一括UPは不能

全ての操作でダブルチェック

(ここ確認の基準無し)

全ての操作に画面コピーを取りExcelに残す必要あり

Page 38: 縛りプレイでも? "継続的デリバリ主義(ズム)"

ありふれた構成のはずが…

テスト環境本番環境

ソース差分ZIPアーカイブ

差分はジャストでなく、変更物以外も含まれ、

手順書が毎回違う

ソースをVCSに登録していない。

個々サーバで育てている

開発は別業者でソースは差分と

手順書がZIPで来る

WinのCSPツールでファイル単位でサーバに反映

ファイルサイズなどを頼りに目grep,手diff

ZIP内のファイル階層はサーバ内とは異なるため

一括UPは不能

全ての操作でダブルチェック

(ここ確認の基準無し)

全ての操作に画面コピーを取りExcelに残す必要あり

そりゃ時間かかるし事故るわな…

Page 39: 縛りプレイでも? "継続的デリバリ主義(ズム)"

燃えてきた!

● ここは「継続的デリバリズム」を発揮して、モッダーンな自動化ツールを使って…。

● 用意されてるもの以外インストール不可●作業に使用可なのはWin7端末のみ

– svnの操作出来るのはGUIアプリのみ–WebサーバへFileUpもGUIアプリのみ

●Webサーバ側からはどこにも接続できない– svnファイルもLinux内側から取れない

● どこからもsmtpでメールは送れない

キ リ ト リ セ ン

Page 40: 縛りプレイでも? "継続的デリバリ主義(ズム)"

慈悲は無し…

それどんな

縛りプレイやねん!

Page 41: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Part.4

まあ、あがく(道具無くともイズムがあれば…)

Page 42: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やったこと・その1

● 最初にやったこと

「経緯を”解る限り”ヒアリング」

–現行作業中「不可解な部分」について「なぜしてるのか」を明らかにする

–手段として「何が出来るのか」も確認

Page 43: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やったこと・その1- 結果

● 差分ZIPアーカイブ– 業者から「一度目引渡し」

がそうだったから

– そもそもこちらから指定していない

● ファイル一つずつ反映、目grep,手動diff、永久ダブルチェック– 「最初の指示」がそうだっ

たから

– ただリーダは「言ってない」

● 「何が道具として使えるか」を確認

● Windows側– Dos-bat,ExcelVBA,TortoiseSVN,WinSCP

– インストーラ無し、ウイルスチェック済みexe,dllなら交渉の余地あり

● Linux側– bash,perl,cron

● 多くは「最初の人がそうしたから」「変更可能」であることが解った

Page 44: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やったこと・その2

●次にやったこと

「”本当は何がしたいの?”という単純化」

–「何を満たしたら良いのか」という最低ライン(=一番シンプルな形or最大効果)を探る

Page 45: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やったこと・その2- 結果● 「全ての操作で画面コピーを取りExcelに残す」

– やりたいことではない● 本当にやりたいことは…

– 操作時の確認の意識向上● 画面コピーを撮る際にイヤが応にも見るから

– トレーサビリティ● 事故った時の確認用の証跡

● つまり

– 自動化– 実行時の操作のログを残す機構

があれば良い

Page 46: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やったこと・その2- 結果● 「サーバにファイルを一個ずつ置く」

– やりたいことではない● 本当にやりたいことは…

– ワンアクションでプログラムをサーバにデプロイ● できなくとも「最小操作」で

– ソースをバラバラでなく「ひとかたまり」で扱いたい● 単体でなく「その時の1セット」で見たい

● つまり…

ファイルをある構造で集め… 何らかの形で一つに纏め… 投げ込むっ!

Page 47: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やったこと・その2- 結果● 「集めて」「まとめて」「投げこめた」として

– サーバ側で「検知」「解いて」「配置」するヤツが要るな…

– まてよ…これをやってるヤツを知ってるぞ● JavaWebArchive(war)とWebコンテナのホットデプロイだ!–この挙動を全力で真似るリスペクトする–具体的には「zip」と「ポーリング」で実現

!

Page 48: 縛りプレイでも? "継続的デリバリ主義(ズム)"

やったこと・その3

● 最後にやったこと

「簡易手段での機構の考案」

–明らかにした「除外出来る点」「満たすべき点」と「使える道具」から「易い方法」にてやり方・仕組みを考える

Page 49: 縛りプレイでも? "継続的デリバリ主義(ズム)"

継続的デリバリ主義、注入!

SVNサーバ

ソース差分ZIPアーカイブ

/trunk

/tags

/v1.0.2

/v1.0.1

デプロイ用ソースZIPアーカイブ

/opt

/php

/deploy

Windowsの世界Linux

の世界

ビルドスクリプト(DOS-BAT)

デプロイスクリプト(bash-script)

ソースをsvn-trunkに

マージ(ここは人間系)

②キック

①マージ作業

③ファイルアップロード

PG内にTagVer埋込み

ダウンロード

ZIPアーカイブ化

1分ごと繰り返し実行

ディレクトリ入れ替え

環境依存値練込み

アーカイブ展開

前回バックアップ

スモークテスト

httpサーバ再起動

タグ切り

Page 50: 縛りプレイでも? "継続的デリバリ主義(ズム)"

充実のオチ

SVNサーバ

ソース差分ZIPアーカイブ

/trunk

/tags

/v1.0.2

/v1.0.1

デプロイ用ソースZIPアーカイブ

/opt

/php

/deploy

Windowsの世界Linux

の世界

ビルドスクリプト(DOS-BAT)

デプロイスクリプト(bash-script)

ソースをsvn-trunkに

マージ(ここは人間系)

②キック

①マージ作業

③ファイルアップロード

PG内にTagVer埋込み

ダウンロード

ZIPアーカイブ化

1分ごと繰り返し実行

ディレクトリ入れ替え

環境依存値練込み

アーカイブ展開

前回バックアップ

スモークテスト

httpサーバ再起動

タグ切り

まあ

ボツになったんスけどね!

Page 51: 縛りプレイでも? "継続的デリバリ主義(ズム)"

本に載ってるのと大分ちゃうけど…

いろいろと制約の多い中、「目の前にある古の道具」で

「ワンクリックデプロイ」狙う…

これも一つの「継続的デリバリ主義」

じゃないでしょうか。

Page 52: 縛りプレイでも? "継続的デリバリ主義(ズム)"

Part.5

まとめ(…と名づけた苦しい言い訳)

Page 53: 縛りプレイでも? "継続的デリバリ主義(ズム)"

自分、大きい口叩きすぎましたァァァ!

想定される

ご意見

Page 54: 縛りプレイでも? "継続的デリバリ主義(ズム)"

ごもっともでございます…

●「継続的デリバリ主義」だか知らんが、概念の話聞きに来たんじゃない●最新技術・専用のツールを使った「成功した実例」を知りに来たんだ●「極端な例」見せられても…●「古い技術」を元に「一年生でも出来る」稚拙なヤツ見せやがって●おまけにボツ食らってるじゃねーか

Page 55: 縛りプレイでも? "継続的デリバリ主義(ズム)"

しかしですよ…

裏を

返さば

Page 56: 縛りプレイでも? "継続的デリバリ主義(ズム)"

とも言えると思うんですよ

●継続的デリバリーで重要なのは、マインド(考え方)や主義(イズム)と思っている

●それを理解すれば道具は問わない●「ウチは特殊だから…」にもぶっこめる●「古い技術」でも「一年生」でも出来る●でも結局「望まれて」いないと価値はない

Page 57: 縛りプレイでも? "継続的デリバリ主義(ズム)"

願望を述べます

このマインドを「多くの現場の多くの技術者」

が持ってくれたら楽しなるのに…

Page 58: 縛りプレイでも? "継続的デリバリ主義(ズム)"

冒頭に言いましたが…

すべては、あくまでも「個人的見解」です。

次のダイアログでも懇親会でも

はたまたTwitterでも街ででも…

「皆様の意見」教えてください

Page 59: 縛りプレイでも? "継続的デリバリ主義(ズム)"

縛りプレイでも?"継続的デリバリ主義"

ご静聴ありがとう

ございました!

Page 60: 縛りプレイでも? "継続的デリバリ主義(ズム)"

告知

“自動化”にまつわるカンファレンスです。

http://kokucheese.com/event/index/160374/