スキップしてメイン コンテンツに移動

「ネクストスケープ×Sansan 」 .NET勉強会に参加してきました

(第八回) 「ネクストスケープ×Sansan 」 .NET勉強会に参加してきました。
以下参加した際にとったメモです。

■わかった気になる!ID連携の最新事情 for developers: SAML、OAuth、あるいはOpenID Connectについて

  • (神原 淳史/Sansan株式会社)
  • ID連携ならできます
    • やれることたくさんあるよ
  • ID連携フロー
  • ID連携の歴史
    • それはプロトコルの歴史
  • ID連携のエンタープライズ系のとこでのデファクトスタンダードはSAML
    • Salesforce、Google Docsなど
  • SAML
    • いい意味で枯れた技術
    • ただし重い・・・
    • 実装はそこそこ簡単
  • OAuth
    • コンシューマー向けサービスのデファクトスタンダードはこっち
    • フローはSAMLと同じ!
    • そして軽い!
    • 認証ではなく承認の機能
      (”誰であるか”ではなく、”何ができるか”)
    • Tokenの検証をアプリでできない
      (検証は認証先のサイトが実施する)
  • OpenID Connect
    • OAuth の弱点をカバー
    • セキュリティ面(validation できない点をカバー)
    • トークンの形式を標準化
    • Azure ADは対応! AD FS は未対応!
  • まとめ
    • SAML VS OpenID Connect

■クラウドデザインパターンのススメ

  • (上坂 貴志(うえさかたかし)/ネクストスケープ株式会社)
  • 今日はAzureの話のみ
    • 前回がパターン多すぎてわからなかった
    • 今回はCodingも入れたかった
  • AWS、Azureのクラウドデザインパターンの違い(本を基に紹介)
    • AWS CDP
    • 機能の説明から啓蒙、そして入門に最適
    • Iaasを前提にしている
    • Azure CDP
    • Paasを前提にしている
    • オンプレでも使えるパターンが多い
    • クラウドの弱点に直目
    • デザインパターンがアルファベット順で読みにくい、
      ついでに最初が抽象度が高い話でわかりにくい(一応後に例示がある)
  • SLA100%未達への対処
    • Retry Pattern
    • リトライはいいけど、問題もある
      • 受けた値できっちり判断しないとダメ
      • リトライし続けると、スレッド占有して、Webサーバが死ぬ可能性あり
    • そこで他のパターンがある
    • Circuit Braeker Pattern
    • 電子回路で過電流が流れたときに閉回路を開回路にすることを、Circuit Breaker と言う
    • Close状態(通常時)→Open状態(異常時)→Half-Open(確認時)→Open or Close
    • Scheduler Agent Supervisor Pattern
    • バッチをクラウド上で実行するときのパターン
    • Agentに投げるところを非同期(上の二つのパターン)にする
    • バッチの実行はトランザクションを戻す可能性もあったり、そういうパターンも(他に)ある
  • スケーリング
    • Compute Resource Consolidation Pattern
    • ちょっと作っておいて、スケーリングの状態を確認しておきましょうってパターン
    • External Configuration Store Pattern
    • Config を一箇所に集約しておくパターン
    • Runtime Reconfiguration Pattern
    • Config を一箇所に集約して修正するとおかしくなるかも。
    • なのでアプリケーションを再起動してから Config を適用する
      (そりゃそうだよね・・・)

■ピザとビールと C#6/7 とワタシ

  • (渋木 宏明/Sansan株式会社)
  • (ピザとビールのおかげでメモが・・・)
  • C#6.0は
    • いろんな便利機能があります。
    • 便利だけど破壊的なほどの修正はないから積極的に使っていくべき
  • C#7.0
    • 超期待
以上なり、ちっとアップデートが遅くなってしまった。。。

コメント

このブログの人気の投稿

間違ったフォーマットのプログラムじゃないんだけど

以下エラーに対し、 ファイルまたはアセンブリ 'SSPI'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。 以下環境で対応した話です。 VisualStudio2012(C# ASP.NET MVC4.0) IIS7.5 とあるところのdllを使用中 ASP.NETをIISに発行しようとしたら、上記エラーが発生。 他のプロジェクトでは問題なく発行できているのに、 何かと思ってみたら、google先生に尋ねてみると、 DLLファイルの対象プラットフォーム(32bit/64bit)が異なる とのことでした。 このサイトでは対処方法として、 運用環境のプラットフォームに合わせ、適切なランタイムファイルを配布してください。 と記載されていますが、今回の私のようにとあるところのdllを使用している場合などは、 そうもいかない場合もあるでしょう。 そこでdllを変更できない場合には、 IISのアプリケーションプールの設定で、 32bitアプリケーションを有効化してあげることで対応できます。 以下手順です。 コントロールパネル → 管理ツール → インターネット インフォメーション サービス (IIS) マネージャー を起動します。 変更したいアプリケーションを右クリックして、詳細設定を選択します。 32ビットアプリケーションの有効化をTrueに変更します。 もう一度発行します。 ここまでです。 簡単だけど知らないとなかなかはまるかなって気がしますね。 独特のくせなのかもしれません。 そして、次なるエラー発生中です・・・。

SQLServer2008でのトランザクションログの切り捨て方

SQL Server 2008でとあるDBのトランザクションログが一杯に。 BACKUP LOG DatabaseName WITH TRUNCATE_ONLY を使ってトランケートしようとしたら、 'TRUNCATE_ONLY' はBACKUP オプションとして認識されません。 との冷たい返事。2008で廃止されていたのを忘れていた。 SQL Server 2008 で廃止されたデータベース エンジンの機能@MSDN そこでヌルデバイスを使用してバックアップを取得する方法で、切り捨てを試みる。 BACKUP LOG DatabaseName TO DISK = ‘nul’ GO するとまた冷たい返事。 現在、データベースのバックアップが存在しないので、BACKUP LOG を実行できません。 2008では過去にフルバックアップを取得しておかないと、ランザクションのバックアップが取得できないことを忘れてた。てなわけで、まずはデータベースのフルバックアップを取得して、 BACKUP DATABASE DatabaseName TO DISK = ‘nul’ GO もう一度トランザクションのバックアップをして、やっと切り捨てれた。最初から単純にしておけばよかった・・・。

並列化できない非同期の話

あるバッチ処理で顧客にメール送信する場面ありますよね。そんなとき、メール送信はメールサーバに投げ込むだけなんだから、投げ込むの非同期すりゃ早くなるんじゃないって思いませんでした? 思いますよね? そんなことを考えて、C# で SmtpClinet を使ったお話です。ちなみに結論的に非同期で早くなりません。 SmtpClient.SendAsync C# でメール送信するなら、SmtpCilent クラスってのがありますと。こいつが同期でメール送信する Send だけではなく、非同期でメール送信する SendAsync ってのを持っているわけですよ。 MSDN を参照すると、 指定した電子メール メッセージを、配信用 SMTP サーバーに送信します。 このメソッドは、呼び出し元のスレッドをブロックしません。また、呼び出し元は、操作の完了時に呼び出されるメソッドにオブジェクトを渡すことができます。 とのこと。非常に Good ですね! 少しの背景と過大な期待 背景として、すでに動いているバッチが遅いって話になって、性能改善に取り組んでいました。現存しているバッチは Send で動作しています。 てことは、 SendAsync にするだけいいんじゃないの?それだけ非同期になるから早くなっちゃうんじゃないの?こんな期待感でいっぱいでした。 ところが 修正して実行すると想定以上の時間で完了しました。でもメールが飛んできません。。。よくよく見ると例外が。。。そしてよくよく MSDN を見ると、 SendAsync を呼び出した後、Send または SendAsync を使用して別の電子メール メッセージを送信する前に、電子メールの伝送が完了するまで待機する必要があります。 とのこと。 これって結局メール送信は非同期で並列になることことを許容していないってことだったんですね。 非同期と並列処理は別ですが、とは言え並列処理を許容していないとは。。。 結局 今回は Parallel.Foreach を使って、メール送信箇所は並列処理するように書き直しました。これもお手軽ですね。