decadence

個人のメモ帳

finagle-mysql/finagle-redis connection init sql/command stack modules

これは何

finagleに以下のpatchを追加した

  • finagle-mysql: HikariCP にあるconnection-init-sqlの機能
  • finagle-redis: Connection作成時にすぐに一度だけAUTH, SELECTコマンドを発行する機能

April 2020 Patch Release Notes - Version 20.4.1

f:id:krrrr:20200506075143p:plain

続きを読む

社会人5年目振り返り

年度末振り返り

仕事面

今の会社に入って2年と数ヶ月

取り組み

  • 分配金再投資
  • おまかせ積立
  • 目標
  • 口座システムフルリニューアル

気持ち

新しいシステムを作っているが、チームは優秀で学びがある。学びもあるし、同じペースで働けるような人がいるのでそこそこ楽しい。これめっちゃ面白そうじゃん!みたいになるサービスが他にあるなら揺れるが、今の快適度・条件などとの兼ね合いで、あまり動くことは検討していない。

副業

今は1社だけ副業をしていて、10ヶ月ほど手伝いをしている。本業の方がわりとふんわりしているので、副業の方でそろそろ違うことしたい気もする。

https://www.krrrr38.com/#/cv/ja

日常面

日常はむずい。何もやっていない感だけは避けたいので、意識高く追われていたい。今年こそジムに行くかって気持ちもあるけど、異常に太ったりはしてないし、副業落ち着いたらにしたいから、nヶ月後に再考。絶対だぞ。

エンジニアリング組織論への招待みたいな本に対する学びが多くなってきて、技術者として心配。

リモートワークが増えてきたけど、朝にリングフィットアドベンチャーやるとわりと気持ち良い。

その他

3月は誕生日

www.amazon.jp

RustでもServer::Starterでhot deployをする

Server::Starterを利用すれば、hot-deployが実現出来る。

Server::Starter とは

start_server をざっくりと説明すると、 start_server が作成したsocketを子プロセスへ共有して、あとは start_server にSIGHUPのシグナルを送ってあげることで、子プロセスを入れ替えてhot deployが出来るものだ。詳しくは以下の記事を読んでも良いし、実装自体も少ないのでコードを読めば良い。

Server::Starterから学ぶhot deployの仕組み - $shibayu36->blog;

この子プロセスというのは、start_server の子プロセスになるだけで、以下のような特定の条件を満たせればなんでも良いのだ。

  • hot deploy時に start_server がSIGTERMを子プロセスへ送るので、SIGTERMによりgraceful shutdownを行う
  • 子プロセス起動時に start_server が作成したファイルディスクリプタの情報が環境変数で渡ってくるので、それを用いてacceptする (しなくてもいい)

この対応は、過去にも多くの人がやってきたことではあるが、Rustでも簡単に出来るように、今回、子プロセス用のcrateを作成した。

https://crates.io/crates/server-starter-listener

続きを読む