タグ

ブックマーク / engineering.mercari.com (21)

  • メルカリ ハロの技術スタックとその選定理由 | メルカリエンジニアリング

    こんにちは。メルカリ ハロのSoftware Engineer (Engineering Head)の@napoliです。連載:Mercari Hallo, world! -メルカリ ハロ 開発の裏側-の2回目を担当させていただきます。 2024年3月上旬にメルカリハロという新しいサービスが公開されました。メルカリ ハロは好きな時間に最短1時間から働ける「空き時間おしごとアプリ」です。 この記事ではメルカリ ハロを作るにあたり、どういった技術スタックやアーキテクチャを選定したのか、さらにその背景と意思決定をご紹介したいと思います。 この記事で得られること メルカリ ハロで採用されている技術スタックやアーキテクチャの全体像 その意思決定の理由とプロセス これから新規サービスを立ち上げるうえでのヒント 主な技術スタック メルカリ ハロで利用されている主な技術スタックは以下のとおりです。 バック

    メルカリ ハロの技術スタックとその選定理由 | メルカリエンジニアリング
    rgfx
    rgfx 2024/05/29
  • Elasticsearchのパフォーマンス問題をプロファイラを使って解決する | メルカリエンジニアリング

    search infra teamのmrkm4ntrです。我々のチームではElasticsearchをKubernetes上で多数運用しています。歴史的経緯によりElasticsearchのクラスタは全てElasticsearchクラスタ専用のnode pool上で動作していました。ElasticsearchのPodは使用するリソースが大きいため、このnode poolのbin packingが難しくコストを最適化できないという問題がありました。そこで全てのElasticsearchクラスタを専用のnode poolから他のワークロードと共存可能なnode poolへ移行しました。ほとんどのクラスタが問題なく移行できたのですが、唯一移行後にlatencyのスパイクが多発してしまうものがありました。 この記事では、その原因を調査する方法と発見した解消方法について説明します。 発生した現象 共

    Elasticsearchのパフォーマンス問題をプロファイラを使って解決する | メルカリエンジニアリング
    rgfx
    rgfx 2024/02/15
  • Vertex AI Matching Engineをつかった類似商品検索APIの開発 | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer の @wakanapo です。 連載:メルカリShops 開発の裏側 Vol.2の8日目を担当させていただきます。 この記事では Vertex AI Matching Engine を使ったメルカリShopsの類似商品検索APIについて、メルカリ写真検索での経験もふまえながら紹介します。 類似商品検索APIはメルカリShopsに出品されている商品に対して、それに似ている商品を返すAPIです。現状これを使った機能でリリースされているものはありませんが、今後レコメンデーションなどに使っていきたいと考えています。 類似ベクトル検索について 類似ベクトル検索とはベクトル空間上で距離の近いものを探すというものです。すべてのベクトルを比較して正確に距離の近いものを探すには非常にコストがかかるので、正確でなくていいのである程度の精度で近いものを

    Vertex AI Matching Engineをつかった類似商品検索APIの開発 | メルカリエンジニアリング
    rgfx
    rgfx 2023/05/30
  • サプライチェーンセキュリティにおける脅威と対策の再評価 | メルカリエンジニアリング

    ブログの主旨 サプライチェーンセキュリティにおいて既存のフレームワークよりも具象化されたモデルを用いて脅威及び対策を精査することで、実際のプロダクトへのより実際的な適用可能性及び課題を検討した。 具象化されたモデルにおいては「脅威の混入箇所と発生箇所が必ずしも一致しない」という前提に立ち、各対策のサプライチェーンセキュリティにおける位置付け及び効力を検討した。とりわけ、ともすれば無思考的に採用しかねないSBOM等の「流行の」対策に対して、その課題や効果の限定性を明らかにした。 これらの脅威分析に基づき、「サプライチェーンの構成要素に存在する多数の開発者それぞれに対して責任を分散して負わせる」形態のパイプラインを置き換えるものとして、「各構成要素に存在する開発者に対して一定の制約を強制する代わりに、サプライチェーンセキュリティに関するオペレーションを一点に担う中央化されたCIパイプライン」

    サプライチェーンセキュリティにおける脅威と対策の再評価 | メルカリエンジニアリング
  • (続)長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2021 の2日目の記事です。 こんにちは。メルペイのBackendエンジニアの 柴田 です。 はじめに この記事は昨年書いた開発用ノートPCを活用して長時間ランニングテストを行うことに関する「長時間ランニングテストの勧め 〜開発用ノートPCの活用〜」の続編になります。そのため、前編となる昨年の記事を読まれているという前提で説明します。 昨年の記事では、Go言語でテストを実行する際に、TZ(タイムゾーン)、GOMAXPROCS、-pオプション、-raceオプションを組み合わせて長時間、何度もテストを実行することで、さまざまな問題を見つけられるということを説明しています。実際に、記事を読まれて実践された開発者はどのくらいおられるでしょうか。 今回は、昨年の記事の修正、この一年間で見つかった問題の紹介、長時間ランニングテストの課題につい

    (続)長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング
    rgfx
    rgfx 2022/09/11
  • 長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の15日目は、メルペイスマート払いの開発を担当しているCredit Designチーム/Backend Engineer の 柴田 がお届けします。 はじめに 私が1984年に社会人になった頃は、ソフトウェア開発を行うためには会社に行くしかありませんでした。当時は、共用のVAXマシンで4.2/4.3 BSD Unixを使って開発していました。その後は、コンピュータハードウェアの発達に伴い、開発者ごとにワークステーションを用いて開発するようになり、デスクトップPCを用いた開発、そして今日のMacBook ProといったノートPCによる開発と時代が変わってきています。 2000年代には、安価で高性能なコンピュータの恩恵により、テスト駆動開発が徐々に広まってきました。そして、継続的インテグレーション(Continuous Integrati

    長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング
    rgfx
    rgfx 2022/09/11
  • メルカリWebのマイクロサービス化、その4年 | メルカリエンジニアリング

    Author: @urahiroshi, Engineering manager of Web Platform team 2022年8月4日、メルカリで “web-2” と呼ばれるサーバがシャットダウンされました。これはメルカリWeb版の開発に携わっているチームにとって、一つの区切りとなる出来事でした。 web-2はPHPで記述されたwebサーバで、2015年から https://www.mercari.com/jp/ 配下のコンテンツを配信していましたが、現在では複数のWebマイクロサービスがその機能を担っており、 https://www.mercari.com/jp/ 配下のページは後継となるWebマイクロサービスが配信するページへリダイレクトされています。 メルカリWebのマイクロサービス化に向けた開発が始まり、最終的にweb-2がシャットダウンされるまで、実に4年以上の期間がかか

    メルカリWebのマイクロサービス化、その4年 | メルカリエンジニアリング
    rgfx
    rgfx 2022/08/30
  • ユニットテストのガイドラインを作成しました | メルカリエンジニアリング

    この記事は Merpay Tech Openness Month 2022 の15日目の記事です。 はじめに こんにちは。Credit Design Teamでバックエンドエンジニアをしている@tanaka0325です。主にメルペイスマート払いの開発をしています。 この記事では、先日私のチームで作成したユニットテストのガイドラインについて紹介します。 課題 現在私が担当している「メルペイスマート払い」のマイクロサービスは、もともと「メルカリ月イチ払い」として提供されていたコードを流用し、新規要件となる機能を追加して作られたマイクロサービスです。 マイクロサービス化するにあたり、「メルカリ月イチ払い」にあったデータはマイクロサービスリリース後に随時マイグレーションをする方針になったので、既存のデータをマイグレーションしつつ、定額払いなどの新規機能を追加してきました。メルペイスマート払いのマイ

    ユニットテストのガイドラインを作成しました | メルカリエンジニアリング
  • マイクロサービスにおけるリコンサイルの話 | メルカリエンジニアリング

    この記事はMerpay Advent Calendar 2021 の23日目の記事です。メルペイPayment Platformチームの @foghost がお送りします。 記事は決済システム開発の観点でリコンサイルを通して防ぎたいリスクについて説明した後、メルペイでリコンサイルについての取り組みについてご紹介します。 リコンサイルとは リコンサイルで検索するとwikipediaではリスク管理の手法の1つと書かれています。人間の様々の活動においてミスが必ず発生するので、リコンサイルはそれら活動の結果が期待通りになっているかどうかを再度確認することで、誤差を検知して様々なリスクを回避することができます。 定義だけ説明してもピンと来ない方が多いかと思いますが、実は普段の生活でも広い意味でのリコンサイルが必要となる場面が多いです。例えば以下の売店で買い物するときの流れを考えてみましょう。 お客

    マイクロサービスにおけるリコンサイルの話 | メルカリエンジニアリング
    rgfx
    rgfx 2021/12/27
  • GitHub上のsensitive dataを削除するための手順と道のり | メルカリエンジニアリング

    Advent Calendar day 7 担当の vvakame です。 予告では Apollo Federation Gateway Node.js実装についてポイント解説 としていましたが、社内各所のご協力によりAdvent Calendarの私の担当日に間に合う形で公開できる運びとなりました。そのため告知とは異なりますが GitHub上のsensitive data削除の手順と道のり をお届けしていきたいと思います。 メルペイVPoE hidekによるday 1の記事で振り返りがあったように、今年、弊社ではCodecovのBash Uploaderに係る情報流出という事案が発生しました。当該インシデント対応において、プレスリリースにも記載のある通り、ソースコード上に混入してしまった認証情報や一部個人情報などの機密性の高い情報(sensitive data)について調査を実施し、対応

    GitHub上のsensitive dataを削除するための手順と道のり | メルカリエンジニアリング
    rgfx
    rgfx 2021/12/07
  • 決済サービスを閉じるときのやることリスト | メルカリエンジニアリング

    Merpay Advent Calendar 2020の20日目は、メルペイProduct EngineeringチームのVP of Engineeringを担当しているnozaqがお送りします。 2020年はメルペイEngineeringチームとして業務しながら、一方で年初からOrigami PayというQRコード決済サービスの提供終了に伴うシステム停止業務を計画・実行してきました。サービスの終わらせ方について詳しく説明されることは中々ないと思ったので、投稿では決済という外部影響が大きい種類のサービスを終了するにあたり、どのような検討がなされたのかを事例としてお伝えできればと思います。 取り組んだこと 決済サービスはお支払いを行う一般のお客さま・お支払いを受け付ける加盟店様・システム連携している金融機関様やパートナー様など多くのステークホルダーが存在します。また店頭でのお支払い方法をご

    決済サービスを閉じるときのやることリスト | メルカリエンジニアリング
    rgfx
    rgfx 2020/12/21
  • INT 32 障害とその BOLD な対策 | メルカリエンジニアリング

    この記事は、 Mercari Bold Challenge Monthの11日目の記事です。 こんにちは。Mercariで、通知に関連するサービスの開発をしているNotificationチームへ所属している @sters です。 通知という広く大きい舞台でのマイクロサービス化を主に進めているチーム、という文脈でも語れることがあるのですが、それはまた別のどこかの機会でお届けします。 今回の記事では、とある日に起きたNotificationチームにも関連するインシデント=障害について、何が起きたのか、何が原因だったのか、実際にどのように対応をしたか、今後どのようにしていくかをご紹介します。 なお、インシデント対応については、少し前の記事でも紹介していますが、現在もここでの通り振り返りなどを行っています。 インシデント発生、一次対応まで とある日の夕方、あるお知らせが見えたり見えなかったりする、

    INT 32 障害とその BOLD な対策 | メルカリエンジニアリング
    rgfx
    rgfx 2019/09/10
  • AppEngineの旧Log APIを脱却したい話 | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの3日目の記事です。 メルペイ ソリューションチームで毎日コード書いたりして遊んでいるvvakameです。 TL;DR AppEngine 2nd genでロックインAPIから解放され大脱出できるようになった AppEngine Log APIはオーパーツ(完全には真似できない) プラットフォーム出力のrequest logを使う アプリではapplication logだけ出力する 高度なフィルターの使い方を覚える 05/23 もらった情報をもとに追記をしました。 AppEngineはいいものだよ & 2nd genの台頭 メルペイではプロダクト提供のためにAppEngineはほぼ使われていません。だいたいのものがGKE上で動いていて、だいたいのDBSpannerです。しかし、お客様に提供するものではない、internalな

    AppEngineの旧Log APIを脱却したい話 | メルカリエンジニアリング
    rgfx
    rgfx 2019/05/22
  • https://engineering.mercari.com/entry/2017/12/18/deadlock

    https://engineering.mercari.com/entry/2017/12/18/deadlock
    rgfx
    rgfx 2017/12/19
  • CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

    日コーポレートサイトでお知らせした通り、Web版のメルカリにおいて一部のお客さまの個人情報が他者から閲覧できる状態になっていたことが判明しました。原因はすでに判明して修正が完了しております。また、個人情報を閲覧された可能性のあるお客さまには、メルカリ事務局より、メルカリ内の個別メッセージにてご連絡させていただきました。 お客さまの大切な個人情報をお預かりしているにも関わらず、このような事態に至り、深くお詫びを申し上げます。 エントリでは技術的観点から詳細をお伝えさせていただきます。 2017年6月27日 CDNのキャッシュの動作について、CDNプロバイダと仕様について確認し検証を行いました。その結果一部記述に実際と異なる箇所があり、加筆修正いたしました。 概要 メルカリWeb版のコンテンツキャッシュをしているCDNのプロバイダ切り替えを行いました。 その際来キャッシュされるべきでない

    CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog
    rgfx
    rgfx 2017/06/23
  • 「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング

    はじめましてこんにちは。SREの@masartzです。 私は最近joinしたのですが、今回は番環境に古くからあるテーブルの掃除作業をした案件をご紹介します。 tl;dr; 番の住所情報テーブルを消したけど問題なかった話 絶対要らないハズだけど、なかなか削除できずにいるもの を対処する話 番環境の住所情報テーブルをdropするまでの作業 今回、番環境の住所情報テーブルをdropしました。 と言っても、事故でもうっかりでもなく、既に使われていなかったものの整理という作業でした。 何故使われていなかったかというのは、メルカリの住所情報の保持の仕方の変遷が関係しています。 初期にはuser情報と住所情報は1対1の関係でした。イメージとしては以下です。 CREATE TABLE IF NOT EXISTS users ( id INT UNSIGNED NOT NULL, name VARC

    「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング
    rgfx
    rgfx 2017/05/26
  • Google I/O 注目のAndroidセッション Day3 | メルカリエンジニアリング

    Androidエンジニアの @mhidaka です。 Google I/O 2017 Day3(最終日)のおすすめAndroidセッションを紹介します。 Day1, Day2と紹介してきましたがDay3ではAndroid技術要素(TensorFlowやKotlinChrome OSなど)を中心に解説します。 Google I/O 注目のAndroidセッション Day1 – Mercari Engineering Blog Google I/O 注目のAndroidセッション Day2 – Mercari Engineering Blog ビデオはYouTubeで公開されているので、気になるセッションがあればぜひ見てください。 Android meets TensorFlow: how to accelerate your app with AI www.youtube.com And

    Google I/O 注目のAndroidセッション Day3 | メルカリエンジニアリング
    rgfx
    rgfx 2017/05/22
  • Google I/O 注目のAndroidセッション Day1 | メルカリエンジニアリング

    Androidエンジニアの @mhidaka です。 今回はGoogle I/O 2017の会場よりおすすめのAndroidセッションを紹介します。 Google I/Oは毎年5月に開催されるGoogleの開発者向けカンファレンスです。 今後の技術動向を示すキーノートや、AndroidやTensorFlow、Webテクノロジ、GCP、Firebaseなど数多くのセッションがあります(総数は150以上!)。 events.google.com セッション数はAndroidだけでも50を超えるので、現地よりおすすめのセッションとちょっとした概要を紹介します。 ビデオはYouTubeで公開されているので、気になるセッションがあればぜひ見てください。 What’s new in Android www.youtube.com What’s new in AndroidではAndroid Oと開発環

    Google I/O 注目のAndroidセッション Day1 | メルカリエンジニアリング
    rgfx
    rgfx 2017/05/19
    ありがてえ
  • プログラマーの三大美徳 その2

    みなさんはプログラマーの三大美徳ってご存知ですか? プログラミング言語Perlの作者である Larry Wall が http://www.perl.com/pub/1998/08/show/onion.html で述べたのが最初とされています。 三大美徳として 怠惰(laziness) 短気(impatience) 傲慢(hubris) があげられています。 怠惰(laziness)については、以前にこちらの記事でお話しました。 tech.mercari.com 今回は 短気(impatience) についてです。 短気(impatience) 優秀なプログラマーが持っている怠惰という美徳は素晴らしいのですが、その反面というか怠惰さゆえに腰が重いときがあります。 そこで短気な面をうまく刺激することでプロジェクトを円滑に進めることが可能です。 メルカリでの例 みなさんもCIにてテストを動か

    プログラマーの三大美徳 その2
    rgfx
    rgfx 2017/03/31
  • 未来のCSSを先取るHoudiniとは?それは魔法である!

    こんにちわ、メルカリアッテでFront-end Developerをしている@t32kです。 メルカリではセミナー参加補助制度があり、それを利用して海外カンファレンスに参加してきました。今回は11/30 ~ 12/01、オーストラリア・メルボルンで開催されたCSS/JSConf Australia 2016に行ってきたので、そのレポートを書きたいと思います。 今回はその中でも、CSSConfでのBarak Chamo氏が講演した内容が非常に興味深かったので紹介します。 Hey presto, CSS! 今日はお話する内容は魔法についてです。どのように自分が定義したCSSをブラウザ上で利用可能にするのかという魔法です。 その前に、魔法ではないこれまでのCSSについて振り返ってみましょう。日には『珍道具』と呼ばれるものがあります。とても素晴らしい技術ですが、ちょっとオーバーエンジニアリングに

    未来のCSSを先取るHoudiniとは?それは魔法である!
    rgfx
    rgfx 2016/12/19