タグ

ブックマーク / blog.yuuk.io (12)

  • RedisサーバのCPU負荷対策パターン - ゆううきブログ

    Redisは多彩なデータ構造をもつ1インメモリDBであり、昨今のWebアプリケーションのデータストアの一つとして、広く利用されている。 しかし、一方で、性能改善のための手法を体系的にまとめた資料が見当たらないと感じていた。 実際、最初にCPU負荷が問題になったときにどうしたものかと悩み、調査と試行錯誤を繰り返した。 そこで、この記事では、自分の経験を基に、RedisサーバのCPU負荷対策を「CPU負荷削減」「スケールアップ」「スケールアウト」に分類し、パターンとしてまとめる。 背景 RedisのCPU負荷対策パターン CPU負荷削減 multiコマンド Redisパイプライニング Luaスクリプティング Redisモジュール(夢) スケールアップ スケールアウト 参照用スレーブ 垂直分割 水平分割 Redis Clusterによる水平分割 その他 スライド資料 あとがき 参考資料 背景 R

    RedisサーバのCPU負荷対策パターン - ゆううきブログ
  • Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話 - ゆううきブログ

    Googleが、太古のディストリビューションであるRed Hat 7.1から、10年新しいDebianベースのディストリビューションへ、ライブアップグレードした話を紹介する。 そのあと、自分の身の回りの環境と比較し、参考にすべきポイントを考察する。 原文は USENIX LISA の投稿論文だ。しかし、中身は論文体というよりは、事例の紹介といった適切かもしれない。 MERLIN, M. Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One. In Proceedings of the 27th conference on Large Installation System Administration (LISA) (2013),

    Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話 - ゆううきブログ
  • 自作Linuxコンテナの時代 - ゆううきブログ

    最近、Docker以外のコンテナ型仮想化技術の流れとして、自作コンテナエンジンの時代が来るのではないかと感じている。 自作コンテナエンジンとは、コンテナ型仮想化技術を構成する個々の要素技術を組み合わせ、自分の用途にあわせて最適化したコンテナエンジンのことだ。 他のOSのコンテナ仮想化技術について疎いため、以下ではLinuxに限定して話を進める。 概要 Dockerも含めて、Linuxコンテナはコンテナを構成する複数の要素技術の組み合わせである。自分のやりたいことに対して、Dockerをはじめ既存のコンテナエンジンが複雑すぎるケースがある。そこで、自分の用途にあわせてコンテナエンジンを自作することを考えてみる。libcontainerに代表されるように、Linuxコンテナエンジンを自作しやすい環境が整いつつある。今後は、巨大なコンテナエンジンに対して、UNIX哲学に基づいて制御可能な小さなコ

    自作Linuxコンテナの時代 - ゆううきブログ
  • Dockerとchrootを組み合わせたシンプルなコンテナデプロイツール - ゆううきブログ

    この記事ははてなエンジニアアドベントカレンダー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がリリー

    Dockerとchrootを組み合わせたシンプルなコンテナデプロイツール - ゆううきブログ
  • はてなで大規模サービスのインフラを学んだ - ゆううきブログ

    中〜大規模サービスのインフラの様子を知りたいアプリケーションエンジニア向けに、もともとアプリケーションコードを書いていた視点から、個人的な体験をベースにはてなで大規模サービスのインフラを学んだ過程や学んだ内容の一部を紹介します。 Webアプリケーションのブラックボックス Webアプリケーションフレームワークの向こう側 なぜ複数のサーバが必要なのか 突然のWebサービス3層構成 リバースプロキシ アプリケーション データベース その他のコンポーネント キャッシュは麻薬 飛び道具としてのKVS/NoSQL 非同期処理 バッチ処理 Mackerelの場合 参考 まとめ Webアプリケーションのブラックボックス 今年もはてなインターンの時期が近づいてきた。 毎年ではないけど、はてなインターンでは「インフラ講義」というのをやっている。 今年はインフラ講義の講師としてアサインされたのでちょうど何を話そ

    はてなで大規模サービスのインフラを学んだ - ゆううきブログ
  • 2015年Webサーバアーキテクチャ序論 - ゆううきブログ

    2023年03月31日追記:この記事を基に、@sadnessOjisanさんより、コードレベルにより踏み込んだ、かつ、グリーンスレッドベースの新しいWebサーバアーキテクチャも含めて整理された記事 Webサーバーアーキテクチャ進化論2023 | blog.ojisan.io が公開されました。 主に新卒のWebエンジニア向けに、古典的なWebサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介します。 この辺りの話題がWeb界隈で流行っていたのは数年以上前というイメージですが、Webサービスは相変わらずWebサーバの上で動いているので、流行り廃り関係なく学ぶべき内容だと思っています。 また、HTTP/2がいよいよRFC化し、既にh2oやtrusterdなどのHTTP/2のサーバ実装があり、今後Webサーバアーキテクチャを再訪することが増えるような気がしています。 ところが、We

    2015年Webサーバアーキテクチャ序論 - ゆううきブログ
  • Ansible + Mackerel APIによる1000台規模のサーバオペレーション - ゆううきブログ

    Ansible と Mackerel API を組み合わせて、1000台規模のサーバ群に対して同時にパッケージの更新やその他のサーバオペレーションのための方法を紹介します。 タイトルに Mackerel とありますが、それほど Mackerel に依存しない話です。 (AnsibleとDockerによる1000台同時SSHオペレーション環境 - ゆううきブログに続編を書いています。) 背景 社内では、サーバ構成管理ツールとして Chef を使用しています。 Chef Server は運用が大変なので使用しておらず、knife-solo と Mackerel APIを組み合わせてホストと Chef role とのマッピングに Mackerel のロール情報を用いています。 また、MackerelRuby クライアントを利用して recipe 内で API を叩いて、Mackerel

    Ansible + Mackerel APIによる1000台規模のサーバオペレーション - ゆううきブログ
  • 2014年、技術しかしてない - ゆううきブログ

    2014年、振り返ってみてもとにかく技術しかしてない。 Webオペレーションエンジニアになった。 1人でサービスを構築・運用するようになった。 とうとう25歳になった。もう定年だ。 9月に引っ越した。自炊あきらめた。 ISUCON4の戦で惨敗した。Cache-Controlとか知らんし。 ブログで承認ゲットした。 Dockerしてた。Dockerは最高。 数編の論文を読んた。 京都在住にしてはとにかくたくさん技術プレゼンした。東京で消耗してた。 新卒入社成功してから1年がたってた。 入社1年成功 https://t.co/HA3k3n76kC— yuuki (@y_uuk1) December 1, 2014 去年の目標みたいなのを振り返ってみる。 2013年をとにかく忘年したい - ゆううきブログ プロとしてのエンジニアリングをやっていく なにがプロだ。 ブログエントリばかり読んでない

    2014年、技術しかしてない - ゆううきブログ
  • GoとMySQLを用いたジョブキューシステムを作るときに考えたこと - ゆううきブログ

    【追記】2023年3月21日 YAPC::Kyoto 2023で、ジョブキューシステムFireworqの設計と運用実績も含めて発表されました。id:tarao ++ 【加筆修正】 2020年2月16日 執筆時から6年も経過していますが、たまたまこの記事を振り返る機会があったので、日語がおかしいところを一部修正したり、一緒に取り組んだ方々の名前が書かれていなかったところを修正しました。 【追記】2017年12年24日 このエントリのジョブキュー実装がFireworqという名でOSSとして公開されました。id:tarao ++ github.com この記事ははてなエンジニアアドベントカレンダー2014の4日目です。 前回は Mackerelで採用している技術一覧とその紹介 - Hatena Developer Blog でした。 社内の開発合宿で、 id:taraoさん、id:hakobe

    GoとMySQLを用いたジョブキューシステムを作るときに考えたこと - ゆううきブログ
  • UNIXという考え方―その設計思想と哲学 を読んだ - ゆううきブログ

    人間とウェブの未来 - Linuxエンジニアを目指して入社一年目にやって役にたったと思う事 で紹介されていた書籍のうちのひとつ。 原版は90年代前半くらいに出版されていて、今から20年前くらいに書かれただった。 小さいソフトウェアを組み合わせて大きなソフトウェアをつくるのがとにかく良いことで、 ひたすら、下記のワンライナーみたいなのがいかに最高かが書かれている。 $ tail -10000 access_log | cut -f 1 -d ' ' | sort | uniq -c | sort -nr | head -10 UNIX勉強するときにだいたいそういうことは勉強するんだけど、ある日気づいたら忘れてしまっていて、今つくってるソフトウェアにどんどん機能を追加していたりする。 もしくはシェルスクリプトを30行ぐらい書けばすむことをいろいろなオプションを処理させるためにがんばってRub

    UNIXという考え方―その設計思想と哲学 を読んだ - ゆううきブログ
  • Perl屋さんに便利なVim Pluginを2つ書いた - ゆううきブログ

    この記事は Vim Advent Calendar 2012 の22日目の記事です. 21日目は @AmaiSaeta さんの 「このVim plugin達に感謝しなければ年を越せない!私が今年使い倒した2012年のベストを全部ご紹介! 」 でした. 最近,Vim Scriptを書き始めていて, 今回は,Perl的に便利なVim Pluginを2つ書いたのでご紹介します. unite-perl-module.vim GitHub y-uuki/unite-perl-module.vim unite-perl-module.vim はClass::Acceccor::Liteなどのモジュール名をUniteのインタフェースで検索し,選択したモジュール名をカーソル位置に書き込むPluginです. Linda_pp先生のunite-ruby-require.vimを参考にして作りました. 機能は以

    Perl屋さんに便利なVim Pluginを2つ書いた - ゆううきブログ
  • 最近使ったPerlのテスト系モジュール - ゆううきブログ

    最近Perlを書いていて,便利なテスト系モジュールをいくつか使ったのでメモ. Test::Moreのsubtestメソッド Test::Mock::LWP::Conditional Test::MockObject::Extends Test::Exception Test::Mock::Guard Test::Moreのsubtestメソッド RSpecのitメソッドみたいな感じ. テストをブロックに分けてそれぞれのブロックに名前を付けることができるイメージ. use Test::More; subtest "description" => sub { # テスト書く }; Test::Mock::LWP::Conditional LWP::UserAgentのリクエストスタブ. LWP::UserAgentで任意のURLに対応するレスポンスを指定できる. my $res = HTTP:

    最近使ったPerlのテスト系モジュール - ゆううきブログ
  • 1