DevOps Days

主にインフラの話がメインです

Azure AppServiceにおけるWordpressプラグインWP-DB Managerの実行について

ただ今、大変げんなりしている

MySQL in App

Azure AppService上でWordpressを運用しているサイトがあり 仕様上の都合でプラグイン「WP-DB Manager」が利用でききず困っていた

まぁAppServiceにはMySQLが入っていないため、当然mysqldumpが使えないので さもありなんである

最近「MySQL in App」なる機能が使えるようになったとのことを風に噂に聞いて ためしに機能を有効化してみると

“D:/Program Files (x86)/mysql/5.7.9.0/bin/”

に待望のmysqldump.exeが!

escapeshellcmd

喜び勇んで設定してみるものの動作せず、結局プラグインソースコードを読む羽目に

どうもmysqldump.exeの実行時に、escapeshellcmd関数をつかってファイルパスをエスケープしているようだ

当該関数を通すことにより

“D:/Program Files (x86)/mysql/5.7.9.0/bin/mysqldump.exe”

“D:/Program Files ^(x86^)/mysql/5.7.9.0/bin/mysqldump.exe”

にエスケープされてしまいファイルパスが認識されずコマンドが実行できていない、ということらしい なんだよ…^って

そもそもシステムで利用するフォルダに(x86)とかいう残念なパスを設定したMicrosoftも大概だけど シェル実行用のエスケープ関数通したらシェル実行できないとか意味がわからんのだが…

※ちなみに、escapeshellcmdを使わずに実行すると無事バックアップが取れました

開発プロジェクト振り返り

リリース

9月25日(日)一年近く続いたプロジェクトのリリースを行った 総実行ステップ数236,000、400ファイル57,000ステップの改修案件だった

f:id:eriotto:20160930174759j:plain

プロジェクト概要

それなりに大きな金額のプロジェクトで、内容はざっくり言うと古くなった基幹システムのリプレース案件、技術的負債の影響もあり、全体の改修を行うとなると億行っちゃう問題が発生するため

今回はコアとなる基盤の構築と比較的ミッションクリティカルでない画面の再構築を行う一期開発である

後続の経理等のクリティカルな画面を構築するにあたり技術的な課題を洗い出してあらかた潰してしまうのも 重要なミッションだった

開発内容

自分が担当したのはアプリケーション基盤の構築と実行環境の構築で、ビジネスロジックに相当する部分はほぼ記述していない

古い部分は分離して、画面上まるで同じ画面のように見えるにする必要があったため、色々トリッキーな事をするビューが必要となったが、まぁこれは全体の移行が終われば綺麗になる筈だ

f:id:eriotto:20160930174426j:plain

先述した技術的負債により、ClassicASP,ASP.NET(VB.NET),ASP.NET MVC(C#)が混在する悪魔のような構成で、さらに以前のリプレースでは凶悪なデスマーチに見舞われた為、ASP.NET MVC化した部分のアプリケーション基盤はお世辞にも品質が良いとは言えない状態だった

以上のような事情により新基盤に要求されるのが以下のような要件となった

  • 現行アプリ基盤(ASP.NET MVC2)ソースコードを極力改修せずにMVC5化する
  • 現行アプリ基盤に「建て増し」する形で新アプリ基盤を構築
  • 相互に行儀よく棲み分けた上でどちらも問題なく動作する

f:id:eriotto:20160930174437j:plain

そして壮大な外科手術的努力の結果、完全な家庭内離婚が成立した、共有するのはセッションくらいである 以下、新アプリ基盤が獲得したもの一覧

  • DI(依存性の注入)の導入によるコード記述によるオブジェクトのインスタンス化の激減
  • DIの導入によるインスタンスのライフサイクルの厳密な管理(PerRequestLifetimeManager)
  • アクションフィルタの採用による関心の横断の実現
  • シンプルなコントローラークラス
  • 整理されたモデルクラス
  • ビジネスロジックに集中したサービスクラス
  • 適切にプーリングされたDB接続
  • 詳細な例外ログ
  • 自由な実行ログ

途中スレッドセーフでないフィルター処理に泣かされた事もあったが、良い勉強になった、特に分散トランザクションコーディネータ関連の知見は今後に生かせそうだ

設計的な反省点はいくつかあるが、どれも致命的ではないし、これも今後に生かしたいと思う

そして運用開始して一週間時点の不具合は4件、どれも他責扱いで瑕疵対象にはならなそうなものばかりだ 何も無さ過ぎて不安になってしまうレベルだが、当然、何も無いのは良い事だ

自分自身、普段はインフラをやっており「開発に参加するたびにデスマーチ」のトラウマがあるのだが、プロジェクトの成否を分けるのはリーダーの最適な人的リソースの配分であると強く感じた

今回、良いリーダーとよいチームだったと思う

WAP(WebApplicationProxy)の構成エラーへの対応

現象

WebApplicationProxyが突然利用できなくなる、もしくは初期設定ができない

エラーメッセージ

ADFSプロキシを構築できませんでした。 フェデレーションサーバーからプロキシ構成データを取得できません。

ネットでの情報

ADFS(Webアプリケーション)プロキシ構成時のエラーにつきまして https://community.office365.com/ja-jp/f/331/p/422283/1058491?ss=f6715fc5-01c0-4eae-931a-85bc9da6d07e#1058491 ※未解決です

原因

コミュニケーション証明書は更新できているためAD FS サーバーへの SSL / TLS の接続は確立できているが WAP サーバーの構成中、AD FS サーバーへタイムアウトが発生したため、構成情報を読み取ることに失敗している

解決方法

Windows Updateをあてていない場合

Windows Updateを最新化する

以下の手順で各修正プログラムを全ての AD FS サーバー、WAP サーバーにインストールする ※全ての作業に再起動が必要

Windows Server 2012 R2 用更新プログラム (KB3013769) http://www.microsoft.com/ja-jp/download/details.aspx?id=45141

Windows Server 2012 R2 用更新プログラム (KB2962409) http://www.microsoft.com/ja-jp/download/details.aspx?id=43276

Windows Server 2012 R2 のデバイス登録サービスの初期配置後にタイムアウト エラー (KB3020773) https://support.microsoft.com/ja-jp/kb/3020773

1. KB2919442 をインストール

Windows Server 2012 R2 用更新プログラム (KB2919442) http://www.microsoft.com/ja-jp/download/details.aspx?id=42153

2. KB2919355 をインストール

Windows Server 2012 R2 Update (KB2919355)

http://www.microsoft.com/ja-jp/download/details.aspx?id=42334

Windows Updateが最新の場合

3. KB3013769、KB2962409、KB3020773 をインストールする(順不同)

Windows Server 2012 R2 用更新プログラム (KB3013769) http://www.microsoft.com/ja-jp/download/details.aspx?id=45141

Windows Server 2012 R2 用更新プログラム (KB2962409) http://www.microsoft.com/ja-jp/download/details.aspx?id=43276

Windows Server 2012 R2 のデバイス登録サービスの初期配置後にタイムアウト エラー (KB3020773)

https://support.microsoft.com/ja-jp/kb/3020773

Superfishにみる中間者攻撃の危険性とGoogleの施策

今朝から結構賑わってるSuperfish

危険性に冠しての記事はコチラ

証明書に関して基本を抑えてる人たちはこの危険性が理解できると思います。 じゃあどうやって対応していくの?という問いにはGoogleが取り組んでいるようで

Certificate Transparency(透かし入り証明書)

業界的には乗り気のようで、各社対応を表明しています。

認証局におけるハッキング事件の原因と認証局業界の新しい取り組み https://www.jp.websecurity.symantec.com/welcome/pdf/wp_cahacking.pdf

証明書は信用商売、早期の対応が求められています

ShrinkIt(シュリンクイット)1.3

Diet Coda 1.6マダー?(いやマジで)と思ってPanic Blogにお邪魔したら ShrinkitなるPDF圧縮ツールがあったので試してみた

Panic Blog » ShrinkIt(シュリンクイット)1.3

試したPDFはDELLの見積ページで出力される巨大PDFそのサイズなんと7.2MB Adobe Acrobatでもサイズ縮小出来なかった長年の宿敵

中身はタダの見積、ほんと何が入ってるんだろう?

使い方

簡単、ターゲットへドラッグアンドドロップするだけ f:id:eriotto:20150219101336p:plain

結果

1/10ですと...圧倒的やないか f:id:eriotto:20150219101430p:plain

Office365のサブスクリプション買い増し

登録が完了すると

各プロダクト キーは、今日から 12 か月の間サービスを提供するものです。既存ユーザーの更新日のほうが早いので、サブスクリプションを管理しやすくするために 2 つの日付を調整 (計算式を参照してください) して、すべてのユーザーが同じ終了日になるようにしました。この計算で期間の加算や減少はありません。

計算式:[A (初期ユーザー数) x B (サブスクリプションの残存期間) + C (新規ユーザー数) x (12 か月) ] ÷ 全ユーザー数 = 新しい残存期間

納得感あるな

Office 365 Business がよくわからん問題

公式だとなるほど全然分からないのでサポートに問い合わせてみた

ライセンス割当可能なサービス名の機能詳細

Office Online

ブラウザで利用できるOffice

Office 365 Business

デスクトップアプリを利用できる。Access以外とあるが具体的には以下 * Word * Excel * PowerPoint * Outlook * Publishar * OneNote

OneDrive Business

1TBのストレージサービス デスクトップアプリのOneDrive Businessから接続可能

Exchange Online

メール、スケジュール、電話帳 デスクトップアプリのOutlookから接続可能

Lync Online

メッセンジャーサービス

SharePoint Online

デスクトップアプリのLync Basicから接続可能?

Office 365 エディション比較

Office 365 Business

デスクトップアプリに特化、メールはできない * Office Online * OneDrive Business * Office 365 Business

Office 365 Business Essentials

コミュニケーションに特化、デスクトップアプリは無い * Office Online * OneDrive Business * Exchange Online * Lync Online * SharePoint Online

Office 365 Business Premium

全部入り * Office Online * Office 365 Business * Exchange Online * Lync Online * SharePoint Online