Amazon EMR のバージョンアップ 2/3:メジャーバージョンアップで遭遇した問題

前回の続きです。 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 Trin…

Amazon EMR のバージョンアップ 1/3:メジャーバージョンアップの前にやったこと

Development Division/Platform Team/Sys-Infra Unit で実施した Amazon EMR 1 のバージョンアップについてどのようなことをやったのか紹介します。 Repro では Presto や Hive などのセットアップに EMR を使用しており、以下の用途で活用しています。 プッ…

@hono/zod-openapiで型安全なAPI開発

はじめに こんにちは、Reproで新規事業の開発を行っているエンジニアの兼信です。 今回は @hono/zod-openapi を採用して型安全なAPI開発を行なっている事例をご紹介します。 導入の経緯 私たちが提供する「Repro」は、デジタル領域のマーケターに対し、エン…

Repro Tech Meetup #8 – Deep Dive into Browsers を開催しました

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の開発と運…

作って終わりにしない!チームのビジョンの策定と活用のためにやったこと

はじめに こんにちは、ReproでUI/UXデザイナー組織のマネジメントを担当している多賀です。 今回は私達が取り組んでいたチームビルディング活動のうち、ビジョンの策定とその活用について紹介したいと思います。 ※ここで言うビジョンとは、どんなチームにし…

マルチプロジェクト構成リポジトリにおいて変更の影響を受けるプロジェクトを検出する

どうも、Repro Core Unit に所属している村上です。 Repro では現在、20 を超える Kafka Streams アプリケーションが稼働しています。 その中の半分くらいが Repro システムの共通基盤を構成する Kafka Streams アプリケーションであり、それらの運用は Repr…

AWS Aurora MySQL のメンテナンスの準備・実施・振り返りをチーム横断で行った話

こんにちは、Sys-Infra Unit の小山です。今回は、AWS Aurora MySQL のメンテナンス準備・実施・振り返りまでを複数チーム横断で行った話を紹介します。 背景と課題 Repro では、AWS Aurora MySQL を利用してサービスを提供しています。Aurora MySQL は、MyS…

解約したお客さまにインタビューしてプロダクトの企画に活かすまで

はじめまして、ReproでUI/UXデザイナーを務めている河西と申します。Reproのデザイナーはプロダクト企画を行っているProduct Planning Teamに属し、プロダクトの少し先の未来を描き、中期製品戦略の策定とその浸透および状況にあわせた戦略の改定、顧客から…

PerformanceResourceTiming API で HTTP Cache のヒット率を知る

はじめに こんにちは、Repro Booster という製品の開発責任者/プロダクトマネジメントを担当しているEdward Fox(edwardkenfox)です。 WebサイトやWebアプリケーションの表示速度を考える上では、キャッシュの活用はとても大事なテーマです。一口にキャッ…

Reproにおけるプロダクト企画を担うチームとは?

はじめまして。ReproのProduct Planning Team というチームのマネージャーをしている正木と申します。元々はReproのユーザーでしたが、なんやかんやあってReproに入社しCSを経て現在はPMMを担当しています。 今後、Product Planning Teamからはこれまであま…

Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました

Development Division/Repro Team/Feature 1 Unit の Watsonです。Feature 1 Unit は Repro Tool の機能開発と保守を担っています。 弊社でも利用している Oj gem のパフォーマンス改善 PR を送った話と、その PR の内容について共有します。 ことのはじまり…

Kafka Streams の State Store が tombstone によって遅くなってしまったので RocksDB のパラメータを調整してみた話

Platform Team の Repro Core という Unit に所属している村上と申します。 Repro Core の役割の 1 つとして、共通基盤となる Kafka Streams アプリケーションの運用があります。 この共通基盤は Repro の大量トラフィックを捌いている基盤になるため、日々…

SSHログインの失敗が大量に記録されているとSSHログインが極端に遅くなる

Development Division/Platform Team/Sys-Infra Unitの伊豆です。Sys-Infra Unitはインフラエンジニア・SRE 的な役割を担っています。 今回は、ある日突然SSHログインが遅くなったときに調査した内容を共有します。 SSHログインに数分かかる ある日、AWS EC2…

プロダクトマネージャーと画家

はじめに こんにちは、Repro Booster という製品の開発責任者/プロダクトマネジメントを担当しているEdward Fox(edwardkenfox)です。 前回の記事「ServiceWorkerの落とし穴8選」では ServiceWorker という技術に的を絞ったテクニカルなトピックを扱いまし…

「大掃除」から「定常的なタスク消化」へ、Repro Sys-infra Unitの取り組み

健全性を保つための活動とそれを評価するために行ったことを説明します。 この活動は Repro 全体の話ではなく Development Division/Platform Team/Sys-Infra Unit が行なったものです。 Sys-Infra Unit は Repro のサービス全般のインフラ管理と一部のアプ…

SCRIPT 要素の変遷から触れる Web の進化

はじめに こんにちは。Repro で Booster の開発をしている杉浦と申します。 最近は JavaScript の盛り上がりが凄いですね。今ではブラウザ内にとどまらず、サーバサイドでも活用される様になりました。 これには、言語仕様が整理されたり機能が強化されたり…

pt-online-schema-change の実行が必要かどうか判断するタイミングをより早くした話

Repro では Aurora MySQL を使用しています。いくつか数千万行を越えるデータを持つ大規模なテーブルもあります。 大規模なテーブルのスキーマを変更するときは pt-online-schema-change1 を使用していますが、今回はその必要性を判断するタイミングを早めた…

続・何でも屋になっている SRE 的なチームから責務を分離するまでの道のり 〜新設チームでオンコール体制を構築するまで〜

こんにちは、Platform Team というチームでマネージャーをしている荒引 (@a_bicky) です。 Platform Team は、データエンジニア・アーキテクト的な役割を担う Repro Core Unit と、インフラエンジニア・SRE 的な役割を担う Sys-Infra Unit から成るチームで…

Repro Booster事業部におけるLookerを使ったデータ活用の取り組み

Reproで開発を担当しているRyoma Shindo です。前回の記事「ServiceWorkerの落とし穴」で紹介のあったRepro Boosterの開発と運用に携わっています。 私達のチームでは少し前からLookerを使ったデータ活用を強化しています。その取り組みを通して定型業務の効…

ServiceWorkerの落とし穴8選

はじめに Reproで開発を担当しているEdward Fox (edwardkenfox) です。2021年頃から Repro Booster というプロダクトの立ち上げに携わっており、開発を通して得た知見を共有できればと思い立ち筆を取るに至りました。4年ぶりのテックブログ執筆で少しばかり…

モノリシックなRailsアプリケーションで、APIのエンドポイント毎にSLOを設定する

こんにちは、@r_takaishiです。今回は、モノリシックなRailsアプリケーションが提供するAPIについてエンドポイント毎にSLOを設定できるようにしたので紹介します。 解決したい問題 ReproではRailsアプリケーションが様々なAPIを提供しています。このとき、AP…

サービス毎に作られていたデプロイ用のSlackBotなどを統合し、利用しやすくしました

こんにちは、@r_takaishi です。今回は、筆者が所属しているシステム基盤チームで行ったデプロイパイプラインの改善について紹介します。 背景と課題 Reproでは多数のサービスをECS上で動かしており、それらのサービスは複数の言語・リポジトリで構成されて…

Terraformのplan結果をmarkdownとして整形するツール、terraform-j2mdの紹介

こんにちは、@r_takaishi です。最近のおすすめYouTubeチャンネルは Namibia: Live stream in the Namib Desert です。今回は、Terraformのplan結果をmarkdownで整形するツールである reproio/terraform-j2md について紹介します。 どのようなツールなのか …

Kafka Brokerのcompaction動作の詳細とチューニング方法について

Reproでチーフアーキテクトとして働いているid:joker1007です。 今回、Kafka Brokerのcompaction動作について調査しチューニングすることでパフォーマンス改善の成果が得られたため、そのノウハウをブログにまとめておきました。 かなりマニアックな内容なの…

Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり(再始動編)

こんにちは、@r_takaishi です。近所にスパイスカレーのお店ができてハッピーです。今回は、Reproのサーバーサイド開発環境におけるM1 Mac対応を改めて行ったので、やったことを紹介します。 なお、これまでの経緯は以下の通りです。 前回 Repro のサーバー…

Papertrailに送っているログの流量をDatadogで監視する

こんにちは、Site Reliability Engineerの @r_takaishi です。Reproではログの管理や検索に Papertrail を使っています。今回、Papertrailに送られるログの流量をDatadogで監視し、流量の増加に気づくための仕組みを整えたので紹介します。 課題 Reproでは様…

Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり(撤退編)

記事執筆中に動かなくなった開発環境 Repro でサーバーサイドの開発をお手伝いしているうなすけと申します。 前回の記事を最後の脚注まで読んでくださった方はご存知でしょうが、記事執筆中にmergeされた変更によって、M1 Mac での開発環境は動かなくなって…

Repro のサーバーサイド開発環境を M1 Mac に対応させるまでの道のり

Apple Silicon の時代が来る Repro でサーバーサイドの開発をお手伝いしているうなすけと申します。 2021年10月19日に行われた Apple の新製品発表において、M1 チップを搭載した MacBook Pro が発表されました。この発表により、Intel チップを搭載した Mac…

Vertex Pipelines で動く Kubeflow Pipelines のサンプルを公開しました

Repro AI Labs で Software Engineer として働いている杉山阿聖です。Repro では機械学習の基盤として GCP を用いています。今回は Google I/O 2021 で発表された Vertex AI のサービスのひとつである、機械学習パイプラインの構築・運用を行える Vertex Pip…

軽量な Go 製カラムナフォーマット変換ツール columnify を作った話

こんにちは。業務委託として SRE チームのお手伝いをしている @syucream です。 本記事では Repro にて開発した、 Go 製のカラムナフォーマットへのデータ変換ツール columnify について、開発背景や技術的な取り組みを紹介します。 なぜカラムナフォーマッ…