と思う。そんで、できるだけ負債を貯めこまないような仕組みにして、開発スピードを加速させていきたい。たぶん、それができたら、なんかWebアプリエンジニアとして自信がつきそう。な気がするので。
じゃあ何から勉強しようか?
今年はSpringBootとかDDDとかMicroservicesとかを眺めて過ごしててみて。結局どういうことができると嬉しいかなと考えると。
- アプリケーションを小さく作って考える範囲を狭くしたい。
- できるだけバッチ処理じゃなくてリアルタイムに処理をしたい。
- アプリケーション同士がメッセージング等で非同期にやり取りをしていたい。
- アクセス数に合わせてアプリケーションのインスタンスを自由に増減させたい。
これなんてGAE?という感じがするんですけどね。GAEを僕が触ってたのは5年前くらいで、ここ数年は触ってないので、今どんな感じなんだろうなー?とは思いつつ。それは置いといて。
で、じゃあ何から勉強しようか?と思って。
DDD?メッセージング?
IDDDでやってるみたいなメッセージング系の勉強したら、非同期で色々処理できそうだし、集約のトランザクションもうまく扱えそうな気がするなー。って、でもこれってつまりその前にアプリケーションの土台のアーキテクチャのスキル必要そうだな。先にそっちか。
Webアプリかな?
SpringBootで雛形的なものを作って、簡単にアプリを作れるようになる?それか、SpringCloudってのがあるらしいから、それ使ってMicroservicesについて勉強してみる?・・・まてよ。作れたとして、それを動かす仕組みの方が整ってないとつらそうじゃない?
じゃあCI/CD系?
今、僕ができてないのは、「簡単に」CI/CDするってところだなぁ。テスト用の環境設定とか面倒なので、インフラごと作って捨てるようなコンテナベースのCI/CDしたい。
コード書いてpushしたら、自動的に環境が作られてテストが走ってテストが終わったらコンテナごと捨てられるようなの。
インフラ as code?
まずは、そういうイミュータブルインフラストラクチャーって呼ばれてるもの?の勉強が必要なのではないか・・・。←いまここ
えー。インフラとかネットワークとか全然分からんのぅ。Chefとか、Dockerとか、なんか知らんけどなんとなくOpenStackとか?
OpenStack
という流れで、OpenStackの勉強をしてみようかなと思い、本を購入。今4章まで読み終わったので、5章からのコーディングに入ってくところ。
全然何も考えずに買ったのだけど、まえがきに、この本は「OpenStackの環境を提供する側」じゃなくて「OpenStackをユーザー視点で活用しつくすこと」がコンセプトだよ。って書いてあって、本当に僕が欲しい情報だった!ありがとう。
がんばってみますかねー。