Repro Tech Blog

https://tech.repro.io/

Repro Tech Blog

フィード

記事のアイキャッチ画像
Amazon EMR のバージョンアップ 3/3:Presto から Trino への移行
はてなブックマークアイコン 7
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…
21日前
記事のアイキャッチ画像
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 では多くのミドルウェア…
23日前
記事のアイキャッチ画像
@hono/zod-openapiで型安全なAPI開発
Repro Tech Blog
はじめに こんにちは、Reproで新規事業の開発を行っているエンジニアの兼信です。 今回は @hono/zod-openapi を採用して型安全なAPI開発を行なっている事例をご紹介します。 導入の経緯 私たちが提供する「Repro」は、デジタル領域のマーケターに対し、エンドユーザーとの付加価値の高いコミュニケーション手段を提供するためのSaaSプロダクトです。一方でそのコミュニケーションを次のステージに導くための新規事業も準備しており、そのために新しいプロダクトの開発も行っています。 すでにRepro という規模が大きくなっているプロダクト・ソリューションをもっているため、最初から一定の規模…
1ヶ月前
記事のアイキャッチ画像
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の開発と運用を行っている中で、ブラウザの仕様や細かい挙動に関する知見が少しづつ溜まっており、テックブログとは違う形で発表できないかと思いこのイベントを企画しました。また幸運なことに、ブラウザの有識者やサービス開発を通した知見を…
2ヶ月前
記事のアイキャッチ画像
作って終わりにしない!チームのビジョンの策定と活用のためにやったこと
Repro Tech Blog
はじめに こんにちは、ReproでUI/UXデザイナー組織のマネジメントを担当している多賀です。 今回は私達が取り組んでいたチームビルディング活動のうち、ビジョンの策定とその活用について紹介したいと思います。 ※ここで言うビジョンとは、どんなチームにしたいのか?の共通認識を言語化したものと捉えています。 いかに良いチームをつくるかはどんな組織においても課題だと思いますが、私達の取り組み例が少しでもお役に立てれば幸いです。 当時の状況 ReproのUI/UXデザイナーは、プロダクト企画を行うProduct Planning Teamというチームに所属しています。 ※Product Plannin…
3ヶ月前
記事のアイキャッチ画像
マルチプロジェクト構成リポジトリにおいて変更の影響を受けるプロジェクトを検出する
Repro Tech Blog
どうも、Repro Core Unit に所属している村上です。 Repro では現在、20 を超える Kafka Streams アプリケーションが稼働しています。 その中の半分くらいが Repro システムの共通基盤を構成する Kafka Streams アプリケーションであり、それらの運用は Repro Core が持つ責務の 1 つとなっています。 この共通基盤となる Kafka Streams アプリケーション群は、Gradle のマルチプロジェクト構成になっていてコードベースはモノレポで管理されています。 本稿では、この構成におけるデプロイ性の課題とそれに対するアプローチの話をしま…
3ヶ月前
記事のアイキャッチ画像
AWS Aurora MySQL のメンテナンスの準備・実施・振り返りをチーム横断で行った話
Repro Tech Blog
こんにちは、Sys-Infra Unit の小山です。今回は、AWS Aurora MySQL のメンテナンス準備・実施・振り返りまでを複数チーム横断で行った話を紹介します。 背景と課題 Repro では、AWS Aurora MySQL を利用してサービスを提供しています。Aurora MySQL は、MySQL 互換のリレーショナルデータベースサービスで、Aurora MySQL にも独自のバージョン番号が設定されています。バージョンにはサポート期間が設定されているため、利用しているバージョンのサポート期間が終了する前にはアップデートしておきたいものになります。 今回、Repro で利用し…
3ヶ月前
記事のアイキャッチ画像
解約したお客さまにインタビューしてプロダクトの企画に活かすまで
Repro Tech Blog
はじめまして、ReproでUI/UXデザイナーを務めている河西と申します。Reproのデザイナーはプロダクト企画を行っているProduct Planning Teamに属し、プロダクトの少し先の未来を描き、中期製品戦略の策定とその浸透および状況にあわせた戦略の改定、顧客からの一次情報を収集、戦略の実行のため体験設計、UI設計まで一貫して行っています。 Product Planning Teamがなにをやっているかなど詳しくはこちらの記事をご覧ください! tech.repro.io 今回は解約したお客さまにインタビューを行いプロダクトの企画に活かすまでをお話したいと思います。ユーザーインタビュー…
4ヶ月前
記事のアイキャッチ画像
PerformanceResourceTiming API で HTTP Cache のヒット率を知る
Repro Tech Blog
はじめに こんにちは、Repro Booster という製品の開発責任者/プロダクトマネジメントを担当しているEdward Fox(edwardkenfox)です。 WebサイトやWebアプリケーションの表示速度を考える上では、キャッシュの活用はとても大事なテーマです。一口にキャッシュといっても、Webの文脈だけで見ても様々なレイヤーや用途のキャッシュが存在します。今回は昔ながらのキャッシュ、いわゆる HTTP Cache に的を絞り、HTTP Cache のヒット率について考えてみたいと思います。 さまざまなキャッシュレイヤー 前述のように、Webにおけるキャッシュには用途やレイヤーの異なる…
4ヶ月前
記事のアイキャッチ画像
Reproにおけるプロダクト企画を担うチームとは?
Repro Tech Blog
はじめまして。ReproのProduct Planning Team というチームのマネージャーをしている正木と申します。元々はReproのユーザーでしたが、なんやかんやあってReproに入社しCSを経て現在はPMMを担当しています。 今後、Product Planning Teamからはこれまであまり発信してこなかったReproというプロダクトの企画のお話や、デザインの話、作った機能のGo To Marketの話などをしていこうと思っていますので、よろしくお願いします。 今回は初めての投稿ということもあり、そもそもReproのプロダクト企画チームって何をやってるの?という話をしようと思います…
4ヶ月前
記事のアイキャッチ画像
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…
5ヶ月前
記事のアイキャッチ画像
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 のパフ…
5ヶ月前
記事のアイキャッチ画像
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ログインが成功する状況でした。 …
5ヶ月前
記事のアイキャッチ画像
プロダクトマネージャーと画家
Repro Tech Blog
はじめに こんにちは、Repro Booster という製品の開発責任者/プロダクトマネジメントを担当しているEdward Fox(edwardkenfox)です。 前回の記事「ServiceWorkerの落とし穴8選」では ServiceWorker という技術に的を絞ったテクニカルなトピックを扱いましたが、今回は少し趣を変えて「プロダクトマネジメント」に関する私の考えや想いを書いてみたいと思います。Repro Boosterの開発と運用を通して自分なりに「プロダクト開発」について考えたことや、得られた示唆をまとめています。Repro Boosterの開発チームが、どのような考え方を持ってプ…
7ヶ月前
記事のアイキャッチ画像
「大掃除」から「定常的なタスク消化」へ、Repro Sys-infra Unitの取り組み
Repro Tech Blog
健全性を保つための活動とそれを評価するために行ったことを説明します。 この活動は Repro 全体の話ではなく Development Division/Platform Team/Sys-Infra Unit が行なったものです。 Sys-Infra Unit は Repro のサービス全般のインフラ管理と一部のアプリケーションの運用などを行なっている Unit です。 SRE 的なこともやっています。 課題 Development Division では四半期ごとに成果目標と行動目標を決めて半期の終わりに達成度などを評価するような制度が運用されています。 期初に作成する目標の一部となるよう…
7ヶ月前
記事のアイキャッチ画像
SCRIPT 要素の変遷から触れる Web の進化
Repro Tech Blog
はじめに こんにちは。Repro で Booster の開発をしている杉浦と申します。 最近は JavaScript の盛り上がりが凄いですね。今ではブラウザ内にとどまらず、サーバサイドでも活用される様になりました。 これには、言語仕様が整理されたり機能が強化されたり、非常に大きな発展があったという点が大きいです。 実は、言語としての JavaScript だけではなく、最近 HTML との境界インタフェースとしての JavaScript の仕様も最近かなり明確化されてきています。 自分も HTML5 の最初のあたりまでは把握していたのですが、Booster の開発に携わる中で久しぶりに確認し…
7ヶ月前
記事のアイキャッチ画像
pt-online-schema-change の実行が必要かどうか判断するタイミングをより早くした話
Repro Tech Blog
Repro では Aurora MySQL を使用しています。いくつか数千万行を越えるデータを持つ大規模なテーブルもあります。 大規模なテーブルのスキーマを変更するときは pt-online-schema-change1 を使用していますが、今回はその必要性を判断するタイミングを早めた話です。 pt-osc が必要になる理由等は次の記事が詳しいです。 - pt-online-schema-changeの導入時に検討したこと、およびRailsアプリとの併用について - freee Developers Hub 解決したい課題 Repro では Rails アプリケーションが管理画面や API を…
7ヶ月前
記事のアイキャッチ画像
続・何でも屋になっている SRE 的なチームから責務を分離するまでの道のり 〜新設チームでオンコール体制を構築するまで〜
Repro Tech Blog
こんにちは、Platform Team というチームでマネージャーをしている荒引 (@a_bicky) です。 Platform Team は、データエンジニア・アーキテクト的な役割を担う Repro Core Unit と、インフラエンジニア・SRE 的な役割を担う Sys-Infra Unit から成るチームです。 先月 SRE Lounge #15 で「何でも屋になっている SRE 的なチームから責務を分離するまでの道のり 〜新設チームでオンコール体制を構築するまで〜」と題して次の発表をしたんですが、時間の都合上話せなかった内容があるので、それらについて触れたいと思います。 なお、当日の…
7ヶ月前
記事のアイキャッチ画像
Repro Booster事業部におけるLookerを使ったデータ活用の取り組み
Repro Tech Blog
Reproで開発を担当しているRyoma Shindo です。前回の記事「ServiceWorkerの落とし穴」で紹介のあったRepro Boosterの開発と運用に携わっています。 私達のチームでは少し前からLookerを使ったデータ活用を強化しています。その取り組みを通して定型業務の効率化など基本的なところはもちろん、もともと期待していた以上の効果も得られたため、取り組んだ内容についてLooker自体の話やそこから得られた示唆も踏まえつつご紹介します。 Lookerとは LookerはいわゆるBIツールで、データソースをインプットとしてデータの可視化を行い、意思決定の手助けをしてくれます。…
9ヶ月前
記事のアイキャッチ画像
ServiceWorkerの落とし穴8選
Repro Tech Blog
はじめに Reproで開発を担当しているEdward Fox (edwardkenfox) です。2021年頃から Repro Booster というプロダクトの立ち上げに携わっており、開発を通して得た知見を共有できればと思い立ち筆を取るに至りました。4年ぶりのテックブログ執筆で少しばかり緊張していますが(?)、張り切ってやっていこうと思います。 Repro Boosterとは 2022年11月に正式リリースした、ウェブサイトの表示速度向上を実現するサービスです。「タグを入れたその日から、Webサイトが速くなる」というタグラインのもと、タグ(JavaScript)の設置だけでウェブサイトの表示…
9ヶ月前
記事のアイキャッチ画像
モノリシックなRailsアプリケーションで、APIのエンドポイント毎にSLOを設定する
Repro Tech Blog
こんにちは、@r_takaishiです。今回は、モノリシックなRailsアプリケーションが提供するAPIについてエンドポイント毎にSLOを設定できるようにしたので紹介します。 解決したい問題 ReproではRailsアプリケーションが様々なAPIを提供しています。このとき、APIのAvailabilityやLatencyについて可視化して障害が起こっていないか、パフォーマンスが低下していないかを調べることがあります。また、APIについてSLOを設定し、サービスの信頼性を保ちつつ開発を行うこともあるでしょう。 Reproでも可視化やSLOの設定は行ってきました。しかし、それらの対象がALBのTa…
1年前
記事のアイキャッチ画像
サービス毎に作られていたデプロイ用のSlackBotなどを統合し、利用しやすくしました
Repro Tech Blog
こんにちは、@r_takaishi です。今回は、筆者が所属しているシステム基盤チームで行ったデプロイパイプラインの改善について紹介します。 背景と課題 Reproでは多数のサービスをECS上で動かしており、それらのサービスは複数の言語・リポジトリで構成されています。また、サービスをChatOps、つまりSlackBotに指示を出してデプロイを行うための仕組みも存在しています。しかし、SlackBotからデプロイされているサービスは一部だけで、手元からデプロイするサービスも多数存在します。 SlackBotからデプロイするサービスと手元からデプロイするサービスの二種類が存在する要因に、Slac…
2年前
記事のアイキャッチ画像
Terraformのplan結果をmarkdownとして整形するツール、terraform-j2mdの紹介
Repro Tech Blog
こんにちは、@r_takaishi です。最近のおすすめYouTubeチャンネルは Namibia: Live stream in the Namib Desert です。今回は、Terraformのplan結果をmarkdownで整形するツールである reproio/terraform-j2md について紹介します。 どのようなツールなのか まずはterrafororm-j2mdがどのようなツールなのかお見せします。まず、以下のようなTerraformのコードを用意します。 terraform { required_providers { env = { source = "tchupp/e…
2年前
記事のアイキャッチ画像
Kafka Brokerのcompaction動作の詳細とチューニング方法について
Repro Tech Blog
Reproでチーフアーキテクトとして働いているid:joker1007です。 今回、Kafka Brokerのcompaction動作について調査しチューニングすることでパフォーマンス改善の成果が得られたため、そのノウハウをブログにまとめておきました。 かなりマニアックな内容なので、需要は多くないと思いますが、私が調査した限りでは日本語で同じ様な内容のブログ記事はほとんど存在しなかったため、Kafkaを自前で運用している人にとっては役に立つ内容かもしれません。 compactionとは (参考: https://kafka.apache.org/documentation/#compactio…
2年前
記事のアイキャッチ画像
Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり(再始動編)
Repro Tech Blog
こんにちは、@r_takaishi です。近所にスパイスカレーのお店ができてハッピーです。今回は、Reproのサーバーサイド開発環境におけるM1 Mac対応を改めて行ったので、やったことを紹介します。 なお、これまでの経緯は以下の通りです。 前回 Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり(撤退編) - Repro Tech Blog 前々回 Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり - Repro Tech Blog いつのまにかConfluent PlatformがM1 Mac上のDockerで動くようになっていた …
2年前
記事のアイキャッチ画像
Papertrailに送っているログの流量をDatadogで監視する
Repro Tech Blog
こんにちは、Site Reliability Engineerの @r_takaishi です。Reproではログの管理や検索に Papertrail を使っています。今回、Papertrailに送られるログの流量をDatadogで監視し、流量の増加に気づくための仕組みを整えたので紹介します。 課題 Reproでは様々なログをPapertrailに送り、エラー検知や検索などに活用しています。Papertrailの料金プランは例えば1GB/月で7ドルのようなログのデータ量で契約します。これを越えた場合は従量課金となります( https://www.papertrail.com/plans/ )。…
2年前
記事のアイキャッチ画像
Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり(撤退編)
Repro Tech Blog
記事執筆中に動かなくなった開発環境 Repro でサーバーサイドの開発をお手伝いしているうなすけと申します。 前回の記事を最後の脚注まで読んでくださった方はご存知でしょうが、記事執筆中にmergeされた変更によって、M1 Mac での開発環境は動かなくなってしまいました。 tech.repro.io この記事では、一体何が原因で動かなくなってしまったのか、回避のために試したことと、結局撤退する判断をした経緯について書きます。 Repro のアーキテクチャについて まず、なぜ動かなくなってしまったのかですが、これには Repro というサービスのアーキテクチャが関係してきます。 Repro では…
2年前
記事のアイキャッチ画像
Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり
Repro Tech Blog
Apple Silicon の時代が来る Repro でサーバーサイドの開発をお手伝いしているうなすけと申します。 2021年10月19日に行われた Apple の新製品発表において、M1 チップを搭載した MacBook Pro が発表されました。この発表により、Intel チップを搭載した MacBook はラインナップから消え、今後は M1 チップ上で開発する機会が増えることは確実です。 ところで、私達の開発環境は M1 に対応しているのでしょうか? 社内の開発メンバーの大半は MacBook を使用しているので、もし対応していない場合、なるべく早く対応させないと新しい社内端末を購入でき…
2年前
記事のアイキャッチ画像
Vertex Pipelines で動く Kubeflow Pipelines のサンプルを公開しました
Repro Tech Blog
Repro AI Labs で Software Engineer として働いている杉山阿聖です。Repro では機械学習の基盤として GCP を用いています。今回は Google I/O 2021 で発表された Vertex AI のサービスのひとつである、機械学習パイプラインの構築・運用を行える Vertex Pipelines で動かせるサンプルを作成したのでその紹介をします。サンプルは次のリンクからお試しください。 reproio/lab_sample_pipelines この記事ではまず、機械学習パイプラインの主な要件について述べます。次に、機械学習パイプラインの構築で用いられる K…
3年前