Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Azure Functionsでの大量データ処理とグレースフルシャットダウン(後編)

技術本部Sansan Engieering Unit Data Hubグループの藤原です。前回はAzure Functions好きにしか刺さらないとがった内容を書いてしまいました。反省しているので、今回は間口を広げて.NETの標準クラスライブラリ好きにも刺さる内容になっています。

前回、グレースフルシャットダウン対応のバグを修正したパッチを適用したが、実はうまくいっていなかった……というところまで書きました。今回はさらに深く入り込み、その問題も直した話になっています。一言でいうと、Event Hubトリガーを使っている場合、SDKのバージョンによってはメッセージが処理されないことがあります(Microsoft.Azure.WebJobs.Extensions.EventHubs の v6.1.0 以上を使用する必要があります)。また、 LinkedCancellationTokenSource を使う場合、リンク先のトークンとの競合状態があるので注意が必要です。

なお、このブログでは事象を理解するための前提知識としてAzure Functionsの内部構造に触れています。詳しくない方は 前回 をご参照ください。また、今回は .NET の内部実装にも踏み込んでいます。

続きを読む

Azure Functionsでの大量データ処理とグレースフルシャットダウン(前編)

技術本部Sansan Engieering Unit Data Hubグループの藤原です。普段はプロダクトのアーキテクチャを改善したり、技術的な課題を解決したり、たまにOSSを書いたりコントリビュートしたりしています。

今年はSansan Data Hubの日々の開発や運用で突き当たっている課題をベースに、現在取り組んでいることや、これから取り組みたいことについて紹介していきたいと思います。今回は、Azure Functionsでの大量データ処理をするとき、グレースフルシャットダウン関連で遭遇した問題について、Azure Functionsの内部構造に触れつつ紹介します。一言でいうと、Event Hubトリガーを使っている場合、SDKのバージョンによってはメッセージが処理されないことがあります(後編で説明しますが、Microsoft.Azure.WebJobs.Extensions.EventHubs の v6.1.0 以上を使用する必要があります)。

続きを読む

生産性指標をFour Keysから変更した話

技術本部 Mobile Applicationグループの山本です。名刺アプリEightの開発を行っています。

今回はMobile ApplicationグループのEight開発チームの生産性指標をFour Keysからベロシティを含む別の値に変更した話をします。

一般的にはベロシティは生産性指標にすべきではない、Four Keysは生産性指標として適切であるという評価だと思います。もちろんそれは理解した上でこの選択をしています。その理由について説明します。

なお組織全体がこのように考えているわけではないということに御注意ください。例えば同じMobile ApplicationグループでもSansan開発チームはFour Keysを生産性指標にしています。

続きを読む

Active Support Instrumentation について

技術本部 Sansan Engineering Unit Nayose グループでエンジニアをしている冨田です。業務では、Ruby on Rails(以降 Rails)を使って名寄せサービスを開発しています。

今回は、Rails などの Ruby コード内のイベント計測に使われる、Active Support Instrumentation について解説します。本 API を利用することで、アプリケーション内で発生するさまざまなイベントを計測し、パフォーマンス改善やデバッグなどの調査に役立てられます。直近 Nayose グループでは、問題調査のために、特定テーブルへの SQL とその呼び出し元をロギングする用途で使いました。

次のバージョンを対象としています。

  • Rails 7.0.4
    • Active Record 7.0.4
    • Active Support 7.0.4
  • Ruby 3.1.4
続きを読む

Sansan Androidチームのライブラリアップデートの取り組みについて

こんにちは。 この記事は、技術本部 Mobile ApplicationグループでSansan(※プロダクトとしてのSansan)のAndroid開発を行っている、桑原、小林、鎌田、原田の共著でお届けします。

今回は、アプリで使用しているライブラリのアップデートについて、

  • Sansanではどのようなポリシーで行っているのか
  • そのポリシーを守るためにしていること
  • そこから見えてくる課題
  • そして今後について

をお話します。

続きを読む

Order Oneでのドメインイベント実装

技術本部 Strategic Products Engineering Unit Order One Devグループで受注業務のDXから、事業を加速するプロダクトOrder Oneの開発をしている山邊です。

本題に入る前にお知らせです。2/27 (火) に「自由な発想でつながる、失敗談を語るLTパーティー」というイベントを開催します。 ぜひ、お気軽にご参加ください! sansan.connpass.com

Order Oneにドメインイベント・非同期イベントの仕組みを導入したので、仕組みの紹介をしたいと思います。ドメインイベントの導入を検討している方の役に立てば幸いです。

続きを読む

SendGridを活用したメールの送受信機能を開発した話

こんにちは、技術本部 Strategic Products Engineering Unit Order One Devグループの中塚です。

Order Oneの新機能としてメール連携機能をリリースしました。

受注専用アドレスがOrder Oneユーザに対して発行され、そのアドレスに対して注文メールを送信することで、Order One上で直接メール経由の注文書を受信できるようになりました。 また、注文に関するメールでのやり取りもOrder One上でできるようになっています。

この記事では、メール連携機能でどのようにメールの送受信を実現したかを紹介します。

続きを読む

© Sansan, Inc.