タグ

ブックマーク / tech.repro.io (41)

  • Kafka Streams はレコードをどのように処理しているのか - Repro Tech Blog

    Platform Team/Repro Core Unit の村上です。 Repro では Kafka を基盤としたストリーム処理のアプリケーションを構築する際に、Kafka Streams を積極的に活用しています。 Kafka Streams は、フォールトトレラントなステートフル処理を簡潔に実装でき、データパイプラインを Topology という表現で抽象化することで、複雑な処理でも管理しやすい形で組み立てていくことが可能です。 また、Apache Kafka 以外の外部依存がないことや Streams DSL によるシンプルな記述でストリーム処理を実装できることなども、ストリーム処理のアプリケーションをスムーズに構築する上で助かっています。 一方で、 なにかしらの問題が発生したときのトラブルシューティングや影響範囲調査の際には、Kafka Streams の内部処理を把握していない

    Kafka Streams はレコードをどのように処理しているのか - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/10/10
  • 共通認識を作ろう!ユーザーストーリーマッピングのすすめ - Repro Tech Blog

    はじめまして。ReproでUI/UXデザイナーをしている竹内と申します。Reproのデザイナーはプロダクト企画を行っているProduct Planning Teamに所属しており、中期製品戦略の策定とその浸透および状況にあわせた戦略の改定、顧客からの一次情報を収集、戦略の実行のため体験設計、UI設計まで一貫して行っています。 Product Planning Teamがやっている仕事は、いくつかのブログ記事でもご紹介しているので、よろしければご参照ください。 tech.repro.io tech.repro.io 今回は、プロダクト全体の企画に関する話ではなく、個別の機能開発においてデザイナーとしてどのように関わっているかのお話です。開発初期で要件が固まっていない時に役に立つ、要件・フェーズを決めるための手法であるユーザーストーリーマッピングをご紹介します。 ユーザーストーリーマッピングと

    共通認識を作ろう!ユーザーストーリーマッピングのすすめ - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/31
  • Go で実 DB を使ったテストをしてみた - Repro Tech Blog

    はじめに こんにちは。Repro で新規事業の開発をしている冨永です。 我々のチームでは主に、ユーザーのイベント集計を定期的にバッチ処理するフローで Go を採用しています。 GoRDB など外部依存のあるコンポーネントを扱うテストをする際 interface などで抽象化しモックすることが多かったのですが、実際にその部分の挙動が確かめられないという不安がありました。 そこで今回は testfixtures というライブラリを使って実際に DB アクセスするテストを書いてみたのでその紹介です。 きっかけ まずはチーム内でテストに関する共通認識を作るためワークショップを実施しました。 各々の『知りたいこと』『教えたいこと』『議論したいこと』を話し合った結果、以下のような話題が上がりました。 今回は特に『外部依存のあるコンポーネントでテストが書き辛い』というトピックが盛り上がり、その中で

    Go で実 DB を使ったテストをしてみた - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/30
  • デザイナーが中期製品戦略を立てて全社員に未来を見据えたアクションをしてもらうまで - Repro Tech Blog

    こんにちは、Reproのデザイナーの河西です。今日は、以前取り組んだ「中期製品戦略の策定」について話したいと思います。 ちょうど1年前のある日、中期経営計画の改定にともなって、中期製品戦略の策定のためのプロジェクトが立ち上がり、策定のためのメンバーの募集がありました。 デザイナーとしてもっと幅を広げたい、会社のみんなにもっとプロダクトにフォーカスしてほしい、売上を伸ばしたい...そんな思いから、策定メンバーに立候補しました。 Reproでいう中期製品戦略とは 戦略的な目標とそれに必要なプロダクト上の戦術を含む、約3年分の開発マイルストーンです。(以下 製品戦略と表記)世間的にはこれら戦略まで含んでロードマップと表現されることもあります。 製品戦略にはプロダクト戦略と戦術が含まれている 誰も正解がわからない中大変だったこと 経験者が不在でゴールがわからない 今までは経営陣がトップダウン的に決

    デザイナーが中期製品戦略を立てて全社員に未来を見据えたアクションをしてもらうまで - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/29
  • 作った機能をお客様に使ってもらうために必要なのは結局組織間連携の強化だった - Repro Tech Blog

    こんにちは。ReproのProduct Planning Teamでプロダクト企画を担当している正木です。 今回は前回の記事の続きで、なぜGoToMarketの改善活動の効果がなかったのかの原因と、そこへの対策についてお話をしていきます。 tech.repro.io 結論から先に言うと、機能提供から利用開始されるまでのリードタイムが減り、活用度も上がるという結果になりました! GoToMarket改善活動はなぜ効果がなかったのか? 大きく2つの理由がありました。 プロジェクト型組織構造によるナレッジの局所化 当時のReproの開発組織はプロジェクト制を取っており、何かの開発が決定すると都度プロジェクトが発足し、開発が終わると解散するという流れでした。 GoToMarket活動を行う前にプロジェクトチームが解散されてしまうことで、すべての機能のGoToMarketを担当するPMMだけにナレッ

    作った機能をお客様に使ってもらうために必要なのは結局組織間連携の強化だった - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/29
  • 更新可能なデータレイクを構築するテーブルフォーマットApache Hudiについて - Repro Tech Blog

    Reproでチーフアーキテクトを担当しているjoker1007です。 今回、社内のデータストレージの将来的な選択肢の一つとしてApache Hudiというテーブルデータフォーマットについて調査と実データでの検証を実施しました。 この記事では2回に分けて、そもそもhudiってどんなフォーマットなのか、どういうデータで検証してどんな結果が得られたのかについて紹介します。 ということで第1回は、hudiそのものについての紹介をしていきます。 この記事はhudi-0.14.1を利用して検証した時のものです。また社内向けに書いた資料の手直しであるため丁寧語でないことに御留意ください。 Hudiとは何か、その目的 hudiは更新可能なデータレイクを構築するためのテーブルフォーマットである。 ストリーミングによるデータインサートや、upsert, deleteをサポートする。 通常、データ分析に向いたデ

    更新可能なデータレイクを構築するテーブルフォーマットApache Hudiについて - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/26
  • 作った機能をお客様に使ってもらうためのGoToMarket活動を改善した話 - Repro Tech Blog

    こんにちは。ReproのProduct Planning Teamでプロダクト企画を担当している正木です。 Product Planning Teamって何?という方はこちらの記事を併せて見ていただけると嬉しいです! tech.repro.io さて、プロダクト開発に関わっている皆さんであれば「我々の作った機能は果たしてちゃんと使われているんだろうか…」と思ったことは一度はあるはずです。 今回はリリースした機能をお客様に使ってもらうための試行錯誤について2回にわたってお話しようと思います。 ReproにおけるGoToMarketとは? Reproにおいてはリリースされた機能をお客様に使ってもらうまでの活動をGoToMarketと呼んでいます。 活動単位が機能であることがポイントです。 Reproはとても機能が多く、ただリリースしただけではなかなか気づいてもらえません。また、ReproのGr

    作った機能をお客様に使ってもらうためのGoToMarket活動を改善した話 - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/26
  • Google Cloud の CDC サービスを活用した請求フローの構築 - Repro Tech Blog

    はじめに こんにちは。新規事業のプロダクトマネジメントを担当している taison です。 先日、顧客への請求金額を算出するために日々実行しているデータフローを刷新しました。 その際に Datastream という Google Cloud が提供する CDC サービスを活用したことで、構築・運用が楽になったのでご紹介します。 なお今回は開発にご協力いただいている 株式会社 Rabee の abyssparanoia さんの提案・検証があって実現したので、ここで感謝させていただきます。 全体像 それまではとある BI ツールを活用して、請求根拠となるデータを各内容にあわせて出力するデータフローを組んでいました。 下図のように、プロダクトの RDB(アプリケーションデータ)そのものに直接接続し、BI ツールで生成したクエリを定期的に実行することで要件を満たしていました。 ただ、おかげ様で事業

    Google Cloud の CDC サービスを活用した請求フローの構築 - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/24
  • プロダクトへのフィードバックループを回すための取り組み - Repro Tech Blog

    こんにちは。ReproのProduct Planning Teamでプロダクト企画を担当している正木です。 Product Planning Teamって何?という方はこちらの記事を併せて見ていただけると嬉しいです! tech.repro.io 今回はプロダクトや作っている途中の機能に対して、全社からのフィードバックを得るために行っているプロダクトフィードバック会(通称プロフィ会)の運用と改善についてのお話です。 プロダクトフィードバック会とは? 毎週木曜11:00-12:00で全社員を対象に開発チームがプロダクトに関する発表やプレゼンを行い、フィードバックを得る会です。この会は、プロダクトに関する様々な立場や部署からのフィードバックを得ることで、そもそも論や考慮漏れの早期発見と対策を行う場となっています。 最近はそれだけでなく、新機能リリース後のお客様の反応についての発表や、マーケティン

    プロダクトへのフィードバックループを回すための取り組み - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/07/23
  • Amazon EMR のバージョンアップ 3/3:Presto から Trino への移行 - Repro Tech Blog

    前回の続きです。 EMR 5.36.1 から EMR 6.15.0 への更新 使用するアプリケーションのバージョンは以下のようになりました。OS は Amazon Linux 2 です。 アプリケーション等 EMR 5.36.1 EMR 6.15.0 Tez 0.9.2 0.10.2 Hue 4.10.0 4.11.0 Hive 2.3.9 3.1.3 Hadoop 2.10.1 3.3.6 Presto 0.267 0.2831 Trino N/A 426 Hive, Hadoop, Tez については前の記事で確認済みなので、ここからはそれ以外の要素について検討していきます。 一番問題になったのは Presto から Trino への移行です。Trino 移行に関係して発生した事柄を列挙します。 Datadog Agent の設定変更 任意の期間の指定したタイプのクエリを実行して結果の

    Amazon EMR のバージョンアップ 3/3:Presto から Trino への移行 - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/05/02
  • Amazon EMR のバージョンアップ 1/3:メジャーバージョンアップの前にやったこと - Repro Tech Blog

    Development Division/Platform Team/Sys-Infra Unit で実施した Amazon EMR 1 のバージョンアップについてどのようなことをやったのか紹介します。 Repro では Presto や Hive などのセットアップに EMR を使用しており、以下の用途で活用しています。 プッシュ通知の配信対象を抽出する 管理画面で参照するデータを抽出する S3 などに貯まっているイベントデータを集計する EMR のアプリケーションとしては以下を使用していました。 Presto Tez Hadoop Hive Hue 経緯 Repro では多くのミドルウェアを運用しており、日々バージョンアップしているのですが、最近まで2019年2月18日にリリースされた EMR 5.21.0 というバージョンを使用していました。もちろん Log4Shell のような脆弱

    Amazon EMR のバージョンアップ 1/3:メジャーバージョンアップの前にやったこと - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/04/17
  • Repro Tech Meetup #8 – Deep Dive into Browsers を開催しました - Repro Tech Blog

    Repro Tech Meetup #8 – Deep Dive into Browsers こんにちは、Repro Booster開発責任者のEdward Fox(edwardkenfox)です。 3/15(金)に「Repro Tech Meetup #8 – Deep Dive into Browsers」という勉強会を開催しました。私たちがRepro Boosterの開発と運用を行っている中で、ブラウザの仕様や細かい挙動に関する知見が少しづつ溜まっており、テックブログとは違う形で発表できないかと思いこのイベントを企画しました。また幸運なことに、ブラウザの有識者やサービス開発を通した知見をお持ちの方々に声をかけるご縁があり、登壇に快諾いただけたおかげでこの勉強会が実現できました。 この記事では登壇者と発表の概要を簡単に紹介させてもらいます。発表資料はすべて イベントURL から見れるの

    Repro Tech Meetup #8 – Deep Dive into Browsers を開催しました - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/03/21
    yattemasita
  • 作って終わりにしない!チームのビジョンの策定と活用のためにやったこと - Repro Tech Blog

    はじめに こんにちは、ReproでUI/UXデザイナー組織のマネジメントを担当している多賀です。 今回は私達が取り組んでいたチームビルディング活動のうち、ビジョンの策定とその活用について紹介したいと思います。 ※ここで言うビジョンとは、どんなチームにしたいのか?の共通認識を言語化したものと捉えています。 いかに良いチームをつくるかはどんな組織においても課題だと思いますが、私達の取り組み例が少しでもお役に立てれば幸いです。 当時の状況 ReproのUI/UXデザイナーは、プロダクト企画を行うProduct Planning Teamというチームに所属しています。 ※Product Planning Teamについて詳しくはこちら tech.repro.io チームが発足したのは約1年前で、異なる2つのチームとして活動していたUI/UXデザイナーとPMMを束ねて現在の体制となりました。(少し珍

    作って終わりにしない!チームのビジョンの策定と活用のためにやったこと - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/02/01
  • マルチプロジェクト構成リポジトリにおいて変更の影響を受けるプロジェクトを検出する - Repro Tech Blog

    どうも、Repro Core Unit に所属している村上です。 Repro では現在、20 を超える Kafka Streams アプリケーションが稼働しています。 その中の半分くらいが Repro システムの共通基盤を構成する Kafka Streams アプリケーションであり、それらの運用は Repro Core が持つ責務の 1 つとなっています。 この共通基盤となる Kafka Streams アプリケーション群は、Gradle のマルチプロジェクト構成になっていてコードベースはモノレポで管理されています。 稿では、この構成におけるデプロイ性の課題とそれに対するアプローチの話をします。 ディレクトリ構造 共通基盤のコードは以下のようなディレクトリ構成になっています。 . ├── Base ├── Deployments A │ └── Kafka Streams Applica

    マルチプロジェクト構成リポジトリにおいて変更の影響を受けるプロジェクトを検出する - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/01/31
  • AWS Aurora MySQL のメンテナンスの準備・実施・振り返りをチーム横断で行った話 - Repro Tech Blog

    こんにちは、Sys-Infra Unit の小山です。今回は、AWS Aurora MySQL のメンテナンス準備・実施・振り返りまでを複数チーム横断で行った話を紹介します。 背景と課題 Repro では、AWS Aurora MySQL を利用してサービスを提供しています。Aurora MySQL は、MySQL 互換のリレーショナルデータベースサービスで、Aurora MySQL にも独自のバージョン番号が設定されています。バージョンにはサポート期間が設定されているため、利用しているバージョンのサポート期間が終了する前にはアップデートしておきたいものになります。 今回、Repro で利用している Aurora MySQL のバージョンがサポート終了日に近づいてきたため、バージョンアップデートをする必要がありました。Aurora MySQL のバージョンを上げるには、Aurora MyS

    AWS Aurora MySQL のメンテナンスの準備・実施・振り返りをチーム横断で行った話 - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/01/30
    めっちゃいいはなしだった
  • 解約したお客さまにインタビューしてプロダクトの企画に活かすまで - Repro Tech Blog

    はじめまして、ReproでUI/UXデザイナーを務めている河西と申します。Reproのデザイナーはプロダクト企画を行っているProduct Planning Teamに属し、プロダクトの少し先の未来を描き、中期製品戦略の策定とその浸透および状況にあわせた戦略の改定、顧客からの一次情報を収集、戦略の実行のため体験設計、UI設計まで一貫して行っています。 Product Planning Teamがなにをやっているかなど詳しくはこちらの記事をご覧ください! tech.repro.io 今回は解約したお客さまにインタビューを行いプロダクトの企画に活かすまでをお話したいと思います。ユーザーインタビューを行っている方、プロダクトの企画を行う方になにか参考にしていただければ幸いです。 ユーザーインタビュー、難しいですよね? ユーザーインタビュー、だれになにを聞いたらいいのか難しいですし。現場では緊張す

    解約したお客さまにインタビューしてプロダクトの企画に活かすまで - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/01/19
  • PerformanceResourceTiming API で HTTP Cache のヒット率を知る - Repro Tech Blog

    はじめに こんにちは、Repro Booster という製品の開発責任者/プロダクトマネジメントを担当しているEdward Fox(edwardkenfox)です。 WebサイトやWebアプリケーションの表示速度を考える上では、キャッシュの活用はとても大事なテーマです。一口にキャッシュといっても、Webの文脈だけで見ても様々なレイヤーや用途のキャッシュが存在します。今回は昔ながらのキャッシュ、いわゆる HTTP Cache に的を絞り、HTTP Cache のヒット率について考えてみたいと思います。 さまざまなキャッシュレイヤー 前述のように、Webにおけるキャッシュには用途やレイヤーの異なる様々な種類のものが存在します。Webサイト/Webアプリケーションを開発する上で気にかけるべきものは、おおよそ次のようなものが該当するでしょう。 HTTP Cache (ブラウザキャッシュ) Cach

    PerformanceResourceTiming API で HTTP Cache のヒット率を知る - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/01/15
  • Reproにおけるプロダクト企画を担うチームとは? - Repro Tech Blog

    はじめまして。ReproのProduct Planning Team というチームのマネージャーをしている正木と申します。元々はReproのユーザーでしたが、なんやかんやあってReproに入社しCSを経て現在はPMMを担当しています。 今後、Product Planning Teamからはこれまであまり発信してこなかったReproというプロダクトの企画のお話や、デザインの話、作った機能のGo To Marketの話などをしていこうと思っていますので、よろしくお願いします。 今回は初めての投稿ということもあり、そもそもReproのプロダクト企画チームって何をやってるの?という話をしようと思います。 プロダクトの企画に関わる方(主にPdMPMMなど)の組織作りや、今後関わりたい方の何かの参考になれば幸いです。 Reproのプロダクト企画 Reproではプロダクト企画チームが2022年から開発

    Reproにおけるプロダクト企画を担うチームとは? - Repro Tech Blog
    katsyoshi
    katsyoshi 2024/01/11
  • Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog

    Development Division/Repro Team/Feature 1 UnitWatsonです。Feature 1 Unit は Repro Tool の機能開発と保守を担っています。 弊社でも利用している Oj gem のパフォーマンス改善 PR を送った話と、その PR の内容について共有します。 ことのはじまり 以前、同僚が Ruby on Rails で JSON を返す REST API を作成した際、JSON のエンコード部分のパフォーマンス計測をしていました。JSON のエンコード方法は JSON.generate、ActiveSupport::JSON.encode、Oj gem を利用する方法など色々ありますが、私としては Oj gemの ほうがパフォーマンス的にいいだろうからそちらを利用したほうが良いのではと思っておりました。 計測結果を拝見したら確

    Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog
    katsyoshi
    katsyoshi 2023/12/19
    うおおおお
  • Kafka Streams の State Store が tombstone によって遅くなってしまったので RocksDB のパラメータを調整してみた話 - Repro Tech Blog

    Platform Team の Repro Core という Unit に所属している村上と申します。 Repro Core の役割の 1 つとして、共通基盤となる Kafka Streams アプリケーションの運用があります。 この共通基盤は Repro の大量トラフィックを捌いている基盤になるため、日々の運用の中で様々な課題に直面します。 今回はそのような課題の中から、tombstone によって State Store のパフォーマンスが低下し、その解決策として RocksDB のパラメータを調整した話をします。 前半部分では tombstone によって State Store のパフォーマンスが低下した件を説明します。後半は RocksDB の compaction の挙動確認とそのパラメータ調整について説明します。 ちなみに、私が所属している Repro Core については、

    Kafka Streams の State Store が tombstone によって遅くなってしまったので RocksDB のパラメータを調整してみた話 - Repro Tech Blog
    katsyoshi
    katsyoshi 2023/12/06