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

Preview:

DESCRIPTION

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

Citation preview

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

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

ズ ムズ ムVer 1.0

お断り

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

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

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

Part.1

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

自己紹介

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

自己紹介

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

”なんで来たん?”氏

Q&Aその1

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

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

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

Q&Aその2

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

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

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

Q&Aその3

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

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

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

くやしいですッ!

※完全に自分のせいです

もう少し細かく言うと…

ソフトウェア

インフラチーム

ビジネス要件からの依頼

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

環境のお守り

ポートやOS以下の操作

ポートやOS以下の操作

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

依頼

本番への操作

テスト環境群 本番環境

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

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

テスト系 本番系

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

継続的デリバれない日々

近況の話を…

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

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

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

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

近況の話を…

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

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

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

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

いつか正当化して

怒られんようにしたい…

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

すみません、完全に愚痴

でした!

Part.2

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

の話をしよう…

思いの丈から

継続的デリバリー

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

でも何で学ぶのかなー?

バイブルといえば…

「継続的デリバリー」本

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

とは言えど…

ちと厚い…

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

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

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

ちょっと乱暴ですが…

例えば中学数学なら…

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

問題

答え

公式公式

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

問題

答え

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

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

現場

イケてる現場

現場

イケてる現場

バイブルがなくても…

何か

マインドつってもね…

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

反復可能プロセス

全てVer管理に

依存関管理

設定管理

環境管理

CI

デプロイメントPL

テスト戦略

自動化手法スクリプト

手作業廃絶

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

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

データベース管理

DBマイグレーション

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

トレーサビリティ

VCSの運用/戦略

整理・抽象化

少しつきつめると…

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

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

テスト自動化

デプロイメントPL

環境構成管理化

CIワンクリックデプロイ

構成管理

やり過ぎると…

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

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

人的・時間的な負荷分散

極限までの合理化

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

ちょうど良い頃合いで…

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

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

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

テスト自動化

デプロイメントPL

環境構成管理化

CIワンクリックデプロイ

構成管理

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

現場イケてる現場

考え方や

概念

それを使えば…

答えが出せる

現場イケてる現場

継続的デリバリ

主義

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

ズ ム

なにはともあれ…

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

自分の「目の前の世界」

に役立てて見よう!

ズ ム

Part.3

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

最近の傾向と対策的な…

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

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

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

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

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

今日話すのはこっち!

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

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

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

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

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

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

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

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

などが定石ですが…

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

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

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

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

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

のリリース仕組

ついにオレにも…

ソフトウェア

インフラチーム

ビジネス要件からの依頼

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

環境のお守り

ポートやOS以下の操作

ポートやOS以下の操作

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

依頼

本番への操作

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

〜お上の声〜

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

を改善しといての意)

では対象は?

テスト環境本番環境

Webサーバは典型的な

LAMP環境

ソースはPHPのWebアプリ

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

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

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

あれっ?

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

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

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

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

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

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

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

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

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

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

どころか

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

リリース作業は一体…

テスト環境本番環境

ソース差分ZIPアーカイブ

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

手順書が毎回違う

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

個々サーバで育てている

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

手順書がZIPで来る

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

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

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

一括UPは不能

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

(ここ確認の基準無し)

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

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

テスト環境本番環境

ソース差分ZIPアーカイブ

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

手順書が毎回違う

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

個々サーバで育てている

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

手順書がZIPで来る

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

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

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

一括UPは不能

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

(ここ確認の基準無し)

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

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

燃えてきた!

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

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

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

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

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

キ リ ト リ セ ン

慈悲は無し…

それどんな

縛りプレイやねん!

Part.4

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

やったこと・その1

● 最初にやったこと

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

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

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

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

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

がそうだったから

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

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

たから

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

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

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

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

● Linux側– bash,perl,cron

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

やったこと・その2

●次にやったこと

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

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

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

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

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

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

● つまり

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

があれば良い

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

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

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

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

● つまり…

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

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

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

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

!

やったこと・その3

● 最後にやったこと

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

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

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

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サーバ再起動

タグ切り

充実のオチ

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サーバ再起動

タグ切り

まあ

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

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

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

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

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

じゃないでしょうか。

Part.5

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

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

想定される

ご意見

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

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

しかしですよ…

裏を

返さば

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

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

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

願望を述べます

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

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

冒頭に言いましたが…

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

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

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

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

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

ご静聴ありがとう

ございました!

告知

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

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

Recommended