2018年の個人目標の一つ。もう一月が終わろうとしている...。
やりたいこと/目的意識
ミドルウェア/インフラで見れる範囲を少しずつ増やしていく/理解を深めていく。仕事で実際使っているっていうのもあるし、インフラ方面への理解を深めたいって気持ちが強い。苦手意識を少しでも減らしていきたいし、この辺含めてもう少しチームの戦力になりたい(今はあまりにも無力...)。
お題
題材としてはgo-active-learning。今はcliアプリになっていて、機械学習っぽいエントリを推薦してmarkdownに吐き出すという手抜き構成。自分が継続的に使っていたり、愛着がないとなかなかやる気にならない性格だけど、去年それに該当するようなものを書いていた自分good job。データ収集のクローラや格納先のElasticsearchなども去年から稼動している。
- 劣モジュラ最大化によるエントリの推薦をやってみた - yasuhisa's blog
- 能動学習で効率的に教師データを作るツールをGoで書いた - yasuhisa's blog
- 自宅のElasticsearchとKibanaをAmazon Elasticsearch Serviceに引越し - yasuhisa's blog
これをあれこれミドルウェアを使いつつ、ひとまずwebアプリ化。できてきたらmaster/slave構成にしたり、webサーバー/アプリサーバー/dbサーバーの同居をやめるとか色々やってみる。自分の用途的にはそうなっている必要は全くないが、ミドルウェア/インフラ回りで自分で構築してぶっ壊せる砂場を作りたい。同僚が似たような活動をやっていて、それの真似とも言える。
詳細
具体的にはこの辺が遊び要素かなって思ってる。大して難しいことはやるわけではない。
- キャッシュにredis
- 今はバイナリのファイルをローカルに持ってる。書き込みとか毎回やってると大変なので、適当にバッファリングしながらやってる
- 学習データの管理
- ぽすぐれ。テーブル構造はシンプル
- やればいいだけ
- master/slave構成やレプリケーション回りって実際どんな感じになっているかを知る
- nginx
- 自分のお手頃webアプリを作ると、ローカルで済ませるかherokuくらいしかやってなかった
- バックエンド複数立てて割り振るとか、設定周りとかログ周りを一通りやってみれるようにする
- 複数台構成。リクエストの割り振りとかあれこれ実験してみる
あとはこれらのprovisioningもできるようにする。前期に少しansible入門していたので、これを使う。cloudformationとかも使って楽をしたい。複数台立てたり、Amazon Elasticsearch Searviceへの通信とかもあるので、ネットワーク周りを含めて考えたい。