タグ

ブックマーク / diary.sorah.jp (7)

  • 非同期ジョブをユーザーアクションに組み込まない

    (勤務先に投稿した社内ブログの焼き直しです) ある日同僚から ActiveJob の perform_later で Barbeque にキューした非同期ジョブの起動が遅いと言われた。が、非同期ジョブの使い所について個人的な考えを書いてみることにする。 相談は「非同期ジョブの結果をユーザーに返しているため、高速になって欲しい。現状、最大で数分の時間を要す旨のメッセージを表示している」という内容でした。具体的には {内部 API} が重く、一部の処理を非同期ジョブにしていてユーザー体験の悪化につながっているとのこと。 盲目的に非同期にしても嬉しいことはない 結論としては、非同期にするのであれば丁寧にやれば良いけど、そもそも同期的でよくない? と考えて欲しいと返した。 まず、個人的にはユーザーアクション起因かつユーザーへフィードバックする必要のある処理を非同期ジョブにするのは当に長時間かかる

  • コスト最適化目的で個人 AWS アカウントの整理をした

    ここしばらく円安が続いているのと、結局自宅サーバのおもりがへたっぴで崩壊し続けている関係で EC2 とかばんばか使っていたら日円コストが嵩んでしまっていた。2024/2 から Public IPv4 Address 課金も開始されるのもきっかけ。 なんとかすべく 2023 年末に休みを取って大整理をやった。サボっていたけどこのままだとさすがにキツいなと思って基的にはしょうもない整理です。基的には homelab として意図的に色々あそべるようにしていたのを止めたりとかになる。ご笑覧ください。 どんなもん 月間コスト 378 USD (2023/8) → 153 USD (2023/12), without tax 日円コスト 59,099 JPY → 24,583 JPY/mo, with tax 内訳 (USD); EC2-Instances: 140.92 → 61.27 S3

  • ISUCON5 で準優勝してきた #isucon

    予選に引き続き、チーム白金動物園として rosylilly, mirakui と ISUCON 5 の決勝に参加した。 なんと 2 位を獲得した。やったぜ! いや fujiwara 組に負けたのは悔しいけど。 分担は予選とあんま変わってなくて、mirakui がインフラ・分析、rosylilly が実装 (あと博打)、わたしが実装とインフラを良い感じにやっていた。 やったこと 白金動物園の解答コードは予選含めて shirokanezoo/isucon5 に push したのでそれを見つつ、最終的に何が変化したかの話を書く。細かい試行錯誤とか、時系列での話は最後に「タイムライン」としてまとめてのせておきました。 利用言語は主に Ruby。補助的に Go で書いたフォワードプロキシサーバーを入れた。 diff 見る限り +2102 -54 lines なんだってさ。 app.rb に対しては

    clavier
    clavier 2015/11/03
    ISUCON5 で準優勝してきた #isucon - diary.sorah
  • #kosendj #kosenvj を支える技術 (バックエンド編)

    #kosenvj を支える技術(フロント編) のバックエンド編です。 高専DJ部 (kosendj-bu) 御用達の「GJ」とよばれる VJ もどきシステムのバックエンドについて説明したい。 GJ? VJ? 詳細は ↑ の @neo6120 が書いたエントリを見てほしいのだけど、簡単に言うとインターネットにありふれた gif を適当につかって VJ をしようみたいな試み。 ↓ の動画をみるとなんとなくわかるかも。 やばいかんじある #kosendj A video posted by yuya fujiwara (@asonas) on Jun 27, 2015 at 2:17am PDT kosendj-bu #3 まで まずは今迄どうやっていたかの話をする。 gj については ↑ に貼った @neo6120 のエントリを読んでもらうとして、こんなかんじ。 フロントしかなくてバックエンド

  • haproxy の優雅な再起動 - diary.sorah

    tl;dr haproxy -sf による再起動では SO_REUSEPORT が使えないと瞬断が発生する。SO_REUSEPORT は Linux 3.9+ か、CentOS, RHEL 6 では最新のカーネルに上げると利用できる。 haproxy は自分自身の設定を reload するみたいな便利な機能はない。 そのかわりに、 -sf オプションへ既存の pid を渡して新しく起動してあげると、入れ替わってくれる機能がある。 http://linux.die.net/man/1/haproxy Send FINISH signal to the pids in pidlist after startup. The processes which receive this signal will wait for all sessions to finish before exiting

  • #isucon 3 予選まとめ

    ISUCON 3 の予選、土曜の方に参加していました。 まず、とても楽しませていただきました。運営の方おつかれさまでした! 結果の方は、悔しいことに 1 日目 5 位以内には残れなかったのだけれど、 暫定予選通過チームを除いた 2 日通しのランキングで 3 位に残る事はできたので、 一応 (暫定) なんとか戦には出場できる様子。 で、予選で何をしたかだけれど、問題については 公式の解説記事 を見てもらうとして以下に残します。 尚、使用言語は Ruby でした。スコアは 10813.4。 チーム “白金動物園” mirakui, rosylilly, sorah パンダ、ハト、(>ヮ<)/ ? 白金台方面から参加 mirakuiと私がopsもしていた (記憶) 最終的に手を加えた事 middlewares, app Ruby 2.1.0dev, redis が入った httpd Apach

  • fluentd の output plugin のテストのかきかた

    fluentd のプラグインのテストで、他のoutputも利用するタイプのプラグインはどうテストするのかなあと思ってしらべてみた。@tagomoris さんの out_forest はちゃんとテストが存在したのでそれを読む事に。 https://github.com/tagomoris/fluent-plugin-forest/blob/master/test/plugin/test_out_forest.rb#L416 まず fluentd のプラグインのテストの書き方から理解していないので理解しなければ、と 公式ドキュメント を読むと: Please see Fluentd’s source code for details. うっ、はい… まず前準備に Fluent::Test.setup を呼ばないといけないっぽい。これ、engine.rb に書いてある所為でgrepしないと見つか

  • 1