ここ最近のお仕事

デスマってるけど、新しいものを試せたり知見を得た。箇条書きでメモ。

Ansible + Serverspec でサーバ構築を自動化した

  • 自動化便利。テストも書いたら安心感が得られた
  • Serverspec 動かす際に spec_helper.rb を少し変えたけど、ここを変えるだけで、いい感じに動くの良い
  • 最初は Ansible の assert でやろうとしたけど、オートメーションツールが何であれ、単体で動くServerspec の方が性に合った
  • ただ他の開発者(特に Windows)に Ansible を課すのは厳しい
  • Golang だったら楽なんだろうなと思った

仕事で Slack を使うようになった

JAX-RS(Jersey)を使った

  • 過去案件で使った Jersey ベースの FW にしたけど、ORM が無くてクエリをゴリゴリ書くパターン
  • 素直に ORM 探して使えば良かった
    • Java の ORM って結局何が良いの?
  • というか DropWizard にすれば良いのか
  • ユニットテストも DB の取得した結果とかを Excel の表と一致するとかが書かれていた
    • 想像以上に辛い
    • 開発にバイナリファイルを多用するのは良くない
    • Java に Factory Girl 的な物はないんかな
  • Setter/Getter は IDE で自動で作るから良いけど、コメントをいちいち書かないと行けないのは辛い
    • Lombok 使えば良かった
    • すっかり存在を忘れてた orz
  • JVM の起動が遅くて辛い
    • プライベートで作ってる Python の方は遅くても数秒で起動するけど、数十秒起動に掛かるのは辛い
  • JSON Schema を使った
    • バリデーションもこれ
    • API がどういうリクエストを受け付けるか分かりやすくなったので便利

マイグレーションツールに Flyway を使った

  • ツールを使うと便利
  • ただ Python の Alembic の方が生のクエリを書かないから楽に感じた

平行して担当している保守案件のせい^H^Hおかげで JVM の設定とかに少しずつ詳しくなってきた

  • ストップ・ザ・ワールド辛い
  • 本当に数十秒止まるんだな
  • 元々一人でやってた人が退職したため、引き継いだけどチームの体制作りからやった
  • チームで回せるようにして、そうなってきた
  • 属人性を無くすため全てチケット管理
    • 問い合わせを全てチケット化
    • お客さんに返信する内容は全てチケットに紐づけてレビューを徹底
      • チーム全員の OK が出たら返信を出す
    • ナレッジの共有もチケットに
    • Git で週の振り返りを共有
      • reST でも良かったけど、Markdown で書いてる
      • チームメンバーに reST と Markdown どっちかを選ばせたけど、エディタがある Markdown が良かったみたい
  • まだ手動でやってるので自動化出来る所は自動化していきたい
  • ドキュメントがほぼないので、問い合わせのたびにコードを見るが、再現とかの作業は出来るだけ若者に振るようにした
  • ちゃんと手を動かしてくれるから良い感じ
  • Tomcat の ログをパースしてグラフ化するツールをチームのメンバーに作ってもらった
    • 言語は何でも良かったけど Golang に興味があるって言ってたので、Golang で作ってもらった
    • ログをビジュアライズ化されて、負荷の状況とか分かって大変良い(グラフは Excel)
    • 自分がさっと作れるの言語は Python だけど、チームのツールの言語は Golang にしていきたい


案件が複数並列で稼働したためデスマったけど色々知見が得れた。
平穏な生活に早く戻りたい…。