エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

イベント駆動アーキテクチャの勘所

こちらはエムスリーAdvent Calendar 2022の24日目の記事です。

こんにちは、デジスマチームの田口(id:ken-tunc)です。 私達のチームではQRコードによる受付や自動後払いなど、新しい診療体験を提供するデジスマ診療というサービスを開発しています。

開発メンバー6人と小規模のチームですが、毎週のように新機能をリリースしています。 また、ユーザー数も非線形的な成長を遂げており、システムのトランザクションは日に日に増加しています。

IR資料「2023年3月期第2四半期決算発表資料」より

このようなスピード感のある開発を実現できている要因はいくつかありますが、この記事ではそのうちの1つであろうデジスマチームで採用しているアーキテクチャについてまとめていきます。

続きを読む

モニタリング環境改善してシステムの安定化進めてます

こんにちは、基盤チームでエンジニアをやっている桑原です。
エムスリー Advent Calendar 2022 の22日目の記事です。
今日はモニタリング環境を整えた結果エラー解決できたケースをご紹介します。

  • 概要
  • 前提環境
    • データベースの分離プロジェクト
    • サービスのモニタリング環境
  • 問題発生
    • DBコネクションとAPIリクエスト数の調査
    • 特定のインスタンスの調査
  • モニタリング環境整備
    • taskId単位のモニタリング方法
  • 再発から原因究明
    • みんなで原因調査していたときの会話
  • 結果
  • まとめと今後
  • We are Hiring
続きを読む

JavaScript を愛してくれ

この記事は エムスリー Advent Calendar 2022 の 21 日目の記事です。
前日は @mski_iksm による 毎日追加学習する機械学習モデルを、日次実行を止めずにコードをバージョンアップしたい - エムスリーテックブログ でした。

こんにちは。エンジニアリンググループの西川です。
好きな言語は JavaScript です。

適当に書いているので実はあまり習熟していないです。


さて、私は趣味で JavaScript のことを頻繁に調べているのですが、この言語は「好き」と打つと「好きになれない」がサジェストに出てきます。

私はこのことを大変心苦しく思っていました。

JavaScript は思い立ったらすぐ書け、動かせる、非常に魅力的な言語です。今この記事を閲覧しているブラウザひとつで、サクッと実行できます。
そんな素晴らしい言語が嫌われることは極めて遺憾であり、やり切れない思いが胸に渦巻くのですが、同時に実際に xxxxx みたいな動きをするし仕方ない部分もあるなと。

そのため、今回は皆さまが苦しめられているであろう JavaScript のひどい挙動と、その対処法をご紹介したいと思います。

内容には全く関係のない愛猫です

続きを読む

毎日追加学習する機械学習モデルを、日次実行を止めずにコードをバージョンアップしたい

こちらはエムスリーAdvent Calendar 2022の20日目の記事です。 AI・機械学習チームの池嶋 iksm (@mski_iksm) / Twitter です。

AI・機械学習チームでは、ユーザーへの記事レコメンドなどに活用するために、各ユーザーの興味キーワードを特定する機械学習モデルを開発しています。このモデルは前日までのモデルを初期値として、新たなデータを加えて追加学習をする、というのを繰り返しています。そのため、前日のモデルを再帰的に参照しています。

ここで問題になるのはコードを修正するなどしてモデルを変更する場合です。モデルを変更しようとすると、整合性を保つために前日のモデルも変更が必要になり、その場合そのまた前日も…という具合でかなり過去のモデルまで遡った変更が必要になります。しかし、長期間遡ってモデルを変更しようとすると、今日のモデルを作るまでに非常に長い時間がかかってしまい、日次バッチの完了予定時刻*1を超過してしまう問題が発生します。

この記事では、この問題にいかに対応しようとしているかを、過去の戦いも含めて紹介します。

前日のモデルを再帰的に参照するモデル

*1:AI・機械学習チームではほとんどのバッチに完了予定時刻が設定されており、これに違反していないか監視が行われています。監視に関しては以下の記事で紹介されています。 https://www.m3tech.blog/entry/ai-slo-monitoring

続きを読む

Elasticsearch × Bandit Algorithm を使った検索リランキングを最小工数で実現したアーキテクチャ

こちらは 情報検索・検索技術 Advent Calendar 2022 の19日目の記事です。

エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。

今回はElasticsearch × バンディットアルゴリズムで検索リランキングを最小工数で実装したアーキテクチャを紹介します。バンディットアルゴリズムをオフラインで行うことで実装するべきものを最小限に出来た例として面白いと思います。

続きを読む

事業責任者とのコミュニケーションにおける学び〜仮説のタワーマンションを建てないために〜

この記事はエムスリー Advent Calendar 2022 19日目の記事です。前日はエムスリー AI・機械学習チームのRECSYS 2022推し論文を紹介するぜ! - エムスリーテックブログでした。

こんにちは。エムスリーエンジニアリンググループ プロダクトマネージャーの中村です。

今回のテーマは、仕事の9割はコミュニケーションだと言われるプロダクトマネージャー(以下PdMと略します)にとって必須スキルである「報告・連絡・相談」、略して「ホウレンソウ」です。

「ホウレンソウ」といえば、プロダクトマネージャーカンファレンス2022のクライス&カンパニー山本さん・エムスリー山崎さんのセッションで紹介されていたので、記憶に新しい方もいらっしゃるかと思います。

youtu.be

また、先日の髙田さんのブログは、ホウレンソウの「報告」がテーマでした。具体例満載で非常に参考になる内容なので、こちらも合わせてご覧いただけると幸いです。

www.m3tech.blog

これらを踏まえ、今回のブログでは私がPdMとしてホウレンソウにおいてどのような失敗を経験し、それをどう乗り越え、何を学んだのかということをお話しします。

具体的には、事業責任者とのコミュニケーションで陥った失敗についてご紹介します。

  • はじめに:ホウレンソウを「完全に理解した」
  • 何が起こったか
  • 何が問題だったか
    • 自分のやりたいことを伝えるための資料を作っていた
    • 「仮説のタワーマンション」を建ててしまっていた
  • フィードバックを受けて行ったこと
    • ファクトを整理し、数字で語る
    • 開発チームとのコミュニケーションでも活用
  • 事業責任者とのコミュニケーションにおいて気をつけること
  • おわりに:ホウレンソウ「なにもわからない」に少し近づいた
  • We are hiring!!

はじめに:ホウレンソウを「完全に理解した」

恥ずかしながら私は、「ホウレンソウ」をすでにマスターしていると思っていました。「ホウレンソウ」なんていうものは、社会人1年目の初日にはすでに習っており、10年以上の社会人経験を経てすでに体に染み込んでいるものだ、と。

それが、実際にはそんなことなかった、ということを痛感する出来事がありました。

いわゆる「完全に理解した」という状態だったのです。

続きを読む