のんびりエンジニア

のんびりエンジニアリング

最近やってみたいと思っている技術ネタ

最近、dockerやrust, go, elixir, kotlinなど幾つかのこと勉強して、やりたいことが湧き上がってきたのでメモを残しておくことにした。

サービス分割とDockerによる環境提供

仕事で作っているサービスはアクションによってもっと最適な言語やFWを使いたい部分もあって、例えば普段はRailsを使っているが単純な作業をやるだけで応答速度を上げたい部分なんかはGoを使ってもいいと思ってたりします。 サービスのコードベースが大きくなってくるとちょっとずつ分けたほうがいいところもあるかなと思っていて、そうなると細かく分かれたサービスを一つ一つ立ち上げるとか管理するとかすることのコストがかかってくる。

マイクロサービス化といえばそうなんだが、マイクロサービス化というとそっちの定義の話になってしまうのでサービスの分割くらいの感覚で考えている。 Goはマイクロサービスを開発するのにすごく向いてそうですよね。

そういうところでDockerをうまいこと使えば簡単になりそうだし、他チームの人も簡単に環境構築出来るし困らないかなと思ってもいます。

複数サービスを統合したテストの仕組み

複数サービスの構成になると特に結合テストが大事になってくるかなと思っていて、複数のサービスが組み合わさって正しく動いているかの保証をしたい。 これまではRailsのrequest specとか使ってたりしたのがそもそもそのRailsのサービスに閉じない、他のサービスをテストしないといけなくなってくるのではないかと。

そうしたらCasperJSやNightwatch.jsの出番になるんだろうか。 全くよく調べていない状況だが、その辺のライブラリはHTMLをテストするのに向いている気がしていて、WebAPIのテストに向いているのだろうか。 JSのライブラリなのでHTTPのリクエストやjsonのテストはうまく行えそうではあるが。 Rubyなどで作っても良いのだが、テストはJSで書いたほうが最近のWeb事情に親和性がある気がしているのだけど、なんでかは深掘り出来ていない。

これもテスト環境をDockerで準備出来ていると誰でもさっと実行出来そうで良いな。

Kotlinを使ったWebサービス開発

突然話は飛ぶがKotlinを使ったWebサービス開発も興味がある。

元々JVMWebサービスでは大量の知見や実績があるところに、とても分かりやすく見通しが良さそうな言語で開発ができたら開発者として単純に楽しそうと思っています。 最近はKtorというKotlin公式のフレームワークも開発され始めているし、Androidのみの言語じゃなくWebサービス開発に使ってみるのも面白いのでは。 Javaでもいい?うーん、JVMはすごいと思うんだけど言語としては継ぎ足し継ぎ足しになっているし、新たにデザインされた言語を使いたいなと個人的には思う。

まあただ、Ktorはフレームワークはまだ成熟には程遠い状態(ドキュメントも書きかけ)なので仕事などでは辛い気がしています。 Kotlinはもうプロダクションでいける

github.com