タグ

ブックマーク / hb.matsumoto-r.jp (18)

  • 2017年の抱負 - 僕がOSSを作り続ける理由 - 人間とウェブの未来

    確かに、自分が欲しいもの・他者が必要とするものを作りたい、とか、承認欲求を満たしたい、エンジニア・研究者のアピールとして、とかあるんだけど、それらはやっぱりあくまで付加的な理由であって、僕にとっての一番の理由であり根源的な理由は、「面白いから」である。ただそれだけ。誰にも邪魔されない唯一の感情でもある。 コードを書いたり、コードを書くために腕組んで考えたり、他者からのフィードバックを経て試行錯誤しながらOSSを育てていったりすることがとにかく面白いと感じるし、その感覚がこれまでずっと長い間続いている。だからこそ、夜遅くなっても、眠くてしんどくても、なかなかすぐには手を止められないし、明日の用事と向き合いながら、あと少し、4時間寝たらいける、あと少し、と引き伸ばし続け、いずれ朝を迎えてしまう。きっと僕は死ぬまでOSSを書き続けるだろうと思う。 コードを書くことは、きっかけは業務だったり、自分

    2017年の抱負 - 僕がOSSを作り続ける理由 - 人間とウェブの未来
    tknzk
    tknzk 2017/01/04
  • 楽しもうOSS開発 - mrubyで学んだ貢献の流儀と情熱 - 人間とウェブの未来

    というタイトルでWEB+DB PRESS Vol.85に寄稿しました。発売日は2月24日です。Amazonでは予約もできます。 タイトル的には非常に恐縮で、僕がこんな記事を書いてしまって良いのか不安でしたが、編集者と査読者の方々の支えもあって無事書きあげる事ができました。 WEB+DB PRESS Vol.85|技術評論社 僕はOSS開発といっても、ほんの数年前の2012年頃までは全くといっていいほどオープンにOSS開発をしていませんでした。そういう意味では、このタイトルからすると非常に遠い存在であったように思います。 ですが、2012年の4月から会社を辞めて大学院の博士課程に入学し、そこからOSS開発を始めました。そう考えても、OSS開発のキャリア的にも約3年になるぐらいでやっぱり非常に短いです。その辺りの背景に関して、寄稿した記事を読むにあたり自分が何故会社をやめ博士課程に入ったのかに

    楽しもうOSS開発 - mrubyで学んだ貢献の流儀と情熱 - 人間とウェブの未来
    tknzk
    tknzk 2017/01/04
  • PHPが動くApacheのコンテナ環境をhaconiwaで1万個動かそうとしてみた - 人間とウェブの未来

    RubyKaigiに行くとにサインを求められるすごいエンジニアが書いたhaconiwaというmruby製のコンテナエンジン(コンテナ環境構築の基盤ツール)があるのですが、少し試してみようと思って、とりあえず1サーバ上に1万コンテナぐらい動かそうとしてみました。久々に今回は自分の作ったOSSではなく、OSSの検証レポート的な記事になります。 haconiwaは僕の好きなOSSの一つで、それはなぜかと言うと、 haconiwaでコンテナを作る際に、haconiwa実行環境にはコンテナの要素機能が全て入っている必要はない 必要なコンテナの要素機能を簡単に組み合わせて、自分が実現したいコンテナ、あるいは、それに準ずる環境を作れる haconiwaによるコンテナ定義をRubyのDSLで表現でき、動的な設定や組み合わせの設定を簡単にかける ということができるからです。その特性から、CentOS6のよ

    PHPが動くApacheのコンテナ環境をhaconiwaで1万個動かそうとしてみた - 人間とウェブの未来
  • インターネットを作りたい - 人間とウェブの未来

    インターネットを作り上げることができる、そんなコミュニティを作りたいとずっと思っている。 インターネットの創成期において、産学両方向の技術と知見を同時に兼ね備え、両方向からのアプローチができるとにかくすごい人達によってインターネットは作り上げられ整備されてきた。それらを新しい世代で引き継ぎ、あの時のように、インターネットの未来に必要な価値を圧倒的速度で作り上げていく若い世代に僕はなりたいと思っているし、そういうコミュニティを作りたいと思っている。 社会活動的観点では、僕が企業だけでなくアカデミアにおいても活動を行い、産学両方向から得られる知識や考え方を学んでいるのはそのためであるし、新規性が重要視される世界での研究開発のアプローチ、実効性が重要視され自らが提供する価値を最大化するためのアプローチ、などなど、各領域における考え方や取り組み方はとても勉強になる。また、昨今では、企業はアカデミア

    インターネットを作りたい - 人間とウェブの未来
  • 特定条件下のclone(2)を4倍速くする - 人間とウェブの未来

    とあるサーバで妙にシステムCPUの使用率が高い現象が置きておりました。 そこで、まずはざっくりとperf topでプロファイルをとってみると、以下のようになっていました。 22.38% [kernel] [k] copy_pte_range 18.44% [kernel] [k] zap_pte_range 11.13% [kernel] [k] change_pte_range 3.58% [kernel] [k] page_fault 3.32% [kernel] [k] page_remove_rmap また、各プロセスのstraceを眺めていると、cloneで0.05秒とかなり時間がかかっているようです。これだと単純計算で1コアで秒間20回のcloneでコア100%占有してしまう程度の非常に低速な処理しかできないことになります。 sudo strace -T -o/dev/stdo

    特定条件下のclone(2)を4倍速くする - 人間とウェブの未来
  • 技術的アウトプットが必要な時代に求められる心構えと社外発表の頻度を増やす事の副次的効果 - 人間とウェブの未来

    この話については、僕が専門としているWebサービス関連の業界におけるお話だと思って下さい。ただ個人的には、もう少し広範囲でも適用できる話なのではないかなとも思っています。 ということで、早速アウトプットすることのメリットから簡単に今の現状をまとめて今後エンジニアはどういう心構えで取り組んでいけば良いか、その中で、社外発表することのメリット、その社外発表の頻度を高める事の副次的効果についてまとめていきます。 アウトプットすることのメリット アウトプットする事やOSS化する事のメリットは、自分も含めて最近随分と語られるようになってきております。ここではそれについてあまり詳細に語る事は省略して、メリットを箇条書きでまとめると、 自分の技術が整理され、振り返りも容易になる フィードバックが得られる 自分の技術とその他社外のエンジニア技術を足しあわせての技術検討(開発)が可能になる 自社だけでなく

    技術的アウトプットが必要な時代に求められる心構えと社外発表の頻度を増やす事の副次的効果 - 人間とウェブの未来
  • HTTP/2へのmruby活用やこれからのTLS設定と大量証明書設定の効率化について - 人間とウェブの未来

    Webサービス事業者として僕が先行して調査したり研究・開発している技術の中で、Webサーバ設定におけるHTTP/2とそのmruby活用についてや、PFS(Perfect Foward Secrecy)を考慮したTLS設定と大量証明書設定の効率化について、社内のインフラエンジニア向けに技術共有を行いました。 内容としては、まずはざっくりと知ってもらう事を目的に、細かい要素技術について深く立ち入り過ぎない程度に、今後弊社でのWebサービスのインフラ技術周りのアーキテクチャを考える上で必要になりそうな事を中心にお話しましたので、少し汎用性に欠けるかもしれません。 特に技術的に見せられないような話ではないので、参考程度に公開しておきます。どこかで喋って欲しいみたいな依頼は随時受け付けておりますので、お気軽にお問い合わせ下さい。 以下の二立てです。 HTTP/2とmrubyの活用 HTTP/2時代

    HTTP/2へのmruby活用やこれからのTLS設定と大量証明書設定の効率化について - 人間とウェブの未来
    tknzk
    tknzk 2016/02/05
  • Webサーバのベンチマークツールはh2loadが便利 - 人間とウェブの未来

    Webサーバのベンチマークをとるのが趣味になりつつあるmatsumotoryです。 Webサーバのベンチマークについては、abからはじまりwrk等を使っていたのですが、最近ではほぼh2loadを使っています。 h2loadはnghttp2というHTTP/2ライブラリのアプリケーションに含まれているツールですが、 HTTP/2(SPDYも)とHTTP/1.xに両対応している ベンチマーク側の同時スレッド数を増やせる TLS及びSNIもサポートしている 最小、最大、平均、標準偏差あたりもちゃんとでる ので、色々プロトコルを変えつつ同じベンチマークツールで、値の目安を出すにはとても重宝しています。 Nghttp2: HTTP/2 C Library - nghttp2.org 実行結果のサンプルは例えば以下、 $ h2load -c 100 -n 10000 https://localhost:

    Webサーバのベンチマークツールはh2loadが便利 - 人間とウェブの未来
  • 2016年の抱負 - 悔しさの回収 - 人間とウェブの未来

    あけましておめでとうございます。 2016年になり、早速今日から仕事はじめのところも多いと思います。ということで、今年の抱負でも簡単に書きます。 2016年1月付でシニア・プリンシパルエンジニアになった 参照: エンジニアの働き方 | キャリア採用 | 採用情報 | GMOペパボ株式会社 前回の2015年の記事でも簡単にふれたように、ペパボではエンジニア職位制度が刷新され役職名の変更と、新たな上位の役職が追加されました。 hb.matsumoto-r.jp その新たな上位の役職がシニア・プリンシパルエンジニアと呼ばれており、1月付で僕が初めて就任することになりました。ということで現在はシニア・プリンシパルは僕だけとなります。 外での活動は目立っているが、一緒に会社に入ってエンジニアとして仕事をしてみると意外と思ってたより普通…というような印象を与えてしまうのは避けたいという思いがありました

    2016年の抱負 - 悔しさの回収 - 人間とウェブの未来
  • mrubyでHTTP/2の画像変換サーバを作った - 人間とウェブの未来

    この記事は、mruby advent calendar 2015の16日目の記事です。 画像やstaticコンテンツ配信系はHTTP/2が有利な状況が幾つかあるので、ついでにHTTP/2を喋る画像変換サーバのプロトタイプをmrubyで作ってみました。ベースはもちろんtrusterdです。なんていったってmrubyのHTTP/2サーバですからね!! 最近また開発を再開しておりまして、昔はh2oやnghttp2のベンチマークに一緒に比較対象として入れてもらったりしていたのですが、しばらく離れているうちに皆さん先へ先へと行ってしまわれたので、また追いつけるようにセッセと勉強しながら実装しだしております。 github.com その他、trusterdについてはこの辺とか、 qiita.com この辺を見ていただくと良いかと思います。 hb.matsumoto-r.jp trusterdのビルド

    mrubyでHTTP/2の画像変換サーバを作った - 人間とウェブの未来
  • ngx_mrubyのTCPロードバランシングを使ってFluentdのTCP通信とグラフ画像へのHTTP通信を動的に集約する - 人間とウェブの未来

    昨日、ngx_mrubyのTCPロードバランシング機能に対応した記事を書きました。 hb.matsumoto-r.jp というのも、実は以下に説明するようなFluetnd+Norika+GrowthForecastを利用したスケールアウト型のシステムを簡単に作りたかったからです。 ということで、まずはプロトタイプ設計みたいなものをフワっと考えてみました。 実現したい事 まずやりたいこととして、 1000台以上のサーバ群からのFluentdによるTCPデータをそれぞれの転送元サーバに紐づく任意のバックエンドサーバに振り分けたい 転送元サーバ群はそれほど増減しない バックエンドサーバをスケールアウト型に増やす場合に、転送元サーバの設定は変更したくない 転送されたログは転送先サーバ内でグラフ化されるので、任意のHTTPクライアントによって取得したい転送元サーバのグラフ画像を適切なバックエンド(F

    ngx_mrubyのTCPロードバランシングを使ってFluentdのTCP通信とグラフ画像へのHTTP通信を動的に集約する - 人間とウェブの未来
  • ngx_mrubyがnginxのTCPロードバランシング機能に対応しました - 人間とウェブの未来

    nginxのv1.9あたりからOSS版でも使えるTCPロードバランシング機能をmrubyでプログラマブルに制御できるようにngx_mrubyでもサポートしました。 github.com これで、HTTPやHTTP/2だけでなくTCPのロードバランシングでもmrubyによって通信をプログラマブルに制御できるようになったわけです。 nginxのTCPロードバランシング機能は、nginx内部ではstreamモジュールとして、httpモジュールとは別で実装しているため、ngx_mrubyでも一から実装し直す必要がありました。 ということで少し面倒だなぁと思っていたのですが、ちょうど、僕の最近やりたい事としてTCPのロードバランサをもう少しプログラマブルに書きたいというのがあって、色々とTCPロードバランサを探したり、既存のソフトウェアで設定を試行錯誤するよりも、自分でnginxのTCPロードバラン

    ngx_mrubyがnginxのTCPロードバランシング機能に対応しました - 人間とウェブの未来
  • mruby-cliを使ってプロセスのfdをリソース使用率を元に解析するワンバイナリなツールpfdsを作った - 人間とウェブの未来

    タイトルのままなのですが、pidから対象プロセスがopenしてるファイルとそのownerを解析し、CPU使用率やMemory使用率と合わせてレポートするワンバイナリなツールを作りました。 というのも、ホスティングにおいては負荷をかけているプロセスについて、リソース使用量を元にopenしているファイルパスやファイルのownerを迅速に知りたい場合が多いからです。 既にあるコマンド、lsofや/procやtopとかその辺を組み合わせるともちろんできるんですが、mruby-cliを使ってone-binaryで作ってみたかったのと、openしているファイルとCPU使用率やMemory使用量同時にサクっと素早く表示してくれるツールがパッと調べた所なかったので実装してみました。 pfds - report a snapshot of the current processes fd github.co

    mruby-cliを使ってプロセスのfdをリソース使用率を元に解析するワンバイナリなツールpfdsを作った - 人間とウェブの未来
    tknzk
    tknzk 2015/10/27
  • Webサーバの仮想ホスト単位のリソース使用量をFluentd+Norikra+GrowthForecastでグラフ化 - 人間とウェブの未来

    ご存知の通り、ApacheのVirtualHost(以下vhost)、所謂、Webサーバの仮想ホストは単一のApacheで複数のホストを処理しています。そのため、複数のvhostを含めたCPU使用量といったリソース使用量をグラフ化することは簡単なのですが、vhost単位となると各vhostへのリクエスト単位でのリソースを計測しておかないとグラフ化することはできません。そういう意味でvhost単位でリソース使用量をグラフ化しようとすると一気に敷居が上がってしまいます。 また、uid毎に実行プロセスを分離しておけば、pacctといったプロセスアカウンティング機能でuidのカウントはできますが、リアルタイムの計測(秒とか分のオーダー)にはコストが高かったり、vhostで提供しているコンテンツによっては、Apache権限で配信されているものもある(静的コンテンツ)ため、正確に計測することは難しくな

    Webサーバの仮想ホスト単位のリソース使用量をFluentd+Norikra+GrowthForecastでグラフ化 - 人間とウェブの未来
  • HTTP/2とmrubyの可能性についてお話してきた - 人間とウェブの未来

    福岡の博多で開催されたHacker Tackleという技術イベントで、「HTTP/1.xとHTTP/2が混在する時代のウェブサイト設計とmruby in HTTP serverの可能性」というタイトルでお話をしてきました。 hackertackle.github.io HTTP/2に関しては既に素晴らしい発表が幾つかされており、特に今年のYAPC::Asia 2015で id:kazuhooku さんと id:Jxck さんが発表されたHTTP/2の内容は素晴らしいです。今回の僕の発表で同じような所を喋ってもどうしても二番煎じになってしまうため、よりサーバ実装についてや実際に使う時にHTTP/2のどういう特徴がチューニングに関わってくるかという話を、mruby組込みをまじえてお話しました。特に、サーバプッシュや優先度制御、それを制御するための方法について言及しています。また、現在公開できる

    HTTP/2とmrubyの可能性についてお話してきた - 人間とウェブの未来
    tknzk
    tknzk 2015/09/28
    そろそろ試したい
  • mruby事例を中心に「Middleware Configuration as Code」という発表をした #rubykansai - 人間とウェブの未来

    今日は第68回Ruby関西勉強会にお誘い頂き、ミドルウェアへのmruby組込みの考え方であるMiddleware Configuration as Codeについて、事例を中心にお話しました。 rubykansai.doorkeeper.jp 会場がファーストサーバさんということで、何やら母校にいくような、地元に帰るような不思議な気持ちになり、いつもとは違う新鮮な気分で発表に取り組む事ができた気がします。 内容としては、まさにMiddleware Configuration as Codeであり、 Middleware Configuration as Codeに至る背景 Middleware Configuration as Codeの定義 Middleware Configuration as Codeの実装やメリット ngx_mrubyの簡単なチュートリアル 弊社(ペパボ)における事

    mruby事例を中心に「Middleware Configuration as Code」という発表をした #rubykansai - 人間とウェブの未来
    tknzk
    tknzk 2015/08/10
  • H2Oのmruby拡張が実用的になってきた件 - 人間とウェブの未来

    H2Oにmruby拡張の提案を行いmergeされてから幾つかのPRを経て、少しずつ実用的になってきました。 github.com 今日は簡単にその使い方を紹介しようと思います。 h2o_mrubyを有効化したh2oをビルド h2o_mrubyを有効化してビルドするのは簡単で、OSのライブラリ環境(/usr/lib/以下とか)にlibmruby.a等のmrubyライブラリがある状態で、 cmake -DWITH_MRUBY=ON . make h2o するだけで、h2o_mrubyが有効化されたh2oバイナリがカレントにビルドされます。簡単ですね。 またこの記事も参考にすると良いかもしれません。 qiita.com 使えるメソッド mod_mrubyやngx_mruby程メソッドはまだ充実していませんが、少しずつ使えるものを実装しています。また、mod_mrubyやngx_mrubyとの互換

    H2Oのmruby拡張が実用的になってきた件 - 人間とウェブの未来
  • 学生として、フリーランスエンジニアとして、1年間子育てをして思った事 - 人間とウェブの未来

    3月26日で子供が生まれてちょうど1年になるわけですが、この1年間学生とフリーランスエンジニアをやりながら子育てをしてきました。保育園に預ける事はせず、当に朝から晩までつきっきりの生活です。超寝不足でした。 で、4月からは福岡にあるGMOペパボという会社で働く事になっています。もう明後日ですね。もちろんそれで子育てが終わりというわけではなく、これからもずっと続いていきますが、生活が大きく変わる事は間違いありません。 そこでこの1年、世界中の誰よりも我が息子といる時間が長かったと自負しているわけですが、その中で思った事、そして4月から働くにしても家庭内で積極的に手伝った方が良いと思う事を書こうかと思います。 とはいえ、まだ1歳になった子供についてしか書く事はできないので、これから子供が生まれて最初の1年を過ごす人に参考になればと思います。また、子供にもよって全然違ってくると思います。哺乳瓶

    学生として、フリーランスエンジニアとして、1年間子育てをして思った事 - 人間とウェブの未来
  • 1