Slide 1

Slide 1 text

STORES.jp 開発組織の軌跡 Rails Developers Meetup 2018 Day4 2018.12.08 - Takeshi Yabe (@tyabe)

Slide 2

Slide 2 text

お話しすることの確認 STORES.jpは2012年のサービス開始から事業として 様々なチャレンジを続け、組織としても変化し続けて きました。 本セッションではその歴史をふり返りながら、開発組 織としてどのような問題に直面し解決を試みてきた のかをお話しします。

Slide 3

Slide 3 text

前提

Slide 4

Slide 4 text

STORES.jp(サービス)とは

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

どんな会社?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

STORES.jpリリース後の社員数の変動 ※正社員のみ

Slide 9

Slide 9 text

なんとなくフェーズを分けると 2012 - 2013 : 0 -> 1フェーズ 2013 - 2014 : イケイケフェーズ 2015 - 2016 : 混沌フェーズ 2016 - 2017 : 独立第2フェーズ 2018 - : ギアチェンジフェーズ

Slide 10

Slide 10 text

2012 - 2013 0 -> 1フェーズ

Slide 11

Slide 11 text

会社の状況 - とにかく早くユーザへ価値を届けることに注力 STORES.jpエンジニアチームの体制 - 1名 -> 3名 システム構成 - AngularJS + Rails + MongoDB - Postfix - 本体の他に決済システムと画像配信システムを運用 - サービス開始時はVPSだったが拡張性を求めAWSへ移行 2012 - 2013 0 -> 1フェーズ

Slide 12

Slide 12 text

2012 - 2013 0 -> 1フェーズ STORES.jpエンジニアチームの状況 - 1つの機能をすべて1人が担当 - 思いついたアイデアを即時実装、即リリース - とにかく様々な手を打っていた - master直push -> git-flow(チック) - コードレビューほぼなし.. テストなし... - サーバ台数が増えデプロイツールにminaを導入 - SPAだったのでPhantomJSを利用してSSR

Slide 13

Slide 13 text

2013 - 2014 イケイケフェーズ

Slide 14

Slide 14 text

会社の状況 - STORES.jp PRO担当とZOZOフリマ担当が発足 STORES.jpエンジニアチームの体制 - 3名 -> 9名 -> 3名 2013 - 2014 イケイケフェーズ

Slide 15

Slide 15 text

STORES.jpエンジニアチームの状況 - 外部サービスとの提携強化 - コードレビューの実施とテストコードが追加され始める - 開発ドキュメントが残されるようになる(Google Docs) - 問いあわせ対応のタスク管理にRedmineを利用 - 利用者が増え色々な問題が表面化し始める.. システム構成の変化 - 大きくは変わらず - Postfix -> Sendgrid - CircleCI導入 2013 - 2014 イケイケフェーズ

Slide 16

Slide 16 text

2015 - 2016 混沌フェーズ

Slide 17

Slide 17 text

会社の状況 - ZOZOフリマに注力していた時期 STORES.jpエンジニアチームの体制 - 3名 -> 4名 システム構成の変化 - デプロイツールをminaからCapistranoへ - 例外情報の収集にErrbitを導入 - Qiita:Team導入 - 開発タスクはすべてGithub Issuesへ 2015 - 2016 混沌フェーズ

Slide 18

Slide 18 text

STORES.jpエンジニアチームの状況 - リニューアルプロジェクトを2回に分けて実施 - ブランチ運用のルール化(git-flowへ) - チャットbotによるレビュアー自動アサイン - 朝会/夕会、週1回のふりかえりを実施 2015 - 2016 混沌フェーズ

Slide 19

Slide 19 text

2015 - 2016 混沌フェーズ https://careerhack.en-japan.com/report/detail/650

Slide 20

Slide 20 text

リニューアルでどうしても解決したかった課題 - SPA - PhantomJSでSSR - 構成上の問題でbotが押し寄せてくると死ぬ - PhantomJSの突然死 - コア吐く -> ディスク埋まる -> 死ぬ リニューアルのついでに素直にRailsでレンダリングするように改 修し、穏やかな日常を手に入れた 2015 - 2016 混沌フェーズ

Slide 21

Slide 21 text

会社の状況 - フリマチームが大忙し - STORESのオペレーションチームが2名に STORES.jpエンジニアチームの体制 - リーダーに就任 STORES.jpエンジニアチームの状況 - オペレーション業務を効率化させるための開発に注力 - リモートワークの実験的導入 2015 - 2016 混沌フェーズ

Slide 22

Slide 22 text

2015 - 2016 混沌フェーズ

Slide 23

Slide 23 text

2016 - 2017 独立第2フェーズ

Slide 24

Slide 24 text

会社の状況 - 初期の開発メンバーが社内にいなくなった STORES.jpエンジニアチームの体制 - 4名 -> 6名 - CTO就任(2017年4月) 2016 - 2017 独立第2フェーズ

Slide 25

Slide 25 text

2016 - 2017 独立第2フェーズ

Slide 26

Slide 26 text

STORES.jpエンジニアチームの状況 - 外部連携系サービスのクローズ - 決済アプリ ”STORES.jp Payment” リリース - 使われなくなったコードを一掃 - チームとして動く体制へ - プロジェクト制、正/副担当制、ペアプロ システム構成の変化 - Elasticsearchの運用をElasticCloudへ - 画像配信サービスの運用をImageFluxへ 2016 - 2017 独立第2フェーズ

Slide 27

Slide 27 text

2018 - ギアチェンジフェーズ

Slide 28

Slide 28 text

会社の状況 - 社名変更 & 組織拡大 - “だれになにを提供するのか”を再定義 - “自分のブランドのコミュニティがある人に、楽しく続けられ るしくみをつくる” - heyグループとして情報共有を強化 - 1つのオフィスにお引っ越し - Slack共通化 - 毎月末にグループ全体でレビュー会を実施 - 福利厚生等々も両社のいいとこ取りして共通化 - フレックス制導入 2018 - ギアチェンジフェーズ

Slide 29

Slide 29 text

STORES.jpエンジニアチームの体制 - 4名 -> 16名 (※現在も積極採用中!!!) STORES.jpエンジニアチームの状況 - 目的別のチーム体制(3~4名) - 採用に全員何かしらで関わる(面談/面接/hello hey) システム構成の変化 - AngularJS -> Vue.js - MongoDBの運用をMongoDB Atlasへ - データ構造の見直し - データ分析基盤の構築 2018 - ギアチェンジフェーズ

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

おわりに

Slide 33

Slide 33 text

1. 会社の状況や体制が変化しても、 なぜやるのか (ビジネス的な背景や目的の説明)を明確にし、楽 しみながら事業もチームも成長を続けていた 2. どうやるのかはエンジニアチームの責任で、個人 に与えられる裁量も大きい 3. 今後は、組織とサービスが大きなっても上記を保 ち続けることが課題 おわりに

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

https://hey.jp/events/hello-hey/