2018年振り返り

#retro

仕事

今年は昨年からのRailsアプリケーション開発と併行して、AWS上のサービスの保守・運用も行うようになった。主にやっていたことは以下のようなことだった。

  • RailsアプリケーションをECS上で稼働させるための環境を整備した。主にDockerfileやデプロイフローの整理を行った。Asset precompileをビルド時ではなくデプロイ時に行うようにした変更がさまざまな要素が絡まり合ってけっこう大変だった記憶がある。
  • 社内Wikiや各開発者のローカルで管理されていた環境変数をパラメータストアにすべて移行した。僕が保守・運用をやるようになったのは前任者の退職がきっかけで、環境変数まわりの引き継ぎがかなり難しかったため、強いモチベーションで環境変数の管理方法を見直した。
  • JenkinsからCircle CIに移行した。Circle CIについてはこの1年でだいぶ詳しくなったけど、少しCircle CIに寄せすぎている部分があるので、AWS CodeBuildなど他の選択肢を踏まえてバランスをとりたい。
  • Datadogによる監視体制を整備した。SRE本を参考に何を監視すべきかを検討し、それをDatadogのTimeboardやScreenboardで可視化できるようにした。
  • Terraformプロジェクトのリファクタリングをした。Terraformの実行環境をDockerベースにしたり、スケールしにくいmoduleを適切な粒度にするためにterraform stateコマンドを使ったりした。

今年の初めはまったくAWSのことをわかっていなかったので、1年で大きく進歩したと思う。

プライベート

プライベートでの開発は昨年と比べるとサボリ気味だった。主な活動は以下のようなことだった。

  • homepage: gulpベースからGatzby.jsベースに書き直した。また、dependabotを導入したことでライブラリのアップデートが自動化され、GitHub pagesの運用コストがかなり小さくなった。
  • reversibility_checker, batch_rollback: Railsアプリケーションのmigrationを安全に行うためのrubygemを2つ書いた。結局、productionで採用してないけど、いずれ使えるときがきそう。
  • slack-thread-webhook: Goの復習を兼ねて身近な問題を解決するために書いた。homepageのCIの通知で使っておりドッグフーディングしている。

また、読んだ技術書では以下が特に印象に残っている。

  • SRE本: 今年からサービスの保守・運用を行うようになった自分にとって日々の仕事の指針となっている。Googleのエンジニアが日々どんなことを考えて開発しているのかがいろんな側面で追体験できるような感じで、自分の無力さを思い知らされた。
  • Clean Architecture: プログラミング言語に依存しないアーキテクチャの話でRailsではないアプリケーションを書くときの指針としてとても参考になった。自分のこれまでの経験則でわかっていたことを本書で丁寧に解説されていて、頭が整理された。
  • マイクロサービスアーキテクチャ: 今の大きな技術的流れになっているマイクロサービスに入門するにあたって、背景を理解するために買った。いま携わっているモノリシックなサービスの運用とは異なる部分(監視とか)をいろいろな点で整理されていて、今後も折に触れて読み返したい本だった。

その他のトピックとしては、以下のようなことがあった。

  • CourseraでMachine Learningのコースを修了した。以前から興味があった機械学習を勉強しようと思って、評判が高いコースを受講し、無事に最後までやり遂げることができた。修了後も少しずつ機械学習の勉強を進めていたけど、コードを書きたい自分としては少しスタイルが違うような気がして断念してしまった。とは言え、ちゃんとチャレンジした上で自分には向いていないということがわかって良かった。
  • はじめてISUCONに参加した。結果的には予選を通過できなかったけど、データベースやRedisなど普段あまり深く理解できていない部分を勉強するいいきっかけになった。今後もISUCONに挑戦したい。
  • Rails Girls Tokyo 10thのコーチをした。こうしたRubyコミュニティに顔を出すのは数年ぶりだったけど、久々にコミュニティ活動の面白さを感じれてよかった。普段はやらないようなことをあえてやってみるのも時には大事だなと思った。