Repro Tech Blog
https://tech.repro.io/
Repro Tech Blog
フィード
Repro Tech Meetup #9 – Webパフォーマンス を開催しました
3
Repro Tech Blog
こんにちは、Repro Booster開発責任者のEdward Fox(edwardkenfox)です。12月13日に開催された Repro Tech Meetup #9 のイベントレポートをお届けします。 今年の3月には「Deep Dive into Browsers」というテーマで開催した Repro Tech Meetup ですが、今回はもう少しテーマを広げ「Webパフォーマンス」という括りにしてみました。テーマの裾野が広くなったことも手伝ってか、前回のイベントと比較すると参加者が倍近くまで増え、約30名の皆さんにご参加いただきました。規模が拡大した一方で、熱量の高い発表や質疑応答が次々…
4日前
AWS Lambda RuntimeをRuby3.3にしたら外部エンコーディングが変化した話
51
Repro Tech Blog
こんにちは。Feature2 Unitのうなすけです。我々のチームの担当範囲のひとつには「データの入出力」というものがあり、お客様からAPI呼び出しやファイルアップロードなどで受け取ったデータを適切に処理するコンポーネントの運用・開発をしています。 AWS Lambdaの処理が失敗するようになった 皆さん、AWS Lambdaはお使いでしょうか。我々も様々な処理にAWS Lambdaを活用しています。一例として、ユーザーからアップロードされたCSVファイルのバリデーションを行うLambda functionをAWS Step Functionsの一部として実行しています。 ある日、機能追加とし…
10日前
Apache HudiのMerge on Readテーブルのパフォーマンス特性とチューニングについて
Repro Tech Blog
Reproでチーフアーキテクトをやっているjoker1007です。 前回、Apache Hudiというテーブルフォーマットについて紹介する記事を書きましたが、今回はHudiを実際に本番に近いデータで検証し、パフォーマンス特性とチューニングについていくつか知見を得たので、その辺りについて紹介します。 また、同じ内容をベースにOTFSG Tokyo Meetup #4というイベントで発表させていただきました。 これぐらいの規模でHudiについてガッツリ検証している例は国内では余り見ない様なので、それなりに貴重な知見を共有できたかなと思います。 ブログ記事とほぼ同じ内容ですが、スライドになってる資料…
2ヶ月前
Repro で遭遇した Aurora MySQL にまつわるトラブル 5 選
Repro Tech Blog
こんにちは、Platform Team の荒引 (@a_bicky) です。前回は続・何でも屋になっている SRE 的なチームから責務を分離するまでの道のり 〜新設チームでオンコール体制を構築するまで〜という話を書いたんですが、今回は Repro の運用に 7 年以上携わる中で私が遭遇して印象的だった Aurora MySQL 絡みのトラブルについて紹介します。 Aurora MySQL が詰まってデータ処理のスループットが下がるとか、API のレスポンスが遅くなるとか、ALTER TABLE する度にアプリケーションエラーが発生するとか、胃が痛くなる胸が熱くなる話が多いので、Aurora M…
2ヶ月前
pt-online-schema-changeにnohupをつけてバックグラウンドで実行してもSIGHUPを受け取って終了する現象
Repro Tech Blog
Platform Team/Sys-Infra Unitの伊豆です。今回は、pt-online-schema-changeにnohupをつけてバックグラウンドで実行してもSIGHUPを受け取って終了する現象に遭遇したので、そのときに調査した内容を共有します。 調査は以下の環境で行いました。 pt-online-schema-change v3.6.0 Amazon Linux 2023 bash 5.2.15 OpenSSH 8.7p1 背景 ReproではAurora MySQLを使っていて、レコード数の多いテーブルのスキーマを変更するときに、pt-online-schema-changeを…
2ヶ月前
Kafka Streams はレコードをどのように処理しているのか
Repro Tech Blog
Platform Team/Repro Core Unit の村上です。 Repro では Kafka を基盤としたストリーム処理のアプリケーションを構築する際に、Kafka Streams を積極的に活用しています。 Kafka Streams は、フォールトトレラントなステートフル処理を簡潔に実装でき、データパイプラインを Topology という表現で抽象化することで、複雑な処理でも管理しやすい形で組み立てていくことが可能です。 また、Apache Kafka 以外の外部依存がないことや Streams DSL によるシンプルな記述でストリーム処理を実装できることなども、ストリーム処理の…
2ヶ月前
TerraformのCIをAtlantisに移行しました
Repro Tech Blog
Repro では AWS 等のリソース管理に Terraform を活用しています。 この度 Terraform で管理しているコードの CI を Atlantis に移行したので、その経緯などについて書きます。 背景 Repro では以下のリソースを Terraform を使ってコード化して GitHub で管理しています。 AWS で構築したインフラ DataDog のモニターやアラート Google Cloud Platform で利用している一部のリソース GitHub の reproio organization のメンバーやチーム Kafka Topic MySQL アカウント P…
3ヶ月前
共通認識を作ろう!ユーザーストーリーマッピングのすすめ
Repro Tech Blog
Reproのデザイナーが、機能開発において要件・フェーズを決めるのに活用できるユーザーストーリーマッピングというワークショップ手法をご紹介します。
5ヶ月前
Go で実 DB を使ったテストをしてみた
Repro Tech Blog
はじめに こんにちは。Repro で新規事業の開発をしている冨永です。 我々のチームでは主に、ユーザーのイベント集計を定期的にバッチ処理するフローで Go を採用しています。 Go で RDB など外部依存のあるコンポーネントを扱うテストをする際 interface などで抽象化しモックすることが多かったのですが、実際にその部分の挙動が確かめられないという不安がありました。 そこで今回は testfixtures というライブラリを使って実際に DB アクセスするテストを書いてみたのでその紹介です。 きっかけ まずはチーム内でテストに関する共通認識を作るためワークショップを実施しました。 各々…
5ヶ月前
デザイナーが中期製品戦略を立てて全社員に未来を見据えたアクションをしてもらうまで
Repro Tech Blog
こんにちは、Reproのデザイナーの河西です。今日は、以前取り組んだ「中期製品戦略の策定」について話したいと思います。 ちょうど1年前のある日、中期経営計画の改定にともなって、中期製品戦略の策定のためのプロジェクトが立ち上がり、策定のためのメンバーの募集がありました。 デザイナーとしてもっと幅を広げたい、会社のみんなにもっとプロダクトにフォーカスしてほしい、売上を伸ばしたい...そんな思いから、策定メンバーに立候補しました。 Reproでいう中期製品戦略とは 戦略的な目標とそれに必要なプロダクト上の戦術を含む、約3年分の開発マイルストーンです。(以下 製品戦略と表記)世間的にはこれら戦略まで含…
5ヶ月前
作った機能をお客様に使ってもらうために必要なのは結局組織間連携の強化だった
Repro Tech Blog
こんにちは。ReproのProduct Planning Teamでプロダクト企画を担当している正木です。 今回は前回の記事の続きで、なぜGoToMarketの改善活動の効果がなかったのかの原因と、そこへの対策についてお話をしていきます。 tech.repro.io 結論から先に言うと、機能提供から利用開始されるまでのリードタイムが減り、活用度も上がるという結果になりました! GoToMarket改善活動はなぜ効果がなかったのか? 大きく2つの理由がありました。 プロジェクト型組織構造によるナレッジの局所化 当時のReproの開発組織はプロジェクト制を取っており、何かの開発が決定すると都度プロ…
5ヶ月前
更新可能なデータレイクを構築するテーブルフォーマットApache Hudiについて
Repro Tech Blog
Reproでチーフアーキテクトを担当しているjoker1007です。 今回、社内のデータストレージの将来的な選択肢の一つとしてApache Hudiというテーブルデータフォーマットについて調査と実データでの検証を実施しました。 この記事では2回に分けて、そもそもhudiってどんなフォーマットなのか、どういうデータで検証してどんな結果が得られたのかについて紹介します。 ということで第1回は、hudiそのものについての紹介をしていきます。 この記事はhudi-0.14.1を利用して検証した時のものです。また社内向けに書いた資料の手直しであるため丁寧語でないことに御留意ください。 Hudiとは何か、…
5ヶ月前
作った機能をお客様に使ってもらうためのGoToMarket活動を改善した話
Repro Tech Blog
こんにちは。ReproのProduct Planning Teamでプロダクト企画を担当している正木です。 Product Planning Teamって何?という方はこちらの記事を併せて見ていただけると嬉しいです! tech.repro.io さて、プロダクト開発に関わっている皆さんであれば「我々の作った機能は果たしてちゃんと使われているんだろうか…」と思ったことは一度はあるはずです。 今回はリリースした機能をお客様に使ってもらうための試行錯誤について2回にわたってお話しようと思います。 ReproにおけるGoToMarketとは? Reproにおいてはリリースされた機能をお客様に使ってもら…
5ヶ月前
Google Cloud の CDC サービスを活用した請求フローの構築
Repro Tech Blog
はじめに こんにちは。新規事業のプロダクトマネジメントを担当している taison です。 先日、顧客への請求金額を算出するために日々実行しているデータフローを刷新しました。 その際に Datastream という Google Cloud が提供する CDC サービスを活用したことで、構築・運用が楽になったのでご紹介します。 なお今回は開発にご協力いただいている 株式会社 Rabee の abyssparanoia さんの提案・検証があって実現したので、ここで感謝させていただきます。 全体像 それまではとある BI ツールを活用して、請求根拠となるデータを各内容にあわせて出力するデータフロー…
5ヶ月前
プロダクトへのフィードバックループを回すための取り組み
Repro Tech Blog
こんにちは。ReproのProduct Planning Teamでプロダクト企画を担当している正木です。 Product Planning Teamって何?という方はこちらの記事を併せて見ていただけると嬉しいです! tech.repro.io 今回はプロダクトや作っている途中の機能に対して、全社からのフィードバックを得るために行っているプロダクトフィードバック会(通称プロフィ会)の運用と改善についてのお話です。 プロダクトフィードバック会とは? 毎週木曜11:00-12:00で全社員を対象に開発チームがプロダクトに関する発表やプレゼンを行い、フィードバックを得る会です。この会は、プロダクトに…
5ヶ月前
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 については前の記事で確認済みなので、ここからはそれ以外の要素について検討していきます。 一番問題にな…
8ヶ月前
Amazon EMR のバージョンアップ 2/3:メジャーバージョンアップで遭遇した問題
Repro Tech Blog
前回の続きです。 EMR 5.36.1 から EMR 6.6.0 への更新について書きます。 EMR 5.36.1 から EMR 6.6.0 への更新 アプリケーション等 EMR 5.36.1 EMR 6.6.0 Tez 0.9.2 0.9.2 Hue 4.10.0 4.10.0 Hive 2.3.9 3.1.2 Hadoop 2.10.1 3.2.1 Presto 0.267 0.267 Trino N/A 367 Amazon Linux 2 2 このバージョンアップでは Hive と Hadoop のメジャーバージョンアップがあるので、Upgrade Amazon EMR Hive Me…
8ヶ月前
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 では多くのミドルウェア…
8ヶ月前
@hono/zod-openapiで型安全なAPI開発
Repro Tech Blog
はじめに こんにちは、Reproで新規事業の開発を行っているエンジニアの兼信です。 今回は @hono/zod-openapi を採用して型安全なAPI開発を行なっている事例をご紹介します。 導入の経緯 私たちが提供する「Repro」は、デジタル領域のマーケターに対し、エンドユーザーとの付加価値の高いコミュニケーション手段を提供するためのSaaSプロダクトです。一方でそのコミュニケーションを次のステージに導くための新規事業も準備しており、そのために新しいプロダクトの開発も行っています。 すでにRepro という規模が大きくなっているプロダクト・ソリューションをもっているため、最初から一定の規模…
8ヶ月前
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の開発と運用を行っている中で、ブラウザの仕様や細かい挙動に関する知見が少しづつ溜まっており、テックブログとは違う形で発表できないかと思いこのイベントを企画しました。また幸運なことに、ブラウザの有識者やサービス開発を通した知見を…
9ヶ月前
作って終わりにしない!チームのビジョンの策定と活用のためにやったこと
Repro Tech Blog
はじめに こんにちは、ReproでUI/UXデザイナー組織のマネジメントを担当している多賀です。 今回は私達が取り組んでいたチームビルディング活動のうち、ビジョンの策定とその活用について紹介したいと思います。 ※ここで言うビジョンとは、どんなチームにしたいのか?の共通認識を言語化したものと捉えています。 いかに良いチームをつくるかはどんな組織においても課題だと思いますが、私達の取り組み例が少しでもお役に立てれば幸いです。 当時の状況 ReproのUI/UXデザイナーは、プロダクト企画を行うProduct Planning Teamというチームに所属しています。 ※Product Plannin…
1年前
マルチプロジェクト構成リポジトリにおいて変更の影響を受けるプロジェクトを検出する
Repro Tech Blog
どうも、Repro Core Unit に所属している村上です。 Repro では現在、20 を超える Kafka Streams アプリケーションが稼働しています。 その中の半分くらいが Repro システムの共通基盤を構成する Kafka Streams アプリケーションであり、それらの運用は Repro Core が持つ責務の 1 つとなっています。 この共通基盤となる Kafka Streams アプリケーション群は、Gradle のマルチプロジェクト構成になっていてコードベースはモノレポで管理されています。 本稿では、この構成におけるデプロイ性の課題とそれに対するアプローチの話をしま…
1年前
AWS Aurora MySQL のメンテナンスの準備・実施・振り返りをチーム横断で行った話
Repro Tech Blog
こんにちは、Sys-Infra Unit の小山です。今回は、AWS Aurora MySQL のメンテナンス準備・実施・振り返りまでを複数チーム横断で行った話を紹介します。 背景と課題 Repro では、AWS Aurora MySQL を利用してサービスを提供しています。Aurora MySQL は、MySQL 互換のリレーショナルデータベースサービスで、Aurora MySQL にも独自のバージョン番号が設定されています。バージョンにはサポート期間が設定されているため、利用しているバージョンのサポート期間が終了する前にはアップデートしておきたいものになります。 今回、Repro で利用し…
1年前
解約したお客さまにインタビューしてプロダクトの企画に活かすまで
Repro Tech Blog
はじめまして、ReproでUI/UXデザイナーを務めている河西と申します。Reproのデザイナーはプロダクト企画を行っているProduct Planning Teamに属し、プロダクトの少し先の未来を描き、中期製品戦略の策定とその浸透および状況にあわせた戦略の改定、顧客からの一次情報を収集、戦略の実行のため体験設計、UI設計まで一貫して行っています。 Product Planning Teamがなにをやっているかなど詳しくはこちらの記事をご覧ください! tech.repro.io 今回は解約したお客さまにインタビューを行いプロダクトの企画に活かすまでをお話したいと思います。ユーザーインタビュー…
1年前
PerformanceResourceTiming API で HTTP Cache のヒット率を知る
Repro Tech Blog
はじめに こんにちは、Repro Booster という製品の開発責任者/プロダクトマネジメントを担当しているEdward Fox(edwardkenfox)です。 WebサイトやWebアプリケーションの表示速度を考える上では、キャッシュの活用はとても大事なテーマです。一口にキャッシュといっても、Webの文脈だけで見ても様々なレイヤーや用途のキャッシュが存在します。今回は昔ながらのキャッシュ、いわゆる HTTP Cache に的を絞り、HTTP Cache のヒット率について考えてみたいと思います。 さまざまなキャッシュレイヤー 前述のように、Webにおけるキャッシュには用途やレイヤーの異なる…
1年前
Reproにおけるプロダクト企画を担うチームとは?
Repro Tech Blog
はじめまして。ReproのProduct Planning Team というチームのマネージャーをしている正木と申します。元々はReproのユーザーでしたが、なんやかんやあってReproに入社しCSを経て現在はPMMを担当しています。 今後、Product Planning Teamからはこれまであまり発信してこなかったReproというプロダクトの企画のお話や、デザインの話、作った機能のGo To Marketの話などをしていこうと思っていますので、よろしくお願いします。 今回は初めての投稿ということもあり、そもそもReproのプロダクト企画チームって何をやってるの?という話をしようと思います…
1年前
Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました
Repro Tech Blog
Development Division/Repro Team/Feature 1 Unit の Watsonです。Feature 1 Unit は Repro Tool の機能開発と保守を担っています。 弊社でも利用している Oj gem のパフォーマンス改善 PR を送った話と、その PR の内容について共有します。 ことのはじまり 以前、同僚が Ruby on Rails で JSON を返す REST API を作成した際、JSON のエンコード部分のパフォーマンス計測をしていました。JSON のエンコード方法は JSON.generate、ActiveSupport::JSON.en…
1年前
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 のパフ…
1年前
SSHログインの失敗が大量に記録されているとSSHログインが極端に遅くなる
Repro Tech Blog
Development Division/Platform Team/Sys-Infra Unitの伊豆です。Sys-Infra Unitはインフラエンジニア・SRE 的な役割を担っています。 今回は、ある日突然SSHログインが遅くなったときに調査した内容を共有します。 SSHログインに数分かかる ある日、AWS EC2上で動いている開発環境のSSHゲートウェイにSSHログインすると30秒以上かかると報告がありました。-vvvオプションを指定してSSHログインしてみるとpledge: filesystemというログが出力された後、数十秒から数分程度かかってSSHログインが成功する状況でした。 …
1年前
プロダクトマネージャーと画家
Repro Tech Blog
はじめに こんにちは、Repro Booster という製品の開発責任者/プロダクトマネジメントを担当しているEdward Fox(edwardkenfox)です。 前回の記事「ServiceWorkerの落とし穴8選」では ServiceWorker という技術に的を絞ったテクニカルなトピックを扱いましたが、今回は少し趣を変えて「プロダクトマネジメント」に関する私の考えや想いを書いてみたいと思います。Repro Boosterの開発と運用を通して自分なりに「プロダクト開発」について考えたことや、得られた示唆をまとめています。Repro Boosterの開発チームが、どのような考え方を持ってプ…
1年前