開発環境のパフォーマンスチューニング - クックパッド開発者ブログ http://techlife.cookpad.com/entry/2015/10/13/101031 cookpad/chanko - GitHub https://github.com/cookpad/chanko …

この記事ははてなエンジニアアドベントカレンダー2015の1日目です。今回は、既存の運用フローに乗せやすいDockerイメージへのchrootによるデプロイの考え方と自作のコンセプトツール droot を紹介します。 github.com 背景 Docker 本番導入の課題 Docker 導入の目的 Docker + chroot のアイデア droot: Dockerイメージにchrootするコンテナツール droot の使い方 droot push: Dockerイメージをtar ball化しS3にpushする droot pull: S3にpushしたイメージをダウンロードし展開する droot run: 展開先のディレクトリにchrootする droot の実装 droot push/pull の実装 droot run の実装 あわせて読みたい あとがき 背景 Dockerがリリー
ここ4日間というもの、インターネットWebフォーラムをインストールしようとして大いに時間を無駄にしました。説明書きには30分でセットアップ可能と書いてあったんですけどね。 コンピュータは得意なほうだと思っているのですが、一体、何が悪かったのでしょうか? これからお教えしましょう。 私の奮闘記 辱めるのは本意ではないので製品名は言わないでおきます。この製品でひどい目にあったのは今回が初めてではありませんが、製品単体の問題というよりはもっと大きな問題だからです(”ピス・ホース(馬におしっこ)”に音が似ているとだけ言っておきましょう)。 30分でセットアップ可能と説明されている根拠は、Dockerによるインストールが正式にサポートされていて、それ以外の手段がないからです。Dockerは輝かしくも新しいコンテナ管理ソフトウェアで、それだけでも危険な香りがします。相互運用可能なデスクトップ環境全体を
Goアプリのデプロイはバイナリをひとつ配布して完了なのでとても楽なのですが、バイナリ自体をどこで管理するかについては意外と頭を悩ませることになります。 Goを使うにあたって、コードさえあればあとはバイナリも簡単に配布できる状態というのが望ましいと思い、仕組みを作ってみました。 2015/08/16追記: CargoはRustのパッケージマネージャーと名前がかぶってたのでTorokko(トロッコ)に改名しました! TorokkoはGoアプリのビルドと成果物ダウンロード用のAPIを提供するビルドプロキシです。 リクエストのURLで対象リポジトリ、GOOS、GOARCH、バージョンを指定します。 ビルドはDockerコンテナを用いて行い、バックエンドストレージに成果物が保存され、ビルドリクエストと同じURLでダウンロードを行うことができます。 Docker Hub の Automated Bui
今日はPHP製のデプロイツールの紹介です。デプロイツールとはCapistranoみたいなツールのことです。コマンド一発でデプロイが完了するようにするツールです。 PHP製のツールもいくつかありますが、Deployerは非常にシンプルなツールで、最近3.0がリリースされました(最新版は3.0.4)。 https://github.com/deployphp/deployer/releases/tag/v3.0.0 より。 インストールが簡単 公式サイト http://deployer.org/ へアクセスし、deployer.pharをダウンロードするだけです。 公式には/usr/local/bin/depにインストールすると書いてありますが、プロジェクトのフォルダに突っ込んでも問題ありません。 私はプロジェクトのルートにdeployというフォルダを作成し、そこに関連するファイルをまとめるこ
def deploy(ip): copy('code/', ip + ':~/code', recursive=True) write_template('conf/config.py', ip + ':~/config.py') write_template('conf/crontab', ip + ':~/.crontab') write_template('conf/crontab', ip + ':/etc/apache2/httpd.conf') run_as_root('service cron restart') run_as_root('service apache restart') post('https://pingdom.com/api/2.0/checks', { 'name':ip, 'host':ip, 'type':'ping' }) タスクを実行するものと
技術部の鈴木 (id:eagletmt) です。 クックパッドでは一部の Web アプリケーションサーバで Docker が使われており、今回はそのデプロイ方法について紹介します。 Docker で Web アプリケーションをデプロイするときには、まだまだベストプラクティスがある状況ではありません。 たとえば、どのように無停止でデプロイするか、どのようにコンテナと通信するかといった問題があります。 最初に Apache Mesos と Marathon などのツールを検証しましたが、クックパッドの環境において使いやすそうなものはなく、最終的に自前でデプロイのしくみを作ることにしました。 しかし Docker 周辺のツールは様々な新しいものが出てきている最中です。 今はまだベストなものが無いけれども、近いうちによりよいものが出てくるかもしれません。 そのため、できるだけ単純なしくみにしておく
Serverspec本の献本ありがとうございました.とても面白かったです.詳しい書評はすでに素晴らしい記事がいくつかあるので,僕は現チームでどのようにServerspecを導入したか,どのように使っているかについて書きたいと思います. Serverspec導入の背景 今のチームではサーバーのセッアップおよびデプロイにChefを使っている.本にも書かれているようにこのような構成管理ツールを使っている場合はそのツールを信頼するべきであり,Serverspecのようなテストツールは必要ない.僕らのチームもそのような理由でServerspecの導入には至っていなかった. しかしアプリケーションが複雑になりChefのレシピも混沌とするようになるとそれは成立しなくなる.見通しの悪いレシピはChefへの信頼度を落とす.信頼度の低下はデプロイ不信に繋がり人手(筋肉)によるテストが始まる. サーバーの数がそ
最近、仕事やら趣味やらで AWS / OpenStack / GCE その他のいわゆるIaaSなプラットフォームを調査したり、いじったり、そのAPIをいじったりする機会が多かった。 この辺の運用を考えていて試したこと、ぶつかったことなどをまとめたい。 実際やったこととしては、特定のプラットフォームに依存している訳ではないが、たいていの人はAWSのアレね、みたいなイメージを持った方が読み進めやすいんじゃないかと思う。 ゴールデンイメージを雑に走らせること この手のIaaSの基本であるが、サーバーはインスタンスと呼ばれ、イメージを指定して起動する。ec2 aws run-instanceとかnova bootとかその類いである。 イメージからの起動のためには雑には大きく2要素があって、一つはイメージ自体の構築、もう一つは起動直後のそれぞれのインスタンスの特性に合わせた初期化処理のフェーズである
vpsを借りてwordpressを設置するのは簡単だが、ただ設置するだけだとデザイン調整を本番ままで調整したりいじってもバックアップ取らないといけなかったりとかが面倒になる。面倒なところは早めに潰しておきたいのでwordpressのデプロイをwp-deployで設定する。 wp-deployの機能として簡単に説明すると capistranoを使用 wordpressのコア部分はgithubにあるWordPressリポジトリからソースを持ってきて設置する 日本語対応させるためにこの設定は無くすけど WordPressのインストール階層の変更を使っている http://example.com/wordpress/に本体が入ります。 databaseの設定がyml管理 ローカル、ステージング、本番共に dbのバックアップがコマンドで実行できる 画像、dbの内容をローカルに持ってきたり本番に持って
Gitでバージョン管理をしていると、本番サーバにデプロイする際に、クライアントでpush、そして本番サーバにログインしてgit pull、ってやるのは面倒臭いですよね。そんな不毛な操作は自動化するのがプログラマとしては当然です。 GitHub上のリポジトリで、デプロイの自動化をやるにはWebhookやTravis CI、JenkinsなどのCIツールとの連携を考えます。選択肢は多々あり、それぞれにメリット、デメリットはありますが、今回は後々、FuelPHPのユニットテスト自動化までを見据えて、Jenkinsによるデプロイ自動化を試してみようと思います。 サーバ構成イメージ 今回、Jenkinsを導入するにあたって、専用のEC2インスタンスを立ち上げます。このインスタンスをCIサーバとして利用していきます。 GitHubリポジトリへプッシュされたとき、GitHubはJenkinsサーバへ通知
最近開発で利用している、デプロイをチャット経由で行うフローについて説明します。 要点 開発者はmasterブランチで開発する 開発者はデプロイしたいときにBotにお願いする Botはmasterブランチからproductionブランチに対してPull Requestをつくる 開発者はPull Requestを確認してmergeする CIはproductionブランチが変更されるとサーバにデプロイする ChatOps masterブランチからproductionブランチにPull Requestを出す作業は面倒なので、チャット経由で行っています。Heroku上で動かしたRubotyにruboty-githubとruboty-aliasというプラグインを入れて、「デプロイしたい」と発言するとPull Requestを作成するように設定しています。チャット経由で物事を行うようにすると、周知や教育
2. Agenda ๏ 自己紹介 ๏ 本セッションについて • 本セッションの扱う対象である Ansible とは何か? • 本セッションの対象者 • 本セッションで話すこと・話さないこと ๏ Ansibleを使う前に思いそうなこと • Ansibleを使うと何が嬉しいのか? • 他の類似ツールとは何が違うのか? • Ansibleを動かすのに必要なシステム要件は? • どんな企業が実際に使っているのか? ๏ Ansibleの基本的な使い方 13年9月15日日曜日 3. Agenda ๏ 自己紹介 ๏ 本セッションについて • 本セッションの扱う対象である Ansible とは何か? • 本セッションの対象者 • 本セッションで話すこと・話さないこと ๏ Ansibleを使う前に思いそうなこと • Ansibleを使うと何が嬉しいのか? • 他の類似ツールとは何が違うのか? • Ansib
ミクシィが提供するアプリ開発者向けサービス「DeployGate」。Androidアプリを絶賛開発中のはてなブログチームで、開発プロセスにDeployGateを組み込んでみることに。テスト版のアプリを簡単・手軽に配布できて開発現場の無駄を省けるというDeployGate、使い勝手はどんな感じなのでしょうか? 記事の終わりにはAndroid Wear™が当たるプレゼントのお知らせも! (※この記事は株式会社ミクシィによるPR記事です) ■ DeployGateで開発中のアプリを手軽に配布 DeployGateは、2012年9月にスタートしたテスト版アプリ配信サービスです。スマートフォンアプリを提供する開発者・企画者が、デザイナーやテスターなどチームのメンバーに対し、テスト版アプリをリモートで簡単に配布できます。 ▽ DeployGate - An incredibly easy way to
Capistranoは、複数のリモートマシンでスクリプトを実行する、デプロイツール(管理ツールとしても使えるかも?) Chefをちょっと勉強したので次はこっちかな、という程度の不純さで試してます。 まぁ、今の仕事で全く使わないであろうツールの1つですね。 結構いろんなサイトを参考にしました(途中で参照にいれてないやつ) http://tech.aainc.co.jp/archives/3773 http://yakinikunotare.boo.jp/orebase2/capistrano https://github.com/capistrano/capistrano 必要条件 スクリプトの送信元にRuby、Capistranoのインストールが必要。 送信元からリモートマシンにSSHで接続できること。複数のリモートマシンがある場合、すべてのマシンに同じユーザ/パスワードで接続できる必要が
アプリケーションのデプロイを自動化すべきなのは言うまでもないことです。 一応手動でデプロイを行う場合の問題点について整理しておくと以下になります。 プロジェクトの期間中そして運用に入ってからも何度も手でデプロイするということはとてつもなく多くの時間を手作業に費やすことになるデプロイ先の環境の数が多くなればなるほど作業の時間も増える手作業で作業すると間違えやすい。特に手順が複雑だったり環境が多かったりすると確率は飛躍的にあがるもしデプロイしたアプリケーションに問題があってすぐに戻さなければならない場合に多くの時間がかかる。場合によってはビジネス上の機会損失に繋がる本来は価値を生むフィーチャーを実装することに時間をかけたいはずが、こういうことをやっているとどんどん時間がなくなっていきます。また手作業のリスクや消費される時間を恐れてデプロイの回数を減らしてしまうのは、ビジネス側からみると納得いか
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く