この記事は弥生 Advent Calendar 2021の2日目の記事です
自己紹介
弥生の白井と申します。SMARTの推論という機械学習機能のテクニカルリーダーを担当しています。
家では1歳の息子を溺愛しています!!
テクニカルリーダーについて
入社してから今までエンジニアとして働いていたのですが、今年10月から初めてテクニカルリーダーをやることになりました。
弥生のテクニカルリーダーの役割には、開発計画の立案と実行、プログラム品質の管理(レビュー)、エンジニアのチーミング、適用技術の決定などがあります。
役割に伴う責任が大きくなる分、必要な権限も与えられます。今回はその与えられた権限によって見える世界が広がったという話です
与えられた権限について
前提として、SMARTはAzureのApp ServiceというWebアプリ用のPaaSで動いています。App ServiceはOSをLinuxに指定することもでき、推論エンジンはLinuxのApp Serviceで動いています。
(ちなみに弥生の他のサービスではAWSを使用しているものもあります)
AzureはAzureポータルという管理画面(AWSだとAWSマネジメントコンソール)があるのですが、開発環境であっても一般のエンジニアにはAzureポータルへのアクセス権がありませんでした(ここはチームによって運用は異なるかもしれません)
テクニカルリーダーになることでAzureポータルへのアクセス権が与えられ、他にも監視系サービスのアクセス権など様々な権限が与えられます。
テクニカルリーダーの権限で見えた世界
テクニカルリーダーの権限でシステムの裏側を見ることで、システムのアーキテクチャをより深く理解できるようになりました。
例えばアプリケーションログを確認することによって、Webアプリがデプロイ後にどのように動いているかを知ることができました。
デプロイ直後のアプリケーションログを確認すると、LinuxのApp Serviceでは裏側でLinuxのDockerコンテナを作成し、そこにデプロイされたWebアプリをのせて動かしていることがわかりました。
他にもLogic Appsで定期実行スケジューラを組んで運用していたり、アプリケーションログをログ可視化用のElasticsearchに転送するために、一時的にBlobストレージに保存している処理などを目で見て確認することができました。
システムへの解像度が上がることでレベルが上がった気がする
システムのアーキテクチャの理解が深まったことで、システムへの解像度が一段と上がったような気もします。
例えば本番環境で謎の事象が発生した時でも、どこを調べればいいのかある程度検討がつくようになり、調査の目処が立てやすくなりました。 以前は闇雲にありとあらゆるログを確認してエラーが出ていないか調査していましたが、全体像を理解して調査ポイントを絞り込むことで、不必要な調査に時間をかけてしまうことが減りました。
他にも少し難しい事象を再現したり新しい機能を試すときに、モックを作ってささっと検証する、といったことがスムーズにできるようになりしました。
作業がうまくいったとき、自分のエンジニアとしてのレベルが上がった気がする!なんて思ったりしました。
エンジニアがシステムのアーキテクチャを理解できるようになるために
私は権限を手に入れたことでシステムのアーキテクチャをより理解できましたが、本来これはエンジニアだった時に理解したかったな~とも思いました。
よくよく設計書を見ると書いてあることだったりするのですが、目で見て確認できるかできないかは理解度に大きく影響すると感じました。セキュリティの都合上全てのエンジニアがAzureポータルを見れるようにすることは難しいのですが、なんとかならないものかと悩んでいます。
今後は他のエンジニアにもうまく伝えられる方法がないか考えていきたいと思います!
宣伝!!来年2月に推論チームでもくテクやります!!
弥生は月に1度、木曜日に技術イベント「もくテク」を開催しています (現在はリモートイベントで開催しています)
イベントページはまだ出来ていませんが、来年2月に推論(機械学習)がテーマの会を企画しています!
機械学習のサービス運用に興味のある方、弥生の研究開発に興味のある方など、誰でも大歓迎です!ぜひお気軽にお越しください!!!