Whimlog

寝るまでが一日

Isucon8 予選に出場した

9/15 に参戦した記録を残しておきます。

今年は道玄坂旅情というチームで @kitak, @konpyu のお二人とチームを組み参加しました。

順位とスコアは 147位 (3,097点) と去年より健闘したものの、10,000 点の壁は超えられずといった結果でフィニッシュです...負けたのは悔しいですが、とても楽しかった、あっという間に 8h 過ぎました!

準備

去年は php で参加したのですが、今年はメンバーも変わり ruby で参加することに。

本番2週間前に集合し、ISUCON7 の問題を解きました。去年、参加した時の知見をベースに戦略を立てました。いかにキャッシュをするかが勝敗を決めそうだということで、「Redis 入れるぞ〜」という流れになりました。

当日の話

当日は、僕がミドルウェア周りの設定を担当し、メンバーにはアプリケーションチューニングに集中してもらうという体制にしました。 初っ端から ssh ディレクトリの権限設定を忘れて公開鍵認証できないとか、nginx の設定忘れて静的コンテンツが配信できないというやらかしがありました。

デプロイスクリプトは別のディレクトリにデプロイして、アプリケーションの symlink を貼るようにしていたのですが、もっと雑な感じで更新してよかったなと思いました。シムリンクが原因でアプリケーションが動かない状態になったので、提供されたディレクトリ構成を保ちつつチューニングしたほうがロスがなさそうです。

予選問題では想定していた nginx ではなく h2o だったのがインパクトありました。h2o を lb としても使いたかったですが、どうやらそういう機能は提供されておりませんでした。(/etc/hosts で dns ラウンドロビンさせるらしい)その結果 nginx に proxy して他のサーバの nginx と webアプリにバランシングする構成になってしまいました。今思えば h2o をサッと捨てればよかったのですが、 前述した nginx の設定忘れによりこの構成で終えました。

アプリケーションのチューニングに関しては、ボトルネックになってる部分は直ぐに特定できたものの、根本的な対処ができませんでした。 キャッシュ戦略も実行していたのですが、完成後にイニシャライズ時にキャッシュしてないからベンチマークでスコアが出ないという、まぁそりゃそうだという問題が起きたため、Redis の出番が完全になくなりました。僕は無駄なクエリ(* でとってるやつ)を調整したり、インデックスを見直したりしていましたが、あまり効果が出ず。こういう細かいところは後々効いてくるのかもしれませんが、最初のボトルネックが解消されないとベンチマークのレベルが上がらないので無意味になってしまったように思います。

最後の1時間前くらいまで 2000 点も超えられずなんでや〜となってたところ puma のスレッドとワーカー増やしたら 3000 越えしてそのままフィニッシュです。

よかったところは、去年より気持ちに余裕がもてたところ、1年かけて視野が広がったところなどがありましたが、結果に結びついてないですね!去年の反省点は克服できたかなと思います。

以下、来年に向けてのメモです。

scrapbox.io

前回の記録は以下になります。

asuforce.hatenablog.com

まとめ

今年は今まで以上の参加チーム数だったのにもかかわらず、素晴らしい問題、素晴らしい時間配分、素晴らしいダッシュボードを提供していただいた運営メンバーには感謝しかありません。とても楽しかったです。

チームメンバーのみなさんもありがとうございました。大変勉強になりました! チーム内でもリベンジするぞという声が上がっており、早く予選を通過したいです。 去年より成長を感じることはたくさんありましたが、それ以上にもっといけるという気持ちがありますので、来年も必ず参加します!

merpay インフラTALK! に行ってきました

行ってきました

8/30 に開催された merpay インフラ Talk! に参加してきました。
merpay が今目下作成中のプロダクトのインフラ周りについてお話するというイベントでした。

当日の様子

ラムネを見つけて飛びついたのですが、お酒を開ける音と比べ物にならない音がしました...

GCP 上で使える Cloud Spanner の話が面白かったです。 Google 独自のサービスなので、開発環境でも Spanner を作成しなければならないという苦労があるようですが、可用性が高く、マネージドという部分が魅力的だなぁと思いました。

最近 Scrapbox を使うのにハマっているので、メモもそっちで公開しています

scrapbox.io

まとめ

まだプロダクトがローンチされていない状態ですが、隅々まで技術の導入や挑戦をしていこうとしているのを感じました。メルカリでのノウハウを活かしている面白い会社だなと思いました。

今回のお話は Spanner, Microservice, データ基盤, Scala などインフラと言っても幅広い内容を取り上げていて最後まで楽しむ事ができました。(Scala は知識なさすぎて置いていかれましたが...)

Vol.2 もまた聞いてみたいと思ったのと、やはり運用の話も聞きたいのでプロダクトのローンチを楽しみにしています。

今更ですが... mercari.go #2 に行ってきました

今更どうしたの?

Dropbox を整理してたらいつぞやの mercari.go #2 のメモが出てきたので整理して公開します。
8/10 の話だから記憶からほぼパージされてしまっていて悲しい...
しかも、この日は pc がないからタブレットでお話を聞いたので、メモのクオリティも低いです。

当日の様子です...

以下メモになります

Set softengineer in test

@Masudak san

  • テストのクオリティを保つ基盤を作る
  • 各レイヤーにsetがいる
  • Uk向けのテスト環境が必要になったので発足
  • 開発環境やqa環境を整備
  • k8s go のproxy を活用してテスト環境を作った
  • grpc を rest で話せるツールを作った

Go で graphql サーバをたてるぞ

@Wakame san

  • Graphql ってなに
  • Restapi の上位五感ではない
  • Resolverの集合がサーバ
  • Github の grapsql api が便利
  • Gqlgen
  • Getting start やってみてください
  • Relay を勉強してほしい
  • Ui側を美しく設計するために
  • Restapi は rpc
  • 正しいリクエストの投げ方を知る必要がある

Software Engineer, Infrastructure

@cubicdaiya san

  • Softengineer infrastructure
  • Sre との違いは開発の比率が多い
  • メルカリは2014からgoを使ってる
  • 運用向けにツール
  • ツールはrpmで配布している
  • ツール、ミドルウェアの紹介
  • Slackboard slack クライアント プロキシー
  • Go-httpstats
  • 新卒氏作
  • その他多くの OSS が紹介されたのですがメモ忘れた

まとめ

小並感な感想になってしまうのですが、 Go がメルカリ内の多岐に渡る部分で使われているなというのが印象的でした。小さいツールかアプリケーション、テストを支える部分まで幅広い要件に対応しているので、自分の関わる環境でも小さく導入してスケールさせていければと思いました。

当たり前ですが、メモしたら次の日には公開したいですね。