テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(akashic report) finchからakka-httpに移植完了!

週末が完全に吹っ飛びましたが, akashic-storageを, finchベースからakka-httpベースに移植することに成功しました.

github.com

sprayやakka-httpをベースに作ったものを, 一度, finchという関数指向の強いフレームワークベースに移植して, もう一度akka-httpに戻ってくると, 設計が改善されました. finchやakka-httpのような関数的なHTTPフレームワークを使うに当たってのノウハウを得たように思います. 結果として, 今のakashic-storageの設計に, まぁまぁ満足しています.

ただ一点だけ, S3を実装するには不便だったのは, 先のブログでも述べたように, Content-Typeを勝手に書き換えるという挙動です. charsetを追加する他にも, Content-Typeがない場合に勝手にoctet-streamだと判断することもあるため, そのような場合もあることを想定して, 第一案でダメだったら第二案で〜という実装にする必要があります. これは第一案で決まるならば性能オーバーヘッドはないですが, その他の場合で決まると多少のオーバーヘッドがあります(とはいえ, 小さいです. パフォーマンスより, このWAを説明するコメントが気に食わないです)

テストの通り具合としては, finchの時はあった症状が改善されたりと(minio/mcとの相性問題です), 良くなりました. この点は設計の改善以上に満足しています. おそらくakka-httpベースで実装を進めることは正しいはずです. finch/finagleにもかなりの学習コストを払ったためその点は惜しいですが, 本気で使い倒そうとしないと学習する機会も得られないですから, こちらに満足しようと思います. finchの開発者のヴラジミールはakashic-storageの開発のサポートにかなり助力してくれましたから, もうfinchは使わない今までさんくるということは伝える必要があります.

akka-httpはまだexperimentalということですが, 1.0-M2の頃と全く変わってなかったです. もともとかなり作りこんだsprayを叩き台にしているため, 設計上の変更はこれからも微小だと期待出来ます.

みなさんもakka-httpを使いましょう!