タグ

ブックマーク / blog.shibayan.jp (46)

  • 非推奨となった Terraform リソースからのマイグレーションを安全に行いたい - しばやん雑記

    Azure Provider に限った話ではないと思うのですが、正直 Azure Provider はリソースの非推奨化が多い気がするので書いています。きっかけとしては直近の Azure Provider の更新で azurerm_static_site は非推奨になって azurerm_static_web_app が追加されたことにあります。 追加された時から正直命名をミスっているなと思っていましたが、このバージョンから他の App Service に合わせる形で新しい名前のリソースが追加されました。機能としては変わっていないので、今回の場合は当に名前が変わっただけです。 これまでにも Azure Provider では同じようなリソース変更があり、代表的かつ影響範囲の広いものとして App Service / Azure Functions があります。v3 のリリースタイミングで

    非推奨となった Terraform リソースからのマイグレーションを安全に行いたい - しばやん雑記
  • Windows App SDK を使ってモダンなタイトルバーを持つアプリケーションを作る - しばやん雑記

    Windows 11 で全面的に導入された Fluent Design System は個人的には結構好みなので、自作アプリでも同じようなデザインを実現したいのですが意外に難しいです。コントロールだけに限れば Windows App SDK を使うとある程度は対応は可能ですが、まだ使いやすく提供されていない機能もあります。 例えば以下は Microsoft Store アプリですが、タイトルバーからして大きく異なっています。全体的に Mica が適用されていて、完全にカスタマイズされたタイトルバーが実装されています。 Windows 11 におけるタイトルバーのデザインについては、以下のドキュメントに典型的なパターンが紹介されているので、こちらを参照するとイメージしやすいと思います。 このように紹介されているということは、Windows 11 向けのアプリではタイトルバー含めデザインを統一

    Windows App SDK を使ってモダンなタイトルバーを持つアプリケーションを作る - しばやん雑記
  • Application Insights の Code Optimizations 機能を ASP.NET Core アプリケーションで試してみた - しばやん雑記

    少し前から Application Insights の Performance を開くと、上部に Code Optimizations というボタンが表示されるようになっています。隣にある Profiler は以前からある機能ですが、Code Optimizations はひっそりと追加された新しい機能となります。 あまり注目されている気配を感じないのですが、上手く有効化出来ると継続的にアプリケーションのパフォーマンスを解析し、改善するというループを回しやすくなるはずです。ドキュメントがあるので、こちらも目を通しておくのが良いです。ちなみに現在サポートされているのは .NET のみです。 後で触れますが、Code Optimizations を利用するには Profiler を有効化する必要があります。この有効化方法が少し悩ましいので後半でまとめておきました。 Code Optimiza

    Application Insights の Code Optimizations 機能を ASP.NET Core アプリケーションで試してみた - しばやん雑記
  • 私が Azure Functions アプリケーションの開発時に意識していること - しばやん雑記

    ここ数年は Azure Functions をフルに活用したアプリケーションを実装することが多かったのですが、同時に Azure Functions を失敗しないように使う方法も分かってくるので、ここらでちゃんと言語化しておきます。 最近は特に Azure Light-up というハッカソンを行うことが多いのですが、Azure Functions を使う場合には必ずこの辺りは毎回説明するようにしています。要するに Azure Functions の利点・特性を理解して賢く使いこなそうという話です。 Binding / Trigger で実現出来ないか考える Function の実装は出来る限り小さく保つ リトライのしやすい実装を重視する 最新の .NET での作法に沿ったコードを書く Graceful Shutdown に対応したコードを書く 機能単位で Function App プロジェ

    私が Azure Functions アプリケーションの開発時に意識していること - しばやん雑記
  • 障害に強い Azure の運用を考える (2021 年版) - しばやん雑記

    Azure の日リージョン 7 周年の日に Japan East のストレージ障害が発生するという、なんともアレな出来事がありましたが、障害発生後はアーキテクチャを見直すいい機会だと思うので色々書きます。 まだ RCA は公開されていないですが、おそらくぶちぞう RD がブログに書くのでリンクを貼ります。 4 年前の同じような時期にも Japan East で大規模なストレージ障害が発生したので、同じようなものを書きましたが流石にいろいろと進化しているので古さを感じます。 今回の障害は影響範囲はさほど大きくなかったようで、主に Azure Storage と Virtual Machines がステータスには上がってきていました。実際には Application Insights や Log Analytics にも影響がありましたが、Azure Storage は全ての基なので仕方な

    障害に強い Azure の運用を考える (2021 年版) - しばやん雑記
  • Azure Web Apps 上で動作するアプリケーションのタイムゾーンを設定できるようになっていた - しばやん雑記

    エラー調査のために Kudu 周りを調べていたら、Wiki に Web Apps のタイムゾーン設定が追加されていたのに気が付いたので、実際に設定して試してみました。 Kudu の Wiki はちょいちょい更新されているので、ちゃんと確認しておかないといけないですね。 Configurable settings · projectkudu/kudu Wiki · GitHub的に Azure のサービスは UTC がデフォルトの設定になっていて、Cloud Services では Startup Task などを使ったタイムゾーンの変更が非推奨となっていました。 But I would strongly advice against it. The Fabric Controller maintains operating system time synchronization fo

    Azure Web Apps 上で動作するアプリケーションのタイムゾーンを設定できるようになっていた - しばやん雑記
  • App Service へのデプロイ方法を Zip Deploy に制限する - しばやん雑記

    既に Azure Pipelines などを使って自動デプロイの環境を構築している場合は、ほぼ全てで Zip Deploy が使われているはずですが、App Service には FTP と Web Deploy がデプロイ方法として提供されているので、塞いでおかないと Visual Studio から手動デプロイされてしまい壊れることがあります。 まだ Visual Studio から番環境へのデプロイを行っている場合は、速やかに自動デプロイに切り替えましょう。デプロイの安定化とパフォーマンスのために Run From Package を利用するのも良いです。 今の時代、開発中はともかく番向けデプロイを Visual Studio から行うのは、履歴もバージョン管理も出来ないので速攻で詰みます。 そろそろ Azure Pipelines の Multi-stage pipelines

    App Service へのデプロイ方法を Zip Deploy に制限する - しばやん雑記
  • Azure App Service と Regional VNET Integration を使ったセキュアなアプリケーションの実装パターン - しばやん雑記

    2020 年は Azure App Service にとってはネットワーク周りの新機能やアップデートが非常に多い年になりました。そろそろ今年も終わりなので App Service の定石アーキテクチャをアップデートする良い機会です。 まずは今年のネットワーク関連アップデートについておさらいしておきます。Regional VNET Integration はプレビューの時から使ってきたので、最近 GA したという気が個人的にはしていません。 GA Regional VNET Integration (NSG / Route Table) Private Link (Private Endpoint) NAT Gateway Hybrid Connection for Linux App Service Premium V3 / VMSS Worker Preview Azure Functi

    Azure App Service と Regional VNET Integration を使ったセキュアなアプリケーションの実装パターン - しばやん雑記
  • ASP.NET Core Web API と NSwag を使って OpenAPI 定義を自動生成する - しばやん雑記

    昔は ASP.NET で Swagger / OpenAPI 定義を出力するには Swashbuckle が定番でしたが、あまりアクティブではない時期が長かったせいか最近は NSwag を使うようにしています。 今では GitHub の Star 数も Swashbuckle より NSwag の方が多くなっています。 Docs でも Swashbuckle と共に NSwag を使ったドキュメントが公開されています。 機能的には Swashbuckle と NSwag で大きな差はないですが、NSwag は MSBuild 向けパッケージや CLI を使った静的な Swagger / OpenAPI 定義の生成が行えます。 Swagger / OpenAPI 正義は実行時にわざわざリフレクションを使用して生成する必要はゼロで、ビルド時や CI といったタイミングで生成できれば全く問題ない

    ASP.NET Core Web API と NSwag を使って OpenAPI 定義を自動生成する - しばやん雑記
  • App Service と ASP.NET Core で Application Insights を有効化する方法を整理する - しばやん雑記

    Azure App Service に ASP.NET Core アプリケーションをデプロイする時には、必ず Application Insights を同時に有効化するようにしていますが、有効化の方法として 2 種類が存在しているので軽くまとめておきます。 自分でもこのあたりは割と混乱していたのと、App Service 側の挙動が微妙に変わっていたりしたので一度しっかりと確認しておきたかった部分です。 現時点では以下の 2 つの方法で Application Insights を有効化できるようになっています。ASP.NET Core アプリケーションと言ってますが、ASP.NET でもほぼ同じ扱いです。 ASP.NET Core に Application Insights をインストールする App Service の Application Insights 設定から有効化する

    App Service と ASP.NET Core で Application Insights を有効化する方法を整理する - しばやん雑記
  • 後悔しないための Azure App Service 設計パターン (2020 年版) - しばやん雑記

    Azure App Service (Web Apps) がリリースされて 6 年、情報のアップデートを行いつつ気になった情報は適当にブログに書くという日々ですが、Regional VNET Integration や Service Endpoins が使えるようになって設計に大きな変化が出るようになったのでまとめます。 最近は Microsoft で HackFest を行うことも多いのですが、App Service をこれから使い始めたいという場合に、失敗しない構成を共有したい、知ってほしいという意図もあります。多いですが中身は単純です。 基設定 64bit Worker は必要な場合のみ利用する FTP / Web Deploy をオフにする Always on を有効化する ARR affinity をオフにする HTTP/2 の有効化を検討する Health Checks の

    後悔しないための Azure App Service 設計パターン (2020 年版) - しばやん雑記
  • Application Insights と KQL を使って複雑な解析を行いたい - しばやん雑記

    最近は地味に KQL (Kusto Query Language) を書く機会が多くなってきたので、忘れないようにはまったポイントと書いたクエリを残しておくことにします。 Application Insights を使っていますが、KQL 自体は Azure Data Explorer と同じなのでリファレンスは同じものが使えます。というか Azure Data Explorer の上に Application Insights が乗っかっています。 KQL で迷ったら以下のリファレンスを読めば、大体は解決するはずです。読んでおきましょう。 Application Insights 側のドキュメントにもサンプルがいくつか用意されています。読んでおくと良いです。 クエリエディタでは入力補完が効くので、比較的簡単に書くことは出来ます。よく使うのは where / project / summa

    Application Insights と KQL を使って複雑な解析を行いたい - しばやん雑記
  • de:code 2019 フォローアップ (Application Insights / Azure Serverless) - しばやん雑記

    今年の de:code は 2 つのセッションで喋りました。スライドは公開済みで、動画も少しすれば公開されると思いますが、フォローアップとして伝えきれなかったことなどをまとめておきます。 祝 東日リージョン一般提供! Azure Application Insights 基礎と実践 日 MS の武田さんと一緒に話しました。Application Insights は良くあるインスタンス数での課金ではなく容量課金で、無料でもほぼフル機能が使えるのが結構良い点だと思います。 App Service を作成する際にはほぼ同時に作られるので、最低限の設定は行われているはずですが、上手く活用できているケースは思ったより少なそうだったので、まずは基的な部分を中心に話しました。 Application Insights など Azure Monitor で使われている Kusto は結構難しいので

    de:code 2019 フォローアップ (Application Insights / Azure Serverless) - しばやん雑記
    griefworker
    griefworker 2019/06/23
    Application Insights に集めたテレメトリは Kusto で分析できるのか。
  • そろそろ Azure Cloud Services の移行先についてひとこと言っておくか - しばやん雑記

    最近はまあまあ Cloud Services (Web Role / Worker Role) からの移行という話を聞くようになってきましたが、大体のケースで Service Fabric への移行を勧められているようです。 正直言ってこの提案は全くの見当外れであるケースが大半でしょう。何故なら現状 Cloud Services を使っているアプリケーションは、そもそもマイクロサービスに適した形になっていないことが多いからです。従って移行先としては最初に App Service が検討されるべきです。 1 VM に 1 アプリケーションという構造でマイクロサービスとか、難易度が高すぎるので当たり前です。提案した人は Cloud Services と Service Fabric の違いを全く理解してないのではないかと思ってしまいます。 既存サービスの Cloud Services からの移

    そろそろ Azure Cloud Services の移行先についてひとこと言っておくか - しばやん雑記
  • C# と Polly を使って回復力の高いアプリケーションを書く - しばやん雑記

    昔のように高い信頼性を持つオンプレのハードウェア上で動いていたアプリケーションとは異なり、昨今のクラウド上で動いているアプリケーションは障害が発生する前提でコードを書く必要があります。クラウドのハードウェアは毎日どこかで壊れるので、それを前提にソフトウェアで高可用性を担保しているわけです。 最近は Microservices の流行もあって 1 つのアプリケーションを構成するコンポーネントが増えているため、実装によっては 1 つのコンポーネントで発生した障害が全体に波及してしまい、アプリケーション全体が停止してしまうこともあり得ます。例としてよく挙げられるのがリコメンド周りでしょう、リコメンドサービスの障害でアプリケーション全体が落ちてはいけないのです。 今のアプリケーションは障害時には敢えてサービスレベルを下げてでも、全体としての可用性を維持することが必要です。そして復旧時には人の介入な

    C# と Polly を使って回復力の高いアプリケーションを書く - しばやん雑記
  • ASP.NET Core 2.2 で追加された Health Checks API の基本的な使い方とカスタマイズ - しばやん雑記

    ASP.NET Core 2.2 から Health Checks API が実装されました。最近の Container や Microservices の流れでは必須機能と言えるので、シンプルな API として実装されたのは良い感じです。 ドキュメントがありますが重要な機能だからかとても長いです。過去最長ぐらいのレベルで。 API はシンプルな割に行えることがとても多いので、実際に自分で触ってみておくことにします。 ちなみに Health Check に関係するデザインパターンやアーキテクチャのドキュメントも、Microsoft Docs にて公開されています。使ってる技術は古いですが、こういうのは考え方が重要なので問題ありません。 目を通しておくと、何故 Health Check が今必要なのかが理解できると思います。 以下に実際に自分が触って動作を確認したり、試してみて気になったこと

    ASP.NET Core 2.2 で追加された Health Checks API の基本的な使い方とカスタマイズ - しばやん雑記
  • Azure App Service で障害が発生した場合にやること - しばやん雑記

    Azure App Service は非常に便利なのですが、アプリケーションに何らかの問題があった場合には VM などと比べると調査方法が若干特殊です。今は公式の診断機能がかなり強化されていますが、逆に多すぎて困ることもあるのでまとめました。 用意されているツール Diagnose and solve problems を使う Support Tools を使う Kudu を使う Application Insights を使う パフォーマンス問題の場合 プロファイリングを実行する メモリダンプを取得する Auto Heal を有効にする 恐らく歴史的経緯によって機能がダブっている部分もあるので、その辺りについても書きました。 用意されているツール Diagnose and solve problems を使う 何が起こっているのかわかっていない場合は、とりあえずこの自動診断機能を使えば大

    Azure App Service で障害が発生した場合にやること - しばやん雑記
  • Azure App Service 向けに Let's Encrypt 周りの自動化を行う Azure Functions を作った - しばやん雑記

    タイトルの通りなんですが、App Service 向けに自動で Let's Encrypt の証明書を更新してくれる Azure Functions を作りました。Durable Functions と ACMESharp Core を使っています。 とりあえずベータリリース的な感じで出してみることにしました。 これまでも Site Extensions と WebJob を使って Let's Encrypt の証明書を更新してくれるものはありましたが、1 サイトに 1 つ仕込む必要があり、結構な確率で失敗することが多かったので不便だと思ってました。サービスプリンシパルを作って設定する必要があったのも面倒でした。 なので、今回の azure-appservice-letsencrypt は以下のような問題を解決するために作りました。 1 つの Azure Function で複数の証明書を

    Azure App Service 向けに Let's Encrypt 周りの自動化を行う Azure Functions を作った - しばやん雑記
  • ASP.NET Core 2.0 から 2.1 へのアップデートを行ったメモ - しばやん雑記

    .NET Core 2.1 と ASP.NET Core 2.1 がリリースされたので、これまで 2.0 や 2.1 rc1 で開発していたアプリケーションを 2.1 にアップデートしてました。2.1 rc1 は特にやることないのですが、2.0 からはちょっと作業が必要だったのでメモ。 といっても、基は以下のドキュメントに従えば良いです。実際この通りに作業しました。 元々は ASP.NET Core 1.0 から開発していたアプリを題材にしたので、思ったより変更点が多かったため以下のようになりました。 基的にはコードや設定の量が減っていくので非常に好感が持てます。 .NET Core 2.1 に変更 当然ながらターゲットフレームワークを .NET Core 2.1 に変更する必要があります。 Visual Studio から変更しても良いですし、csproj を直接開いて netcor

    ASP.NET Core 2.0 から 2.1 へのアップデートを行ったメモ - しばやん雑記
  • IIS Express のサイト設定から存在しないものを一括で削除する - しばやん雑記

    普段から Visual Studio と IIS Express を利用したアプリケーションの開発を行っていると、作成した分だけ IIS Express のサイト設定が一方的に追加されていきます。 例として、普段使っているマシンの applicationHost.config を紹介しておきます。 調べてみると、サイト数が 150 ほど登録されている状態でした。サイト数はかなり多いですが、大半がテスト用のプロジェクトで既にファイルも存在しないゴミ設定でした。 いい感じに削除したいので調べてみると、森島さんこと @statemachine のブログが引っ掛かりました。 なかなか良さそうですが、森島さんが紹介しているスクリプトだと、まだ使っているサイト設定まで問答無用で削除してしまうみたいでした。 使っているものを削除してしまうと次回の起動時にちょっと面倒なことになりそうなので、先に仮想ディレ

    IIS Express のサイト設定から存在しないものを一括で削除する - しばやん雑記