2022年に業務やプライベートで興味を持って、触れた技術の棚卸しします。
ざっと学んだことを羅列すると、パブリッククラウドやIaCなどインフラよりのインプットとアウトプットが多かった一年でした。
それぞれ、もう少し振り返ってみます。
プログラムがどう解釈されてハードウェアで出力されるか、メモリとは何なのかというエンジニアとして
基本的な部分が疎かになっていると感じたため、再学習しました。(基本情報を持っているがふんわりとしか理解していないため)
主に以下3冊を中心に学びました。
型宣言によるメモリ上の占めるサイズや、配列によるメモリ確保の動きを脳内でイメージできるようになったため学んでよかったと思います。
また、メモリアドレスについて理解したため、参照渡しや値渡しの仕組みの違いやGolangのpointerを学ぶ際に役に立ったかと思います。
swapが発生するとなぜパフォーマンス劣化が起きるかをHDDとメモリへのアクセス速度、I/O性能に差があるためと理解し、監視の仕組みを構築する際に役立ちました。
後に、インフラ構築を担当するためにTCP/UDPとDNSについて知っておくことで、よく知らないから怖いという状況を脱するために以下の2冊を中心に知識を補填しました。
特にDNS本はdigコマンドでの名前解決方法など障害調査する際に使いそうなコマンドの実践方法が記載されており、勉強になりました。
また、DNSレコードについてそれぞれの意味を理解し、Route53でドメイン設定する際に役立ちました。
モチベーション
得られたもの
利用したAWSサービスをよく理解することができたのは、Terraform + AWS CLI(プロジェクトの縛り)で構築から検証まで行う必要があり、自分は一切マネジメントコンソールにログインできない環境だったのも要因としてあるかと思っています。
中々、ハードでしたがTerraformのドキュメントがわかりやすいのとAWS CLIで出力された項目を理解するために必死にAWSのドキュメント漁ったおかげでより一層理解が深まったと思います。
モチベーション
得られたもの
モチベーション
所感
公式によるフォーマッター、リンターが提供されていること(gofmt,gopls)やgomockやtestingライブラリによるテスト周りのライブラリも充実しており、開発のみならず開発環境やプログラムの質を担保するための必要な要素が詰まった言語だと感じた。
シングルバイナリをサポートしているためdockerイメージの軽量化をしやすいのも好きなところでした。
また、人気のある言語だからか各種SDKでのサポートが充実している気がします。
gRPCについてはフロント<->サーバー間の通信で採用しており、理解していることとしては4つの通信形式というかストリーミング方法が確立されている。
スキーマ駆動で開発できる+スキーマからコード生成できて初動が早くなるくらいの認識しかできていません。
これがマイクロサービス間の通信でよく使われて、どういうメリットがあるのかいまいち理解できていないです。(機会ができたら学習します)
まず、2022年はインプットが多めでGitHubの草生やす活動が少なかったのでなるべく手を動かすことを意識したいです。
上記を踏まえた上で仕事で必要なことを吸収するプラス
あたりに取り組んでいこうかと思います。
英語については、一次情報を素早く吸収するために必要だと感じるのと最近翻訳するのが煩わしくなってきたため日本語レベルに直感的に理解できるようになれればいいなと思ってます(多分ムリ)
アルゴリズムについては、開発者として有事に計算量を意識したアルゴリズムを考える力がほしいのと考察力を強化して課題解決能力の向上に繋げたいと考えるためです。
年越してしまったけど、振り返ってみるとサーバーサイドよりもSREに近いことをやり始めたように感じた。
おかげでリリース後の運用を意識して開発する意識が高まりました。
また、社内でAWSに詳しい人というポジションを確立できて、メンバーのサポートできるようになったのも取り組んでみてよかったなと感じました。