タグ

ブックマーク / deeeet.com (20)

  • SREとしてMercariに入社した | SOTA

    1月16日よりMercariにてSRE/BSE(Backend System Engineer)として働いてる. これまではとある会社で社内向けのPaaSエンジニアとして働いてきた(ref. PaaSエンジニアになった).PaaSの目標である「アプリケーション開発者の効率を最大化」を突き詰めながら少人数のチームでいかにScalableなプラットフォームを構築するかに注力してきた.Cloud FoundryやDockerといったインフラの最前線とも言える技術やアーキテクチャに触れ,かつその中で自分の技術的な柱である自動化に取り組むことができたのは非常に刺激的で自分に大きなプラスになった. その一方でPaaSというプラットフォームはその性質上サービスそのものからは中立的になることが避けられない(だからこそScalabilityを実現できるのだが).よりサービスに近い部分,サービスの成長に直結す

    J138
    J138 2017/02/14
  • デプロイ自動化とServerspec

    Serverspecの献ありがとうございました.とても面白かったです.詳しい書評はすでに素晴らしい記事がいくつかあるので,僕は現チームでどのようにServerspecを導入したか,どのように使っているかについて書きたいと思います. Serverspec導入の背景 今のチームではサーバーのセッアップおよびデプロイにChefを使っている.にも書かれているようにこのような構成管理ツールを使っている場合はそのツールを信頼するべきであり,Serverspecのようなテストツールは必要ない.僕らのチームもそのような理由でServerspecの導入には至っていなかった. しかしアプリケーションが複雑になりChefのレシピも混沌とするようになるとそれは成立しなくなる.見通しの悪いレシピはChefへの信頼度を落とす.信頼度の低下はデプロイ不信に繋がり人手(筋肉)によるテストが始まる. サーバーの数がそ

  • Apache Kafkaに入門した

    Apache kafka 最近仕事でApache Kafkaの導入を進めている.Kafkaとは何か? どこで使われているのか? どのような理由で作られたのか? どのように動作するのか(特にメッセージの読み出しについて)? を簡単にまとめておく(メッセージングはまだまだ勉強中なのでおかしなところがあればツッコミをいただければ幸いです). バージョンは 0.8.2 を対象に書いている. Apache Kafkaとは? 2011年にLinkedInから公開されたオープンソースの分散メッセージングシステムである.Kafkaはウェブサービスなどから発せられる大容量のデータ(e.g., ログやイベント)を高スループット/低レイテンシに収集/配信することを目的に開発されている.公式のトップページに掲載されているセールスポイントは以下の4つ. Fast とにかく大量のメッセージを扱うことができる Scal

    J138
    J138 2015/11/05
  • プレゼンするときに考えていること

    僕はカンファレンスで喋るのが好きだ.好きだが決して得意ではない.むしろ喋るのは苦手なほうだと思う. 実際に自分でやるまではプレゼンは才能だと思っていた.大学の研究発表などで実際に自分でプレゼンをするようになり,大学の研究室で指導されまくった結果,プレゼンは技術だと認識した(もちろん才能もある).技術であるということは学ぶことができる.それに気づいてからはたくさんプレゼンに関するを読んだ.昔は発表前に必ず何か一冊プレゼンに関するを読みそれを積極的に取り入れるようにした. 得意でないなりに学んで,発表を繰り返した結果なんとなく毎回考えること/意識することが固まってきた.今後のために簡単にまとめておく. 聴衆は貴重な時間を割いて会場に来る オーガナイザーは貴重な時間を割いてカンファレンスを準備している 聴衆が誰かを妄想する 早めに準備する.早めに準備する.早めに準備する.早めに… Keyno

  • 認証付きのDocker Private registryを立てる

    認証付きのDocker Private registryを立てる DockerHub(Public registry)を使えない場合は,Private Registryを立てる必要がある.DockerはPrivate registry用のDockerイメージを提供しているため,コンテナを立てるだけですぐに使い始めることができる. $ docker run -p 5000:5000 registry $ docker push docker-private.com:5000/test-image:latest ただ,これだとURLを知っていれば誰でも好きにイメージをpushできてしまうので,認証を行う必要がある.認証には,Dockerクライアント(docker login)が対応しているBasic認証を利用する.Docker registryには認証機構がないため,nginxやApacheを

  • Fleetの使い方,Unitファイルの書き方

    Fleetの使い方,Unitファイルの書き方 CoreOSに入門した | SOTA CoreOSではすべてのアプリケーションをDockerで動かす.このとき,コンテナによるサービスをCoreOSクラスタのどのマシンで起動するかをいちいち人手で決めるわけにはいけない.クラスタ内のリソースの状態や動いているサービスに基づき,適切なマシンでコンテナを動かすスケジューリングの仕組みが必要になる. このスケジューリングとコンテナの管理にCoreOSはfleetを用いる. fleetを使うとCoreOSクラスタが1つのinit systemで動いているかのようにそれを扱うことができるようになる.開発者はどのマシンでどのDockerコンテナが動いているかを気にする必要がなくなる. 例えば,5つのコンテナを動かす必要があれば,fleetはクラスタのどこかでその5つのコンテナが動いてることを保証する.もしコ

  • Dockerの再起動オプション

    Dockerの再起動オプション Announcing Docker 1.2.0 | Docker Blog v1.2でもいくつかの面白い機能が追加された.例えば,今まで--privilegedオプションを使うと全権限を与えてしまっていたが--cap-addや--cap-dropオプションでそれを制限できるようになったり,–deviceオプションで利用したいデバイスを指定できたり,コンテナ起動時に/etc/hostsを編集できたり…など. 中でも再起動オプションが良さげなので,実際に触ってみた.docker runを実行するときに--restartオプションに以下を指定するとコンテナの再起動の挙動を変更できる: no - 再起動しない(デフォルト) on-failure - 終了ステータスがnon-zeroの場合に再起動する on-failure:X - 終了ステータスがnon-zeroの場

    J138
    J138 2015/07/10
  • DotenvではなくDirenvを使う

    DotenvではなくDirenvを使う Dotenvは,.envファイルから環境変数を読み込むためのツール.他人には共有したくないパスワードやキーなどを.envに環境変数として記述しておき,実行時にそれを読み込むといった使い方をする.例えば自分は,vagrantからDigitalOceanを使う際に,CLIENT_IDやAPI_KEYを.envに記述してVagrantfileでそれを読み込むという使い方をしていた. ただ,Dotenvは汎用性が低い.Dotenvを有効にするには,プログラム内から明示的にDotenv.loadを呼ぶ必要がある,もしくは,dotenvでプログラムを起動する必要がある.例えば,test-kitchenのdigitaloceanドライバーを使う際には,vagrantの場合と同様にCLIENT_IDやAPI_KEYが必要になる.しかし,test-kitchenでユー

    J138
    J138 2015/07/01
  • Herokuの'docker:release'の動き

    Herokuの'docker:release'の動き Introducing ‘heroku docker:release’: Build & Deploy Heroku Apps with Docker HerokuDockerを使ったツールを提供し始めた.一通り触ってコードもちょっと読んでみたので現時点でできること,内部の動きについてまとめる. TL;DR Herokuのデプロイ環境とおなじものをDockerでつくれる Buildpackを使わないでDockerfileからSlugを作れる 自分の好きなDockerイメージをHeroku上で動かせるようになるわけではない. 何ができるのか まず何ができるようになったのかについて簡単に書く.プラグインをインストールするとDockerコマンドが使えるようになる. $ heroku plugins:install heroku-docker

  • AppcとCoreOS/Rocket

    Dockerの諸問題とRocket登場の経緯 Rocketはリリースした直後にちょっと触ってそのまま放置していた.App containerの一連のツールとRocketが現状どんな感じかをざっと触ってみる.まだまだ全然使えると思えないが今後差分だけ追えるようにしておく. なお,今回試した一連のツールをすぐに試せるVagrantfileをつくったので触ってみたいひとはどうぞ. https://github.com/tcnksm/vagrant-appc 概要 App Container SpecやRocketが登場の経緯は前回書いたのでここでは省略し,これらは一体何なのかを簡単に書いておく. まず,App Container(appc)Specはコンテナで動くアプリケーションの"仕様"である.なぜ仕様が必要かというと,コンテナという概念は今まで存在したが曖昧なものだったため.namespac

  • Dockerの諸問題とRocket登場の経緯

    2014年の後半あたりからDockerDocker Inc.への批判を多く見かけるようになった(もちろんもともと懸念や嫌悪を表明するひとはいた).それを象徴する出来事としてCoreOSチームによる新しいコンテナのRuntimeであるRocketのリリースと,オープンなアプリケーションコンテナの仕様の策定を目指したApp Containerプロジェクトの開始があった. CoreOS is building a container runtime, Rocket 批判は,セキュリティであったり,ドキュメントされていない謎の仕様やバグだったり,コミュニティの運営だったり,と多方面にわたる.これらは具体的にどういうことなのか?なぜRocketが必要なのか?は具体的に整理されていないと思う.これらは,今後コンテナ技術を使っていく上で,オーケストレーションとかと同じくらい重要な部分だと思うので,ここ

    J138
    J138 2015/02/17
  • Docker 1.5の変更点

    Docker 1.5の変更点 Docker 1.5.0-rc1 Docker 1.5: IPv6 support, read-only containers, stats, “named Dockerfiles” and more | Docker Blog Docker 1.5が出た.IPv6のサポートやstatsコマンドによるコンテナのメトリクス表示などが追加された.ユーザ的に一番嬉しいのはDockerfileの名前を自由に決められるようになったことだろうと思う. 今までDockerfileはDockefileという名前しか受け付けなかった,というかまともに動かなかった.やりようはあって,標準入力からぶっ込むことはできた.例えばbaseとう名前のDockerfileを作って以下のようにbuildを実行することができた. $ docker build -t tcnksm/test - <

    J138
    J138 2015/02/12
  • DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする

    DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする DockerHubのAutomated Buildsは,GithubやBitbucketへのgit pushをフックしてレポジトリ内のDockerfileを元にDockerイメージをビルドする機能である. イメージを使う側からすれば,それがどのようなDockfileから作られているか可視化され,常に新しいイメージがあることが保証されるので安心感がある.イメージを提供する側からすればDockerfileを更新してgit pushすれば自動でビルドしてくれくれるので楽という利点がある.そのためDockerHubにイメージを上げる場合は,docker pushを使うことはほとんどなくてこのAutomated Buildsを使うのが普通である. このAutomated BuildsはWeb h

    J138
    J138 2015/01/21
  • logspoutでDockerコンテナのログの集約・ルーティング

    logspoutでDockerコンテナのログの集約・ルーティング progrium/logspout logspoutは,ホスト内で動かした全てのDockerコンテナの出力を集約して,好きなところに飛ばす(ルーティングする)ためのツール.開発者はDokkのJeff Lindsay. 以下の2つの特徴がある コンテナとして起動(ステートレス) HTTP APIによるルーティングの設定 ログを貯めて管理したり,検索するといったことはできない.コンテナのログをリアルタイムで好きなところに飛ばすだけ. これだけだが,Dockerのログの問題をいい感じに解決してくれそう. Dockerのログのしくみ まず,簡単にDockerのログのしくみを説明する. 現時点(2014年5月)でDockerはコンテナ内で吐き出されたstdout/stderrを取得することができる.コンテナのプロセスがstdoutとs

    J138
    J138 2014/12/10
  • CoreOSに入門した

    CoreOS is Linux for Massive Server Deployments · CoreOS CoreOS + Docker Meetup Tokyo #1に参加してCoreOSにめっちゃ感動したので,CoreOSに入門していろいろ触ってみた. まず,CoreOSの概要とそれを支える技術について説明する.次に実際にDigitalOcenan上にVagrantを使って実際にCoreOSクラスタを立てて,CoreOSで遊ぶ方法について書く. CoreOSとは何か CoreOSは,GoogleやFacebook,Twitterといった企業が実現している柔軟かつスケーラブル,耐障害性の高いインフラの構築を目的としたLinuxディストリビューションである.軽量かつ使い捨てを前提にしており,クラウドなアーキテクチャのベストプラクティスを取り入れている.CoreOSの特徴は大きく4つ挙

  • DockerfileのONBUILD| SOTA

    DockerfileのONBUILD Docker 0.8においてONBUILDというDockerfile用のコマンドが導入された.0.8ではOSXdocker clientが脚光を浴びたが,このONBUILDはかなり強力な機能.リリースノートはこちら.ONBUILDの公式ドキュメントはこちら. ONBUILDを使うと,次のビルドで実行するコマンドをイメージに仕込むことができるようになる.つまり,ベースイメージにONBUILDによるコマンドを仕込み,別のDockerfileでそのベースイメージを読み込みビルドした際に,そのコマンドを実行させるということが可能になる.要するに,親DockerfileのDockerfileコマンドを子Dockerfileのビルド時に実行させることができる機能. これは,アプリケーション用のイメージを作るときや,ユーザ特有の設定を組み込んだデーモン用のイメージ

    J138
    J138 2014/11/06
  • DockerHub公式の言語Stack

    DockerHub公式の言語Stack DockerHub Official Repos: Announcing Language Stacks | Docker Blog DockerHubには公式のレポジトリがある.そこにはUbuntuやCentos,MySQLやPostgres,MongoといったDockerイメージがコミュニティーベースで,つまりより汎用的に使える形で開発され集められており,ベースイメージとして簡単に使えるようになっている. 今までは,OSのディストリビューションや,Webサーバ,DBなどがメインだったが,公式として各種プログラミング言語のベースイメージも公開された.現状(2014年9月時点)では,c/c++(gcc),clojure,golang,hylang,java,node,perlPHPpythonrailsrubyがある. 特徴 この公式の言語s

    J138
    J138 2014/11/06
  • boot2dockerでのVolume問題が解決しそう

    boot2dockerでのVolume問題が解決しそう (追記)Docker 1.3がリリースされた.boot2dockerはデフォルトでVirtualBox Guest Additionsをサポートし,boot2docker-cliはinitのときにホストのディレクトリをboot2docker-vm上にマウントするようになった(Docker 1.3: signed images, process injection, security options, Mac shared directories | Docker Blog). TL;DR OSXWindowsでboot2dockerを使う場合に特別な操作をしなくても-vオプション(Volume)が使えるようになる. 背景 OSXWindowsでboot2dockerを使うひとが最も不満に感じるのは-vオプション(Volume)が使

    J138
    J138 2014/10/15
  • Dockerとtmuxを連携するdmuxというツールをつくった | SOTA

    Docker + tmux = dmux ! dmuxを使うと現在起動中のtmuxのwindowにおいて,新しくpaneをつくりそこでDockerコンテナを起動することができる.使い捨て,かつ高速に起動するクリーンな環境でコマンドを試したり,ツールを入れて使ってみたりなどといったことができる.また,プロセスと途中で止めて,後にそれを再開することもできる. デモ 以下は簡単な動作例. 上のデモでは,以下のことが可能であることを示している. dmux initにより新しいpaneでコンテナを起動し,そこにアタッチする dmux stopでプロセスを停止してpaneを削除する dmux startで停止したプロセスを再開して再びコンテナにアタッチする(for文が途中から再開している) dmux deleteでコンテナとpaneを削除する なぜつくったか Dockerのv0.12.0で追加されたp

    Dockerとtmuxを連携するdmuxというツールをつくった | SOTA
    J138
    J138 2014/06/16
  • Dockerとは何か?どこで使うべきか?

    この記事はDockerに関する実験的な記事や,Buildpackを使ってHeroku AppをDocker Containerとして使えるようにする“building”の開発などで知られるCenturyLink Labsの “What is Docker and When To Use It”の翻訳です. Dockerとは何か?Dockerをどこで使うべきか?についてよく見かける記事とは違った視点から説明されています. 翻訳は許可をとった上で行っています. Dockerとは何でないか Dockerとは何かを説明する前に,Dockerは何でないかについて述べる.Dockerの否定形は何か?Dockerの制限は何か?Dockerが得意でないことは何か? DockerLXCのようなLinux Containerではない DockerLXCだけのラッパーではない(理論的には仮想マシンも管理でき

    J138
    J138 2014/05/30
  • 1