2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
三宅和之氏:個人的にすごくうれしいのが、このTシャツを着ている理由でもあるんですけど、今までもNode.jsでAzure Functionsを作れたんですけれども、TypeScriptが正式利用できるようになって、type-safeな世界でAzure Functionsが書けるようになりました。
今まではやはりC#派の人とNode.js派、僕はNode.js派だったんですけど、そこでどうしても勝てなかったんです。でも、これで正式にTypeScriptでNode.jsのAzure Functionsを書けるようになったことで、もうなんか「違いありますか?」「どっちかというと、こっちのほうが書きやすくないですか?」という(笑)。
わりと個人的にはすごく優位性を感じているぐらい、非常に書きやすいですし、VSCodeと組み合わせたTypeScriptの強力な補完機能で、気持ちよく書けるようになったなって。これはHTTPトリガーですけどね。例えばAPIのペイロードもきっちりtypeで定義して、それが補完されるように実際のコードを書けるようになっているということですね。
あと、Azure FunctionsといえばDurable Functions。
去年のカンファレンスのキーノートでもこの話でけっこう盛り上がっていたのですが、本来FaaSってステートレスじゃないですか。ステートレスのくせにステートフルなワークフローを作れるという不思議なDurable Functionsという機構があるんですけれども、ここに書いている図のパターンが実装できるようになっていて。まあ、ワークフローをコードで書けるということですね。
状態を持てていて、それは永続化されます。なので、それが例えば何か途中でいったん状態を持って処理が休止される場合は、その間は課金をされないというような、わりと優れものなんです。
このDurable Functions自体も2.0に今更新されています。アクターモデルってわかりますかね。アクターモデルを実装したEntity Functionsというのができて、状態の持たせ方がもう少し柔軟にできるように、オブジェクト指向的にできるようになりました。日本語のドキュメントがあるので、詳細はリンクを読んでみてください。こういうのが出てきたり、Azure Functionsはどんどん広がっています。
最後にAzure Functionsの話題でもう1つですね。もともと先ほどPremium Planのところで説明したように、Azure Functionsに限った話ではないと思うんですけど、Azure Functionsってスケールコントローラがとても優秀です。
いろいろなメトリクスを見て適切にスケールするという処理は必ず持っていると思うのですが、そのAzure Functionsで使っているスケールコントローラをベースに、これはMicrosoftとRed Hatで共同開発して、OSS化してぜんぜん別物としてGitHubに切り出したもの(KEDA)が、使えるようになっています。
確かCNCFにこれを持っていくんじゃないかなと思うのですが、ぜんぜんAzureとは関係ない世界で、スケールコントローラ自体を外に出して、いろいろなところで応用できるようにするような取り組みもされています。最近、MSはけっこうこういうOSS活動をがんばっていますね。というところの現れです。
ここまでがAzure Functionsの話で、ここからはちょっとデータ系の話をしたいと思います。
Azure Cosmos DBという、AWSでいうとDynamoに該当すると思うんですけれども、特徴としてはここに書かれているような感じですね。
NoSQLで、グローバル分散できて、スループットが高いですよというような、NoSQL系でよくあるうたい文句は変わらないんですけれども。これ自体は、今となってはどのクラウドでも同じようなものがあるので、これ自体どうこう言うつもりはないのですが、このChange Feedという機能がけっこうよくできていて。
Cosmos DBにデータが入った、何かデータがアップデートされたというときに、それにあわせてデータをリアルタイムに配信する機能が最初からついているんですね。しかもその配信先は複数配信することができる。なので、データベース起点でマイクロサービスを展開するという設計ができる。
実は、最初にご紹介した2つのアーキテクチャも全部そうなんですよね。マイクロサービスをデータ起点で、例えば通常の何かNotification系につなげることもできるでしょうし、これはDatabricksからSpark、BI系のデータのパイプラインを作ることもできるし、アーカイブして別のデータベースをもう1個つくるようなパイプラインも、1つのデータ起点から同時に複数配信できる。稼働させながらこのパイプラインをどんどん追加できるという優れものになっています。僕の大好きな機能ですね。
それを実装するときに、直接SDKを使ってもいいのですが、おすすめは、Azure FunctionsにCosmos DB Triggerというのがあるので、これを使うといたって簡単にデータのフィードを取得できる。いったんFunctionsにデータが入ってしまえば、もうあとはお好きにどうぞという世界なので、これはとてもおすすめです。
だいたい配信先の1つにリアルタイムのNotificationが求められる。しかも、Webに対するNotificationがけっこう求められていて、それを仲介するWebSocketのサービスも最近Serverless化されました。もともと「SignalR」というライブラリがあったんですけれども、それがAzureでServerless化されました。
それは「Azure SignalR Service」といって、いろんな組み合わせはあるんですけれども、だいたいよくあるパターンとして、Cosmos DBのChange Feedでデータ変更を契機にAzure Functionsが動いて、そのAzure Functionsの中でSignalR Serviceを呼んで、Webに変更を配信するという。
コードはこれだけ。こんな感じ。
サーバ側は、Cosmos DBトリガーなので、設定さえされていれば、動かすと何かデータ変更があったらいきなりデータが入ってくるんですね。あとはそのデータをSignalRのバインディング……接続文字列などの設定ファイルは別途あるとして、ここにSignalRにオブジェクトをぽっと置いてあげれば、SignalRを経由してWebに配信される。
Web側は、signalr.jsというライブラリがありますので、これであらかじめWebを起動したときにコネクションを張っておいて、データをどんどんストリームで受け取ると。
こういうことができるので、一番最初に説明したような、「何かツイートがあったら、データベースを経由して、Azure Functionsを経由して、SignalRを経由して、Vue.jsのクライアントにずらーっとリアルタイムのデータをプッシュできる」みたいなものがServerlessだけで完結するようになってしまったと。このへんはけっこうSignalRサービスが出たことによる恩恵は大きいなと思っています。
最後のトピックですね。SQL DBという昔からあるRDBがあるんですけれども、技術的にはオンプレのSQLサーバとほとんど同じで、.NETとかとよく組み合わせて使われるのかな。
これに最近、まだプレビューなんですけど、Serverlessモードというのが出てきました。何をもってServerlessと言っているのかというと、これは一定時間アクセスがないと止まって、課金も止まるというやつですね。ポンと1回何かpingでも打つと、コールドスタートになってしまうのですが、また再開するという。
なので、例えば社内営業システムのような、夜は使わないようなシステムのバックエンドのDBにはもうばっちり適しているのではないかなと。少なくとも夜中に使っていない時間の課金は防げます。
それから、スケールアウトではなくてスケールアップとしてのオートスケール機能がついていて。vCoreのMinとMaxを選んで、これだと0.5〜4vCoreまで範囲を設定しておけば、負荷に応じてvCoreが増えたり減ったりしてくれるという機能も持っています。
まだプレビューですけど、このへんが出てくるとRDBの使い方も、もしかしたらServerlessのアーキテクチャの中の1つの要素として十分使えるようになってくるのではないかなと期待しています。もうすでにお試しでは使えるようになっているので、興味がある方は触ってみるといいんじゃないかなと思いますね。
最後にまとめに入ります。いろいろAzure Serverlessのファミリーが増えてきているのですが、まだまだ課題はやはりあります。
データ分析もできるしデータプロセシングもできるのですが、僕の大好きなフロントエンド、ここについてはまだぜんぜん弱くてですね。フロントエンドだったら、FirebaseやNetlifyのような、SPAをきちんとホストできてDevOpsともきちんと組み合わせられるような仕組みが、正直ちょっと足りていないです。
足りていないことについては、私もMicrosoft MVPという立場でどんどんフィードバックしていますし、そういった声を上げている人は多いので、そのうち出てくるのかもしれないんですけれども、フロントエンドは本当にすごく重要な要素だと思うんですよね。そこが足りていないところが個人的には課題かなと思っています。
あと1分なので、まとめに入らせていただきます。
Azure Serverlessという広い世界はあるんですけれども、繰り返しになりますけど、それはAzure Functionsだけではないですよということが1点。
それから、それがあるために、ほぼServerlessだけで実践に使えるシナリオがかなりできてきた。実際、私は業務でそれをやっています。
あと、Azure Functionsもそうですし、それぞれのSDKはほとんど今OSSで作られているので、そのあたりコントリビュートしましょうよと。
本日話せなかったことがいろいろあるんですけど、さっきなんだかCFPの話をしていたので、ちょっとこのへんがんばってみちゃおうかななんて。けっこうおもしろい話が実はあるのでやってみようかとちょっと思い始めています。
ありがとうございました。
(会場拍手)
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05