タグ

ブックマーク / www.ryuzee.com (20)

  • 【資料公開】レガシーコードからの脱却

    みなさんこんにちは。@ryuzeeです。 2019年10月4日に行われたAWS DevDayの「レガシーコードからの脱却」のセッション資料を公開します。 内容は、9月に発売になった同名書籍『レガシーコードからの脱却』の全体像と一部のプラクティスの紹介という形になっています。 時間の関係で紹介できたのはごく一部の内容になっていますので、スライドを見て内容に興味をお持ち頂いた方はぜひ書籍をお読み頂ければと思います。 なお、現在Amazonの在庫が高額な値付けの転売商品?だけになってしまっているので、オライリーの直販か電子書籍(PDF、epub)をご利用ください。 45分という短い時間の中で何をお話するかは結構迷いました。書はレガシーコードを「どうやって直すか」ではなく「どうやって作らないようにするか」に軸足を置いていて、そのためのプラクティスとして以下の9つを提唱しています。 やり方より先に

    【資料公開】レガシーコードからの脱却
    zsiarre
    zsiarre 2019/10/13
  • AWS CodeDeployで簡単デプロイ(CLI編)

    全国100万人のデプロイ・プロビジョニング自動化マニアのみなさんこんにちは! AWSから新たにDeploy用のサービスAWS CodeDeployがリリースされたので早速試してみました。 これを使うと複数のサーバに同時にアプリケーションをリリースするのが簡単にできます。もうCapistranoとかでごちゃごちゃやる必要はない感じです!! 詳細を知りたい方は公式サイトのドキュメントを見てみるとよいです。 ただ、GUIでやるのも面白く無いので、awscliを使ってやっていきましょう!! EC2インスタンスの準備まず、us-west-2でEC2インスタンスを何台か起動しましょう。これがデプロイ先のサーバになります。 デプロイ先サーバの識別にはEC2インスタンスのタグを利用しますので、同時にデプロイする対象には、同じタグを設定します(EC2のタグのFilterと同じ挙動です)。ここでは起動したイン

    AWS CodeDeployで簡単デプロイ(CLI編)
  • Sensuを使って自由度の高い監視システムの構築を行う方法

    SensuとはSensuはhttp://sensuapp.org/で公開されているオープンソース(MITライセンス)のモニタリングフレームワークです。 特徴以下のような特徴があります(公式サイトの記述を整理) シンプルで融通が効き拡張性があるモニタリングフレームワークエージェント、メッセージバス、イベントプロセッサーの機能を提供要件にあわせて他のツールとの組み合わせが可能クラウドを意識して開発自動でクライアント(監視対象)を登録コミュニティが活発RubyのEventMachineを使って作られているコードはGitHubホストされ、テストコードは高いカバレージ。TravisCIで継続的インテグレーションを実施Nagiosのプラグインを再利用可能設定はすべてJSONファイルで行うRabbitMQを使ったメッセージ型のアーキテクチャーオムニバスインストーラーを提供個人的な見解としては、Sens

    Sensuを使って自由度の高い監視システムの構築を行う方法
  • DevOpsに関する12のアンチパターン

    みなさんこんにちは。@ryuzeeです。 DevOpsGuysというサイトのTwelve DevOps Anti-Patternsという記事が秀逸です。 作者の方に許可を頂き翻訳しましたので公開します。 原文も軽妙なタッチで読みやすいと思いますのでぜひご参照ください。 また文で様々なスライドや資料へのリンクがありますので、そちらも見ていただくと理解が深まるんじゃないかと思います! えっとDevOpsを始めたいのかな?おっけー。ただ始める前に、やってはいけないいくつかのことについて見ておこう。 古き良き時代には単に「良くないアイデア」って呼んでいたんだけど、外交やポリティカル・コレクトネス運動の結果、ブレストやアイデアシャワーをして、最近は「アンチパターン」と呼ばれるようになった。 パターンが絶対的に正しいのであれば、すなわち「アンチパターン」は間違いということになる。そして間違いを避ける

    DevOpsに関する12のアンチパターン
  • 資料公開 Vagrant (+Amazon EC2)

    著作 SCRUM BOOT CAMP THE BOOK 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎 出版社:翔泳社( 2013-02-13 ) 定価:¥ 2,520 スクラム初心者に向けて基的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。 CakePHPで学ぶ継続的インテグレーション 著者/訳者:渡辺 一宏 吉羽 龍太郎 岸田 健一郎 穴澤 康裕 出版社:インプレス( 2014-09-19 ) 定価:¥ 4,320 Webアプリケーション開発における継続的インテグレーションについて、CakePHPのサンプルをベースにして、その概要から使用ツール解説、導入方法、メンテナンスまでを解説 Chef実践入門 ~コードによる

    資料公開 Vagrant (+Amazon EC2)
  • OpenVPN ServerをAmazon EC2上に簡単に構築する方法

    Amazon Virtual Private Cloud(VPC)を使ってPrivate Subnetを作っている場合、Private SUbnetにあるインスタンスを触るために一端Public Subnetの踏み台にログインしてから作業するとかは面倒すぎて無理なので、OpenVPNを使ったVPN環境を用意するのがよくある手です。 OpenVPN Server自体のインストールはそんなに大変ではありませんが、手でやると間違えるので、Chef Soloを使ってサクっと作る方法を紹介します。 インストール対象のインスタンスの用意まずOpenVPN Serverをインストールするインスタンスを用意します。既にNATインスタンスを利用している場合はそれ上にインストールをするのが簡単です。 別で用意する場合は、NATインスタンス作成用のAMIを利用します(他のAMIでももちろん大丈夫です。いざという

    OpenVPN ServerをAmazon EC2上に簡単に構築する方法
  • 続報 PackerでVagrant用のBoxを作成する

    Packerってなに?という人は前回のエントリを先にどうぞ 0.10と0.11だと作成されたVagrantのboxの中のディスクイメージの命名の問題があります(詳細はこちら)。ソースを持ってきてビルドしたPackerを使えばとりあえず問題ありません。→0.12で修正されました! 前のエントリで紹介したPackerですが、Vagrantのboxの作り方が把握できたので紹介しておきます。 今回はUbuntuのboxの作成を例にして解説します。 なお、CentOSの例は以下に置いておきました。 まずは設定ファイルです。前の記事で紹介したものより長くなっています。 { "builders":[{ "type": "virtualbox", "guest_os_type": "Ubuntu_64", "iso_url": "http://releases.ubuntu.com/12.04/ubunt

    続報 PackerでVagrant用のBoxを作成する
  • 速報 Packerでさまざまな仮想マシンのテンプレートを作成する

    続報で、VagrantのBoxの作り方について書きました。こちら Vagrantの作者であるHashimotoさんが新たにPackerというツールをリリースした(昨晩!)ので速攻ご紹介。 このツールは、Amazon EC2のAMIやVirtualBoxやVMware用のOSのイメージを一貫性のあるインターフェイスで簡単に作ってくれるものです!たとえばVagrantの場合は以前はPatrickさんが作成したVeeweeを使うことが定番だったのですが、今後はそれに変わるものになってくるかもしれません。 (現時点はまだバージョン0.1なのでこれからどんどん良くなると思います!) インストールhttp://www.packer.io/downloads.html からビルド済みのファイルを入手します。もしくは自分でビルドすることも可能です(ビルドにはgoなどのツールが必要です)。 ファイルはzip

    速報 Packerでさまざまな仮想マシンのテンプレートを作成する
  • Vagrant + シェルスクリプトで簡単プロビジョニング

    Vagrantでプロビジョニングというと、Chef SoloとかChefとかPuppetを使うという印象がありますが(Vagrant initしてできるVagrantfileにもそれらだけが入っている)、シェルスクリプトでも簡単にプロビジョニングできます。 マニュアルに書いてあるわりに意外と知らない人が多くてびっくりしたので、簡単に紹介しておきます。 インラインでシェルを使う方法これはVagrantfileの中に直接コマンドを書いておく方法です。コマンドの数が少ない場合はこれで十分です。 # 以下にコマンドを書く script = < <SCRIPT yum install -y httpd php php-mbstring php-pdo php-mysql mysql-server /sbin/chkconfig --level 2345 mysqld on /sbin/chkconf

    Vagrant + シェルスクリプトで簡単プロビジョニング
  • 5分で分かった気になるDevOps

    最近あっちゃこっちゃでDevOpsという単語を聞きますが、概念的な言葉でスコープが広いので簡単に整理しておくことにします。 これで5分くらいで分かった気になるかもしれません。 2009年にFlickrの人が発表した概念 http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr 概念なので、実装は個々の現場によって異なる。アジャイル開発とアジャイル開発方法論の関係のようなもの。 従来型の考え方による利害対立 Devは多くの機能を早く届けなければならない すばやい変化 Opsは安定した運用を行いトラブルを起こさないようにしなければならない 変化を避けたい それじゃビジネスに勝てない DevOpsとはDevとOpsが協力しながら、ビジネスのために継続的に成果を出す、もしくは変化に

    5分で分かった気になるDevOps
  • 技術的負債にどのように取り組むか

    みなさんこんにちは。@ryuzeeです。 定期的にSlideshareをウロウロして良い資料がないかを探しているのですが、技術的負債に関する分かりやすい資料があったのでご紹介します。 技術的負債とは、現在の進捗のために、将来のキャパシティ(ソフトウェアの開発能力)を犠牲にすることであるもうちょっと具体的に言えば、技術的負債とは、ソフトウェアの内部的な問題(見つかっているか見つかっていないかは関係はない)、要求の明確化の欠如、ダメな設計、ビジネスの要求に適していない設計、自動化できるはずの箇所の手動処理などを指す**利子の支払いは時間のムダである。**例えば欠陥を直すのに時間を取られる、要求が明確になった後に再度作りなおす、複雑なコードを理解するために余計な時間を取られる、などなど技術的負債の悲惨なサイクルがあるテストを書く時間がない、リファクタリングする時間がない、設計レビューする時間がな

    技術的負債にどのように取り組むか
    zsiarre
    zsiarre 2013/05/19
  • 書評 入門Chef Solo - Infrastructure as Code

    伊藤直也さんがChef Soloのを書かれたということで早速購入してみました。最近流行りのAmazon Kindle ダイレクト・パブリッシング(KDP)を使って出版されてます。 Chefは結構巨大な仕掛けになっており、はじめて取り組む人はどこから手をつけて良いのか分かりにくかったりします。日語のリソースは今まではSoftware Designで並河さんらが書いた特集くらいだったと思いますし、色々やろうとするとopscodeのサイトの膨大なリファレンスを読まないといけない状況でした。 このでは、Chefの基を、Chef Soloを使ったやり方を通じて、平易な日語で説明しており、とっかかりとして非常に良いです。簡潔にまとまっているのでとりあえず通読するなら1時間くらいでしょう。書いてある内容は、VagrantやAWSを使えば簡単に試すことが出来ます(オンプレじゃこうはいかない)。

    書評 入門Chef Solo - Infrastructure as Code
    zsiarre
    zsiarre 2013/04/08
  • Vagrantの必須プラグインSaharaをVagrant 1.1に対応させました

    Saharaはコマンドラインから仮想マシンの状態をsandboxモード(変更をいつでも巻き戻せる)に変更できるプラグインです。これを使うことで、例えばchefのレシピ作成やミドルウェアのインストールの評価やリリース手順の確認や大規模な環境変更の評価などがやりやすくなります。Vagrantを使っている人であれば必携のプラグインと言えます。 そんなSaharaですが、開発が停止しているような感じもあり、先日出たVagrant 1.1になかなか対応しそうにないように見えたので、自分でVagrant 1.1に対応させてみました。 なお、かなり大量にソースを書き換えている(作り直しに結構近い気がする)のと、Rubyはあんまり知らない人なので、ご利用は自己責任でお願いしますー。レポジトリはこちらです→ https://github.com/ryuzee/sahara インストール gemにはしていない

    Vagrantの必須プラグインSaharaをVagrant 1.1に対応させました
  • 【資料公開】アジャイルな開発からアジャイルな組織へ

    みなさんこんにちは。@ryuzeeです。 2012年3月16日に実施されたAgile Japanの大阪メイン会場に登壇させていただきました。 発表の資料を以下に公開します。 会場の外まで立ち見が溢れるくらいの多くの方にお越しいただき感謝するとともに、ご不便をおかけした方にはお詫びしたいと思います。 僕が話した内容は、実は単に実際の現場で、現場を良くしたいと思っている皆さんの胸のうちを代弁しただけです。 アジャイルという単語、スクラムやXPといった手法の名前自体の認知度があがって、ともすればこれらを導入すれば全てうまくいくんだ、と誤解を生んでいるのではないかと感じています。 でも手法は手法でしかなく(したがってスクラムやXPを導入しているからといって自分たちのアジャイル度合いが高いとは限らない)、目的に応じてそれにあった方法、自分たちがゴールを達成するのに最適だと思う方法を脳みそ振り絞って考

    【資料公開】アジャイルな開発からアジャイルな組織へ
  • ChefのrecipeをJenkinsで継続的インテグレーションする方法

    環境構築の自動化のツールとして一番注目されているのがChefです。 Recipeと呼ばれるインストールや設定のためのスクリプトを書いておき、それを使って新しいサーバを速攻で作ったり、Chef Serverを使えば複数のサーバ群に対して環境を一定に保つことが可能です。 ChefのRecipeは単なるrubyのスクリプトです。そしてrecipeでよく起こる問題として以下のようなものがあります。 外部サイトからtarballを取得してインストールしているような場合に、配布元の移転や、新バージョンの公開と旧バージョンの配布停止によって、recipeがコケるphpでよく使われるライブラリの配布形態であるpearのチャンネル情報が追加になったりURLが変更になる。インストールすれるパッケージがバージョンアップされ、依存関係が増えたりする。上記のようなことがあるので、recipeを定常的に動作確認してい

    ChefのrecipeをJenkinsで継続的インテグレーションする方法
  • Route53のDNSフェイルオーバー機能を使ってみた

    詳しくはAWSのブログを見ると良いですが、Route53にDNSフェイルオーバー機能が追加されたとのことなので、早速自分のサイトに設定してみました。 ちなみにこの機能で出来ることは、簡単に言えば、Route53で設定したヘルスチェックに従ってサーバを監視し、監視リクエストが失敗した場合は自動的に他のサイトに転送することが出来ます。ちなみにロードバランサーではないので、あくまでヘルスチェックの結果を受けてDNSの正引き結果が変わります。あふれたアクセスだけをバックアップサイトに転送するといった用途には使えません。 設定の手順は簡単です。 Health Checkの設定まず、Route53の画面に入って、左のNavigationから、「Health Checks」を選択します。 ここで、監視対象を設定します。 今回はhttpで監視をおこないます。対象サーバのIPアドレスホスト名、そして監視対

    Route53のDNSフェイルオーバー機能を使ってみた
  • マイグレーションツール:dbdeployの使い方

    dbdeployはオープンソースで提供されているマイグレーションツール。 http://code.google.com/p/dbdeploy/ にホストされており、ライセンスはLGPLです。 doctrineやrubyのmigrationとは違ってコードではなく、SQL文で変更情報やロールバック情報を記述する点が特徴です。既にSQL文が書かれたファイルで変更情報を管理している場合は導入が比較的容易と言えます。 インストールこれは簡単です。プロジェクトのページからダウンロードして適当な場所に解凍します。また、今回はApache Ant経由で実行しますので、導入していない場合は先にインストールしておいてください。wget http://dbdeploy.googlecode.com/files/dbdeploy-dist-3.0M3-distribution.zip unzip dbdeplo

    マイグレーションツール:dbdeployの使い方
  • Jenkinsから送信されるメールをカスタマイズする

    みなさんこんにちは。@ryuzeeです。 Jenkinsから送信されるメールをカスタマイズするにはどうしたら良いでしょうか? 答えはEmail-extプラグイン(https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin)を使うのですが、設定の方法などを書いておくことにします。 Email-extプラグインとはJenkinsが送信するメールをカスタマイズするプラグインで、送信するメールのタイトルや文、いつ送信するか、誰に送信するか等をカスタマイズすることができます。 またビルド失敗、テスト失敗、ビルドの正常への復帰などの状況に応じて送信するメールを個別にカスタマイズすることが可能です。 2012年1月現在バージョンは2.16です。 インストールこれはいつもの通りです。 Jenkinsの管理→プラグインの管理と遷移して、“Jen

    Jenkinsから送信されるメールをカスタマイズする
  • Jenkinsでビルド・パイプラインを作る

    Jenkinsのプラグインでビルド・パイプラインを作ることができるので紹介。 #12月20日のワンクリックデプロイ勉強会の発表のネタバレっぽいのですが。 ビルド・パイプラインとはビルド・パイプラインとは、継続インテグレーションのプラクティスの1つで、テスト等を複数の単位に分割し、順番に流していくものである。一般的には継続的インテグレーションを利用していれば、SCMにソースコードをコミットした段階ですぐにユニットテストを走らせ、以降に、静的解析や結合テスト、受け入れテスト、ステージング環境へのデプロイ、番環境へのデプロイという形で進んでいくことになり、その単位でパイプライン要素を分ける。 当然パイプラインの途中で試験に不合格であれば、その後のプロセスには進めない。 これによって、例えばコミット時には即座にユニットテストレベルの結果を返して開発者のペースを阻害しないようにすることができる。(

    Jenkinsでビルド・パイプラインを作る
  • 資料公開 Chefの下準備 (#DevLove Chef de DevOps)

    2012年7月21日に大崎のフューチャーアーキテクトさんで行われたChef de DevOpsで話してきましたのでその際の資料を公開しておきます。 なお、内容については2011年12月くらいに行ったワンクリックデプロイ勉強会の資料とほとんど同じですので、以前にご覧になっている方にとっては目新しいものは何もありません。 新作作りたかったのですがごめんなさい。 言いたかったことは色々あったりしますが、道具としてのツールを使いこなすのはプロとしてとても重要であるのは前提とした上で、それでも単にツール単体の話をする前に、もうちょっと大きな全体像をとらえる必要があるということです(仕事じゃないなら好きにすれば良いですがね) 目先の効率化ももちろん重要ですが、それがプロダクト全体に対してどう作用するのかというのを理解せずに進めてしまうと、周りの理解も得られませんし、長期的に物事をよりよくするという流れ

    資料公開 Chefの下準備 (#DevLove Chef de DevOps)
  • 1