Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

AltConf 2017に登壇します!

こんにちは、iOSエンジニアの@kitasukeです。6/5-8にサンノゼで開催されるAltConf 2017に、弊社から自分が登壇します。

AltConfとは

AltConfとは、WWDCのチケットの抽選に外れてしまったエンジニア達が有志で開催しているカンファレンスです。WWDCと同じ期間に並行して近くの会場で開催されます。WWDCに外れてもAltConfのために来るiOSエンジニアも居るほどで、参加者の数は1000人弱と大規模なカンファレンスです。今年はWWDCがサンノゼで開催されるので、AltConfも合わせてサンノゼで開催されます。

altconf.com

続きを読む

Google I/O 2017 わいわい報告会を開催しました #io17jp

こんにちは、Software Engineerの @yui_tang です。

先日5月26日(金)に、メルカリ社内においてGoogle I/O 2017 わいわい報告会 @ Mercariを開催しました。

弊社からGoogle I/O 2017に参加したメンバーが、それぞれの分野について内容をまとめて発表しました。

今回は、その内容をご紹介します。

connpass.com

続きを読む

「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話

はじめましてこんにちは。SREの@masartzです。

私は最近joinしたのですが、今回は本番環境に古くからあるテーブルの掃除作業をした案件をご紹介します。

tl;dr;

  • 本番の住所情報テーブルを消したけど問題なかった話
  • 絶対要らないハズだけど、なかなか削除できずにいるもの を対処する話

本番環境の住所情報テーブルをdropするまでの作業

今回、本番環境の住所情報テーブルをdropしました。 と言っても、事故でもうっかりでもなく、既に使われていなかったものの整理という作業でした。

何故使われていなかったかというのは、メルカリの住所情報の保持の仕方の変遷が関係しています。 初期にはuser情報と住所情報は1対1の関係でした。イメージとしては以下です。

CREATE TABLE IF NOT EXISTS users (
  id    INT UNSIGNED NOT NULL,
  name  VARCHAR(255) NOT NULL,
  ..(略)..
CREATE TABLE IF NOT EXISTS users_address (
  user_id  INT UNSIGNED NOT NULL,
  zipcode  VARCHAR(255) NOT NULL,
  ..(略)..
  PRIMARY KEY (user_id)
  ..(略)..

この設計でサービス運用をしていましたが、あるとき機能追加の要件が発生します。 配送先住所を複数登録するというものでした。

この機能を実現するために、user情報と1対多の関係にある新たな住所情報テーブルが必要になりました。 以下のようなイメージです。

CREATE TABLE IF NOT EXISTS users_addresses (
  id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id     INT UNSIGNED NOT NULL,
  is_default  ENUM('yes', 'no') NOT NULL DEFAULT 'no',
  zipcode     VARCHAR(255) NOT NULL,

  ..(略)..
  PRIMARY KEY (id)
  ..(略)..

かくして新テーブルが作成され、旧住所テーブルのデータも新テーブルに移行されました。 めでたしめでたし、、というだけでは終わりませんでした。

続きを読む