テストステ論

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

(akka-s3) akka-httpをやめようと思う

この2日, POST Objectリクエストでファイルがライト出来たり出来なかったりして, かなりうんざりしてきた. 昨日は2AMまで調査をしてしまったし, このままではakka-httpに殺されてしまう.

akka-streamは, とても良い技術だと思う. が, 何でも関数型で書けばいいということではないのと同様に, アプリケーションを選ぶ. 新しいウェブバックエンドを, akka-streamで実装しやすいように綺麗に設計して, akka-httpで作ることは素晴らしいことだが, S3でakka-httpにこだわると, 苦しむだけだ.

よって, akka-httpで実装するという線は捨てることにした. sprayに戻せば動くものは出来るが, sprayはやがてdeprecatedになってしまうので, sprayで作っているオープンソースというのはもはや魅力がない.

では, akka-httpを捨ててどのフレームワークに移行するかというと, Finch/FinagleかFinchを考えている. とりあえずこの2つについて調査をして, 行けそうなものを選ぶ. どちらも一般的なことは出来るだろうから,

  • multipart/form-dataを解析出来るか
  • Stream[T]を返すことが出来るか(CompleteMultipartUploadで求められる)

あたりの調査をすればよいだろう. あとはパターンマッチングの容易さなども判断基準になる. (利用プロジェクトを称えてくれたら最高)

第一感はFinchだ.

どうやら最近, Multipart対応が入ったらしく, コードを見る限りでは問題なく利用出来そうだ.

(追記)

Streamでのレスポンスも, ぎりいける感じはする.

https://twitter.github.io/finagle/docs/index.html#com.twitter.finagle.stream.StreamResponse

(追記)

UnfilteredもMultipartいけそう. こちらの方がエレガントな気がする.

Unfiltered/README.md at master · daggerrz/Unfiltered · GitHub