koji/メガネ男の日誌

日々の学び、活動状況を記録します。仕事のことは少なめ。

Amazon Builder's Library 継続的デリバリーによる高速化 を読んだ

f:id:kj_man666:20200404081718j:plain

 

輪読会に向けて、Amazon Builder's Library(以下、ABL) を読んだので、簡単にまとめてみました。

 

テーマは「継続デリバリーによる高速化」です。

aws.amazon.com

書いたのは、Amazon Web Service のソフトウェア開発のシニアマネージャーの方で、項目は、以下の4つでした。

はじめに

パイプライン:継続的デプロイツール

欠陥によりお客様に影響するリスクの削減

実行速度へのアプローチ手法

それでは内容について触れていきたいと思います。

 

はじめに 継続的な改善とソフトウェアの自動化

 (AWSの広告? 笑)Amazonはリーダーのためのプリンシプルを掲げ、開発者ツールを構築し、実行速度の改善を常に図っている。

 

パイプライン: 継続的デプロイツール

 リリースのプロセスを手動からパイプライン処理に変えたことで、プロセスを高速かつ簡素なものに出来た。
 

 パイプライン構築チームは、”魅力的な採用(原語 seductive adoption)”によるAWSの利用数増加を年間目標にしていた。
 英語独特の表現なのか、ABL日本語版のわかりにくい訳なのか。
 補足 ”魅力的な採用(原語 seductive adoption)” は、顧客を引き付けるような仕組みをAWSに取り入れること、か?
 これは私の感想ですが、顧客の増加ではなく、仕組みを取り入れることが目標になっているのは、投資に積極的なAmazonらしいですね。
 Amazonは短期的な結果のために、長期的な価値を犠牲にしない理念を掲げている。

 テストに時間をかけすぎて他社にリリースに後れを取らないようにすること、一方で開発からチームが学べるようにテストが行えるように、テストを自動化した。

 

欠陥によりお客様に影響するリスクの削減

 リリースしたサービスに欠陥があった場合、早く欠陥を特定し、顧客に影響を与えないために、以下の仕組みをとっている。

 デプロイメントハイジーン
  補足 聞きなれない言葉だが、デプロイの環境を整えること?

www.cybernet.co.jp

ITハイジーン(IT Hygiene)のハイジーンとは少し聞き慣れない英単語ですがどのような意味なのでしょうか。
英和辞典では衛生状態や衛生学と訳します。つまりエンドポイントの「衛生状態」を管理するものと捉えると理解が進むと思います。

 デプロイ時にトラフィックを確認する。
 ライフサイクルイベントフックを使って、デプロイを停止、開始、有効化するためのスクリプトを動かしている。

(参考)Amazon EC2 Auto Scaling ライフサイクルフック

 ライフサイクルフックを使用すると、Auto Scaling グループによるインスタンスの起動時または削除時にインスタンスを一時停止してカスタムアクションを実行できます。
 インスタンスが一時停止されると、complete-lifecycle-action コマンドまたは CompleteLifecycleAction オペレーションを使用してライフサイクルアクションを完了するまで、またはタイムアウト期間が終了するまで (デフォルトでは 1 時間)、待機状態のままになります。

 容量を確認したり、障害が発生したら新しくリリースした内容をロールバックする仕組みがある。

 実稼働前のテスト

 (AWSの広(ry )実稼働前にあらゆるテスト(負荷、セキュリティ、コード等)を自動的に行っている。
 実稼働システムと同じ構成を使うので、製品版とまったく同じ動作をさせてテストも行っており、二つのメリットがある。
 ① すべての製品リソースと適切に接続することを確認できる。
 ② そのシステムが、動作に必要な実稼働サービスの API と正確にやり取りしているかを確認できる。

 Validating in production

 デプロイは一度にせず、サービスの中で完全に独立したインスタンスごとに行う。
 テストを構造化し繰り返し行うことで、すべてのエラーを発見できるように努力している。
 新しい変更内容を決まった期間だけ製品の中に放置し、チーム以外のメンバーが何かの問題を発見するか確認している。
 1 分ごとの疑似トラフィックを作って、テストを行ってい、実行中のプロセスが正常であるか、またすべての依存関係 (公開 API も含む) を確認する。

 ソフトウェアリリース時期の制御

 パイプラインを介してリリース時期を制御できるメカニズムを構築している。
 指標の管理やデプロイ等の時間の管理、パフォーマンスの管理をしてデプロイを制御している。

実行速度へのアプローチ手法

 AWS は自動化、リリースのスピードアップに取り組んでいる。

 

感想

 AWSの宣伝半分で聞き流したとしても、AWSの機能改善に膨大なリソースを割いていることがうかがえた。
 システム的なことよりも、それを可能にしているAmazonの企業理念であったり制度が気になったので、ベソス・レターをポチって見ました。
 そのうち書評をアップしたいと思います。

 

以上になります、最後までお読みいただきありがとうございました。