タグ

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

  • 私が 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 年版) - しばやん雑記
  • Visual Studio で Azure Functions を作成すると文字化けする問題を EditorConfig で直す - しばやん雑記

    Visual Studio や Azure Functions Core Tools などで新しい Azure Functions を作成すると、一般的な C# クラスとは異なり UTF-8 BOM 無しのファイルが生成されます。 UTF-8 BOM が必要なのかどうかは議論しませんが、C# では UTF-8 BOM が無いとマルチバイト圏の人間は困るようになっています。具体的には以下のように日語を書いた時です。 ファイルに UTF-8 BOM が付いていない場合、Visual Studio はデフォルトのエンコーディング、すなわち Shift_JIS として保存してしまいます。最悪な挙動ではあります。 Git で差分を確認しようとすると、まともに表示されないので不便です。GitHub や Azure Repos などで確認した時にも文字化けが発生するので、結構困ります。 全てを日語の

    Visual Studio で Azure Functions を作成すると文字化けする問題を EditorConfig で直す - しばやん雑記
  • 後悔しないための 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 年版) - しばやん雑記
  • 既存の WPF アプリケーションを .NET Core 3.0 に移行した - しばやん雑記

    Visual Studio 2019 が RC に到達したという話だったので、検証用に使っているマシンにインストールして既存 WPF アプリの .NET Core 3.0 移行がどのくらいのコストで行えるのか試しました。 にぃにが書いているように .NET Core 3.0 を Visual Studio 2019 RC で使うには、プレビュー版の .NET Core を使うように設定を変える必要があります。 理屈としては分かりますが、まあまあはまりやすいポイントですね。設定を変えると .NET Core 3.0 向けのプロジェクトを読み込んでビルド出来るようになりました。 .NET Core 3.0 の Win Forms / WPF 対応について調べてみると、ほとんど dotnet new wpf とかで作ったコードを動かしていただけだったので、当にマイグレーション可能なのか怪しく思

    既存の WPF アプリケーションを .NET Core 3.0 に移行した - しばやん雑記
  • 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 用のメタパッケージを絶対に使うべき理由 - しばやん雑記

    ASP.NET Core 2.0 から導入された必要なパッケージを一通り参照するメタパッケージですが、あまりにも参照が多いので何となく嫌な感じがする人はいると思いますが、絶対に使うべきなので理由を書いておきます。 メタパッケージに関しては公式ドキュメントにあるので、基的な方針に関しては参照してください。 共有フレームワークとしてメタパッケージはインストールされる点が非常に大きい特徴です。 このドキュメントにはちゃんとメタパッケージを使うべき理由が書いてあります。 Applications that use the Microsoft.AspNetCore.App metapackage automatically take advantage of the ASP.NET Core shared framework. When you use the Microsoft.AspNetCo

    ASP.NET Core 用のメタパッケージを絶対に使うべき理由 - しばやん雑記
  • App Service on Linux を Heroku っぽく使う Runtime Stack を作成してみた - しばやん雑記

    App Service on Linux のカスタム Docker Image を利用していると、やっぱり Heroku のように foreman を使ったプロセス管理が使いたくなってきました。 Heroku では Procfile をルートに用意しておくと、いい感じにランタイムが読み込んで実行してくれます。 2 月に試した時には Ruby on Rails アプリケーションの実行が上手く出来ませんでしたが、最近 Hanselman が動かしていたので試してみます。 Runtime Stack の Dockerfile やスクリプトもいい感じに公開されていたので、参考しながら利用します。 帝国兵殿曰く、Built-in の Runtime Stack に対しては特殊処理が入っているらしいので、独自の Runtime Stack を作る場合には少し手間がかかります。そのままの Dockerf

    App Service on Linux を Heroku っぽく使う Runtime Stack を作成してみた - しばやん雑記
  • 3 月なので障害に強い Azure の運用を考える(2017 年版) - しばやん雑記

    3/8 に Azure の Japan East で久し振りに大規模な障害が発生しました。既に RCA が上がってきていて、ぶちぞう RD がブログで書いているので、原因についてはそっちを参照で。 2017.03.08 の Azure障害 | ブチザッキ そして今年も 3/11 を過ぎたことですし、ちゃんとアーキテクチャと運用を最新のサービスや仕組みでリフレッシュしていかないといけないですね。ちょっとポエム臭くなってきたけど、割と中身は真面目に。 さて、障害の継続時間は 2 時間ぐらいでしたが、例によって Storage 周りの障害だったため、数多くの Azure サービスが影響を受けました。障害発生中の Azure Status はこんな感じでした。 Azure の Storage はご存知のように Blob / Table / Queue / Disk / File といった、各サービ

    3 月なので障害に強い Azure の運用を考える(2017 年版) - しばやん雑記
  • CircleCI と Docker を使って App Service on Linux へのデプロイを自動化する - しばやん雑記

    App Service on Linux での Docker 対応は Azure Container Service などに比べて、お手軽なので非常に便利なんですが、Elastic Beanstalk のように Dockerfile を含むリポジトリから自動的にビルドをしてくれないので、必然的に何らかの方法で Docker Image を作成する必要があります。 Windows Server Containers な PaaS がリリースされても同じような流れが必要になると思うので、簡単に必要な流れを確認しておくことにしました。単純に Docker を使った CI/CD に興味があったとも言います。 ASP.NET Core アプリケーションをプリコンパイル プリコンパイル結果を利用して Docker Image を作成 Docker Hub にプッシュ App Service on Li

    CircleCI と Docker を使って App Service on Linux へのデプロイを自動化する - しばやん雑記
  • Azure Functions と Stream Analytics を使ってアプリケーションのログをリアルタイムに処理する - しばやん雑記

    この間、Event Hubs に構造化されたログを吐き出す TraceListener を作ったので、ログの保存や集計などの処理を追加で行ってみました。前回の記事は以下になります。 Event Hubs からのリアルタイムなデータを処理するには Stream Analytics が最適です。ログは基的に保存しておきたいですが、量が多くなるので Azure Table に保存するようにします。 Stream Analytics は出力に数多くのストレージを選べるようになっているので、ログの生データを Azure Table に、そしてある程度集計した結果を Event Hubs に書き出して、最後に通知やメール送信などの処理を Azure Functions に任せればよさそうです。 Stream Analytics の設定 とりあえず Stream Analytics を作成し、入力と出

    Azure Functions と Stream Analytics を使ってアプリケーションのログをリアルタイムに処理する - しばやん雑記
  • Visual Studio 2012 の「JSON / XML をクラスとして貼り付ける」機能が便利すぎるけど - しばやん雑記

    最近 Twitter で酢酸先生とがりっちが同じような内容で悩んでました。 JSONわせたら自動でクラス作ってくれるプロダクトってないですかね— 酢酸 (山の手線20周) (@ch3cooh) July 5, 2013 DataContractJson(ryは jsonと同じクラス構造をつくらなきゃいけないのでざせつしました — がりっち氏@用 (@garicchi) July 11, 2013 その度に Visual Studio 2012 で出来るよ!と呟いてるんですが、もしかして出ない環境がある? 少なくとも、現時点で最新の Visual Studio 2012 Update 3 をインストール済みの環境では使えるようになっているはずです。 すいません、嘘付いてました。Web Essentials 2012 をインストールしておかないとメニューが表示されないようです。詳細は最後に

    Visual Studio 2012 の「JSON / XML をクラスとして貼り付ける」機能が便利すぎるけど - しばやん雑記
  • Visual Studio の UTF-8 BOM と Git の設定で悩まされた話 - しばやん雑記

    ぽちぽちと git を使っていたら、変更したはずのないファイルが変更扱いになっていて悩みました。 Visual Studio で変更してないのに Ctrl+S を押すと git では変更扱いになるの何でだ— しばやん (@shibayan) May 29, 2013 他のリポジトリでは発生していなくて、ある一つのリポジトリだけでこの現象が起きていたので Twitter で呟いたところ、UTF-8 の BOM が原因だと教えてもらいました。 @ishisaka @shibayan 手元のVST4GやTortoiseGitは反応し無いようなので、BOMや改行コードの問題な気が...— Kaoru Nakajima (@kaorun) May 29, 2013 Visual Studio はデフォルトで UTF-8 のファイルに BOM を付けるようになっているので、プラグインを入れて BOM

    Visual Studio の UTF-8 BOM と Git の設定で悩まされた話 - しばやん雑記
  • 1