1.3K Views
February 08, 24
スライド概要
Fukuoka.NET Conf 2023での登壇資料です
インフラエンジニアでも.NETしたい! 2024/02/03 Fuk uok a.NET C onf 2023 Shunsuk e Yoshik a wa
自己紹介 Shunsuke Yoshikawa X: https://x.com/ussvgr Qiita: https://qiita.com/ussvgr ⚫ 所属: 株式会社エーピーコミュニケーションズ ⚫ 仕事のロール: テクニカルエバンジェリスト ⚫ Platform Engineering Meetup 運営メンバー ⚫ Microsoft MVP (Microsoft Azure) 2023/06~ ⚫ 愛知県在住
本LTに技術的な内容はほとんどありません。 ほぼポエムです。
私の社会人のあゆみ 2007年~ Access VBAerとして生を受ける。データの集計とレポーティングが主な業務。 2010年~ AccessのバックエンドとしてSQL Serverを使ってたので、サーバーのお守りも始める。 自部門が持つクラサバ構成アプリのバックエンドDBの運用を担当。 2016年~ VBAの仕事が減ってきたのでインフラ専任部門に異動。 自社・グループ会社のWeb系システムのサーバーインフラの運用業務に従事。 2017年~ パブリッククラウドも担当することに。Azureとオンプレミスの2足の草鞋。 2022年~ 現所属に転職。 お客様向けにAzure PaaSを活用したアーキテクチャのご提案、IaCの採用推進など。
最近の悩み 2007年~ Access VBAerとして生を受ける。データの集計とレポーティングが主な業務。 2010年~ AccessのバックエンドとしてSQL Serverを使ってたので、サーバーのお守りも始める。 自部門が持つクラサバ構成アプリのバックエンドDBの運用を担当。 2016年~ 2017年~ お客様向けの VBAの仕事が減ってきたのでインフラ専任部門に異動。 アプリ開発を経験 自社・グループ会社のWeb系システムのサーバーインフラの運用業務に従事。 したことがない! パブリッククラウドも担当することに。Azureとオンプレミスの2足の草鞋。 2022年~ 現所属に転職。 お客様向けにAzure PaaSを活用したアーキテクチャのご提案、IaCの採用推進など。
クラウドの責任共有モデル オンプレミスでやってた領域がサービスとして利用できる形になってきた。 クラウド利用者は、自身のビジネス(≒アプリケーション)に注力できる。 引用元: Azure IT オペレーター向けのファースト ステップ | Microsoft Learn
インフラエンジニアがこの先生きのこるには PaaSの選定やトラブルシュートなどでこれまで培ってきたインフラの知識は使える。 一方、PaaSの上で稼働するアプリケーションレイヤーを強く意識する必要は出てきた。 CI/CDパイプラインを構築するなどのシーンで、各言語のエコシステムも理解が必要。 ⇒ 開発者に価値を提供 するために、開発のナレッジを学ぶ 必要がある
例えばこんな事例 Azure Data Lake Storageにファイルが作られたことをトリガーに イベント駆動でデータ処理用のFunctionsが起動する構成。 データ処理Functionsでときどきエラーが発生しており、 開発者から原因の調査を依頼された。 エラー
調査 エラーとなった処理のログを見ると、読み取ったファイルが 空ファイル だった模様。 しかし、ストレージの中のファイルを見ても、 きちんと 中身のあるデータしか存在しない。 (なんでや)
もっと調査 ストレージにデータを書き込む側のFunctionsのコードを調べる。 ※以下はイメージ # 空ファイルを作成 file_client = directory_client.create_file(<ファイル名>) # 作成したファイルにデータを書き込んでいく data = <書き込むデータの中身> file_client.append_data(data, offset=0, length=len(data)) # 書き込み終了、ファイルを閉じる file_client.flush_data(offset=len(data))
もっともっと調査 ドキュメントを調べると気になる記述が見つかる。 引用元: Event Grid ソースとしての Azure Blob Storage
解決…? 最初にファイルを作成したタイミングでEvent Gridが発火するものの、 まだファイル書き込みが完了していないため、空ファイルを読み込んでしまっていた。 # 空ファイルを作成 file_client = directory_client.create_file(<ファイル名>)←★ここでイベント発生 # 作成したファイルにデータを書き込んでいく data = <書き込むデータの中身> file_client.append_data(data, offset=0, length=len(data)) # 書き込み終了、ファイルを閉じる file_client.flush_data(offset=len(data)) ← このイベントで起動したかった Event Grid側で FlushWithClose イベントのみ通すようフィルタリングすればヨシ!
だめでした データ処理用Functionsがまったく呼び出されない状態になってしまった。 そもそも FlushWithClose イベントがまったく発生してない。 (なんでや!ドキュメントどおりやったやろ!!)
もっともっともっと調査 イベントの発生条件を求め、調査隊はSDKのリファレンスの奥地へ… 引用元: Azure SDK for Python - DataLakeFileClient クラス
完全解決 以下のようにパラメータを付けることで、意図通りのイベントを発生させることに成功! # 空ファイルを作成 file_client = directory_client.create_file(<ファイル名>) # 作成したファイルにデータを書き込んでいく data = <書き込むデータの中身> file_client.append_data(data, offset=0, length=len(data)) # 書き込み終了、ファイルを閉じる file_client.flush_data(offset=len(data), close=True)
ここで言いたかったこと 開発担当じゃなくてもソースコード読んだりリファレンス読んだりできないとダメ。 ソースコードにアクセスできない? 閲覧だけでもいいのでリポジトリにアクセスできる権限をもらいましょう。 ※インフラ担当SIerにも可能な限り見せてください(懇願) 昨今は Inner Source という文化が起こりつつあり、 組織内の立場に関係なくコラボレーションする潮流が出てきている。よい兆候。
.NETとAzureと私 Azureを使うプロジェクトだと、C#+.NET を採用するケースが多い(気がする)。 MicrosoftのサンプルコードもC#+.NETの例が豊富にあり、他言語よりも手厚い印象。 Azureやるなら習熟しておいて損はない! …が、今時点ではまったく習得できてません PythonとJavascriptはちょっと読み書きする程度ならできるんですが、C#ムズカシイ…
幸いにも学習コンテンツは豊富にある .NET Conf 2023 のサイトには、 Microsoft LearnのコンテンツとセッションのYouTube配信がある。 その他、Microsoftの公式コンテンツとして Applied Skills にもASP.NETのコースが。 実際に手を動かすうえではGitHub Copilot/Copilot Chat も習得の助けになるはず。 今年は手を動かして、簡単なアプリを少しは書けるようになりたい(願望)
【2024年の目標】 インフラエンジニアでも.NETしたい! できるようになる!
https://platformengineering.connpass.com/event/307275/