バックエンド

DMM.博士 通信 Vol.2 - 分散型RAGサテライトシステムの構想

はじめに 着想に至るまで 対象データはどうするか なにで開発をするか システム全体像 Data Collector Indexer Monolithicalized Indexer Vector Store & Retriever Agent どうなったか おわりに はじめに DMM.博士通信の2回目の投稿になります。今回は前回…

生成AIから行動するAIへ レビュー自動承認化と精度100%の実現

1. はじめに 2. 背景と課題 3. 生成AI導入のメリット 4. 自動化までのPhase Ph1. 生成AI導入の準備 (PoC) Ph2. 人の判断を支援するシステムの構築 Ph3. 判定精度の向上対応 Ph4. 自動化戦略 Ph5. 自動化システムの構築 Ph6. 自動化の開始 5. 総括 あとがき …

リアーキテクチャによる運用負担改善の取り組み

はじめに お知らせ通知機能とは? 旧お知らせ通知機能のアーキテクチャ 配信基盤を刷新することになった背景について リアーキテクチャ後のシステム構成について Cloud Run Cloud Bigtable BigQuery 改善した点について 入稿担当者のみで配信設定が完結 入稿…

AWS re:Invent 2024参加レポート

はじめに LC 開発部:神畠正稔 Keynote Accelerate database performance and scalability with AWS storage 全体を通しての感想 現地参加して感じたこと 日本における生成 AI とその向き合い方 オンラインサロン開発部:國分竜二 NVIDIA 主催の GameDay:Ge…

DMM meetup #40 / DMM.go #9 - Go言語で開発するDMMプロダクト - 開催レポート

はじめに 当日の様子 ノベルティの写真 登壇中の写真 登壇内容 清川航一: 「Go プロダクトにおけるテスト改善の軌跡」 登石拓磨: 「突然発生した Flaky Test との戦い」 菊地ひなた: 「新卒が解説する DMM の検索 proxy-API の解体書」 佐藤啓樹: 「GitHub A…

EXNOA新卒エンジニアの業務内容紹介 〜大規模プラットフォームを支える技術〜

はじめに 1日の流れ 10:00~11:00 出勤 11:00~12:00 作業 12:00~13:00 MTG・作業 13:00~14:00 ランチ 14:00~19:00 MTG・作業 19:00~ 退勤 技術について 業務について 締め はじめに EXNOAに24新卒として入社いたしました朴と申します。EXNOAはDMM GAMESという…

ストラングラーフィグパターンとsync-diff-inspectorを用いてゼロダウンタイムのDB移行を達成した話

はじめに 移行の要件 DBの移行方法 DB移行に生じる課題 sync-diff-inspector オンラインで実行するために工夫したこと sync-diff-inspectorによる課題解決 移行開始時点で生じるデータ差分への対処 分散トランザクションにおける修正クエリの容易な適用 デー…

CloudRun + BigTableパフォーマンスチューニング

はじめに 背景 対策 LoadBalancer CloudRun Application BigTable まとめ はじめに マーケティングテクノロジー部の田中翔です。 マーケティングテクノロジー部で開発/運用している配信システムでは、Google Cloud CloudRun + BigTableを使用しています。 今…

GPT3.5系からGPT-4o系への移行から持続可能なAI基盤について考える

はじめに カスタマーサポート基盤について AI活用について GPT-3.5からGPT-4o系への移行 移行の理由 C#からPythonへの移行 実施プロセス プロンプトの挙動確認 並行稼働での動作検証 API Managementの採用 持続可能なAI基盤として おわりに はじめに こんに…

アプリケーション開発の設計のプロからレクチャーを受けてみたら開発生産性が向上した話

はじめに レクチャー前のチーム状況 レクチャー前のソースコードの状況 目標 やったこと 基本的な設計に関する学習 実務形式での設計 ユースケース図の作成 イベントストーミング ドメインモデリング 実装(モブプロ) レクチャーを受けての現在のチーム状況…

継続課金基盤をチームで運用するためにやったこと

はじめに 運用で生じた課題 課題1 アラートや問い合せ対応が一部のメンバーに偏っている 課題2 対応のアウトプットがメンバーによってまちまち 課題3 プロダクト運用に対しての姿勢がメンバーごとに異なる 課題に対するアプローチ アラートのrunbookの整備 R…

出戻りPHPerだからわかるPHPの素敵さ

はじめに 1. 型周りは違和感がない 2. マジックメソッドの楽しさ 3. 例外の再評価 4. コンパイルなしで動作する PHPで足りないと感じる瞬間 おわりに 一緒に働く仲間の募集 はじめに みなさん、こんにちは!二次元&イノベーション開発本部 二次元コンテンツ…

長期プロダクトの負債脱却で意識するコードの片付け

はじめに 嘘つきのお片付け 嘘つきコメント なぜ嘘をつくようになるのか 嘘をつかれることによる実害と対策 嘘をつくドキュメント 不要なコードのお片付け デッドコード 無意味なローカル変数とelse 参考文献 最後に 宣伝 はじめに この記事は、DMMグループ …

linknameの利用制限はGoの後方互換性に抵触するか

はじめに 発生した事象 エラーの原因 linknameって? もともとlinkenameは後方互換性の対象ではなかった 後方互換性の例外 1. unsafeパッケージをインポートしたもの 2. 構造体リテラル 3. メソッド 4. ドットインポート 5. Sub-repositories まとめ はじめ…

Go言語入門:簡単なHTTPサーバとテストの実装を徹底解説

はじめに net/httpとは? 実装 サンプルコード コードの各部分の解説 テスト サンプルコード 各テストケースの解説 1. 正常系 2. クエリパラメータが設定されていない場合 3. リクエストメソッドが異なる場合 まとめ この記事は、DMMグループ Advent Calenda…

PHPからGoへのリライトで学んだこと

はじめに リライトの概要 大変だったこと PHP のコードを理解することが前提 Go の言語特性を活かせない 良かったこと フレームワークに頼りきらない実装方法が身につく 既存サービスの実装理解の向上 命名統一によるコードレビューの効率化と生産性向上 ま…

TCPのhalf-open connectionsが発生したので紐解いてみた

はじめに 環境 今回発生した問題 half-open connectionsに関する余談 half-open connectionsが発生した原因と解消方法 cloud nat Istio Nginx 最後に はじめに この記事は DMMグループ Advent Calendar 2024 6日目の記事です。 こんにちは、プラットフォーム…

日時フィールドの丸め処理を入れて検索のレスポンス改善をした話

はじめに 結論 やったこと 得られた結果 検索システムの簡易理解 DMMの検索システム概要 Solrのクエリと検索システムにおけるキャッシュについて Filter Query (フィルタクエリ) Solrにおけるキャッシュ 検索システム全体でのキャッシュの考え方 実施背景 実…

Dagger Go SDKからgo-gitとgo-githubへ ~ モノレポのCIの書き換えと実装比較 ~

はじめに Dagger Go SDK / go-git / go-github とは Dagger Go SDK プログラマブルであること ポータブルであること 参考資料 go-git 参考資料 go-github 参考資料 Dagger Go SDK 以前のお話 Dagger Go SDK から go-git と go-github へ書き換えた背景 前提 …

APIゲートウェイ'Gen2-GW'の負荷試験の取り組み

はじめに 負荷試験実施の背景 環境 シナリオ シナリオの作り方 機能を軸にシナリオを作成する バックエンドのレイテンシを再現する 負荷試験中に遭遇した問題 CPUスロットリングによるレイテンシ悪化 HPAによる対応 Resource Limitsによる対応 ネットワーク…

サーバーサイドのレガシーシステムを、ビッグバンではなく堅実にリプレイスした話

はじめに サーバーサイドのレガシーシステム レガシーシステムの課題 コードの複雑化 プロジェクトの立ち上げ やること やらないこと 進め方とフェーズ フェーズ1.新しいシステムに1ページのみ置き換え、効果測定 このフェーズで起きたこと、学び フェーズ…

DMMオンラインサロンのビジネス基盤刷新プロジェクト「neon」の技術スタック

はじめに neonプロジェクトについての紹介 アプリケーション Go gRPC モノレポ インフラ ECS Fargate データストア 分散トランザクション管理 認可基盤 終わりに はじめに オンラインサロン開発部 開発グループ アーキテクトチームの塚原です。 DMMオンライ…

新ヘルプセンターシステム#4 API開発初期段階での技術選定の振り返りと今後の展望

イントロダクション 開発対象のAPI 技術選定の内容 プログラミング言語(PHPからGoへのリライト) リンター/フォーマッター Webフレームワーク ORM マイグレーションツール デザインパターン/アーキテクチャ 良かった点 1. 学習コスト削減とオンボーディング…

新ヘルプセンターシステム#3 バックエンドチームがアプリ開発に集中できた秘訣

はじめに 開発初期の状況 MSAグループについて 設計の進め方 社内マイクロサービスプラットフォームの活用 レビューの遅延とその改善 負荷試験 モニタリング まとめ はじめに プラットフォーム事業本部 CSプラットフォームグループの佐々木です。 私はスキル…

Go言語でElectronアプリケーションの高速化を実現した話

はじめに DMMGamePlayerとは 必要な機能 技術選択の理由 苦手な分野 Electronの中にGo 並列処理の効果 まとめ はじめに 合同会社EXNOA プラットフォームシステム部の知久です。 普段はNativeアプリチームのメンバーとして、EXNOAでサービスしているDMMGamePl…

3ヶ月で作る高負荷広告配信サーバーの4つの注意点

はじめまして! アドプラットフォームグループの宮田です。 今年DMMに中途で入社し、新規開発や保守・改善活動に取り組んでいます。 これまで位置情報を使った大規模スマホゲームやVRアプリケーション、ブロックチェーンを使ったゲーム等々を作ってきた社会…

DMMポイントって? #1 ポイントチームってなにをやっているの

はじめに ポイントサービスがやっていること ポイントシステム チームについて これからの3年 今後の連載について はじめに こんにちは。プラットフォーム事業本部ペイメントサービス部ポイントスクラムチームの小谷口です。 現在は、ポイントサービスのプロ…

DMMアカウントサービスチームの取り組み(レイテンシー改善)

はじめに アカウントサービスチームとは 最近の課題改善 最後に はじめに こんにちは! メンバーシップサービス部 アカウントサービスチームの今井です。 現在はアカウントサービスチームのプロダクトオーナーとして、チームが持つプロダクトの価値の最大化…

DMM.comの課金プラットフォームにおけるサーバーサイドKotlin事情【Developers Boost 〜U30エンジニアの登竜門〜】

はじめに 登壇概要 なぜKotlinを採用したのか? 新しいことやってみたい 今後長く使える言語 Javaエンジニアにとって習得が容易 実際に使って気づいた良い点・使いづらい点について 良い点: null safety 使いづらい点: nullを扱うライブラリと相性が良くな…

Ruby のように書きやすく C のように速いプログラミング言語「Crystal」

はじめに Crystalを選んだ理由 Rubyのように書きやすいCrystal Cのように早いCrystal 静的型付け言語であるCrystal まとめ 採用情報 はじめに はじめまして、DMM.comラボのy2k2mtと申します。今回は、当チームが開発を行う時にメインの言語として使用してい…