Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
talentio をなんとかしようと頑張ってきた18ヶ月の旅路
Search
Shinichiro OGAWA
March 22, 2019
Technology
6
5.2k
talentio をなんとかしようと頑張ってきた18ヶ月の旅路
Shinichiro OGAWA
March 22, 2019
Tweet
Share
More Decks by Shinichiro OGAWA
See All by Shinichiro OGAWA
どう生きてきたか、どう生きるのか~シニアエンジニアの人生~
ogawa
0
16
talentio.comの裏側の改善と今後の展望〜エンジニアリングとプロダクトと〜
ogawa
0
1.4k
RubyとRailsの勉強のしかたとコミュニティの参加のしかた
ogawa
0
720
everyleaf.rb LT
ogawa
3
410
Git道場 技 本日の課題、 テクニックの解説
ogawa
7
7.3k
jpmobile futures
ogawa
2
240
SubversionからGitへ移行するときの問題について簡単に語る
ogawa
3
4.4k
Other Decks in Technology
See All in Technology
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
290
20241220_S3 tablesの使い方を検証してみた
handy
4
620
C++26 エラー性動作
faithandbrave
2
770
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
490
KubeCon NA 2024 Recap: How to Move from Ingress to Gateway API with Minimal Hassle
ysakotch
0
210
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
170
なぜCodeceptJSを選んだか
goataka
0
160
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Building an army of robots
kneath
302
44k
How GitHub (no longer) Works
holman
311
140k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Fireside Chat
paigeccino
34
3.1k
Speed Design
sergeychernyshev
25
670
Transcript
talentio をなんとかしようと頑張ってきた 18ヶ月の旅路 Rails Developer Meetup 2019 2019/03/22
Agenda Copyright © Talentio 2 • 自己紹介 • talentio とは
• 旅路 • 学びとまとめ
Copyright © Talentio 3 自己紹介 株式会社タレンティオ 取締役 CTO 小川 伸一郎
• 理学(博士) • 理論物理専攻(超低温物理) • 2003年 Web制作会社 • 2008年 株式会社イオレ • 2013年 クックパッド株式会社 • 2016年 レジャリーワークス合同会社 起業 • 2017年 株式会社タレンティオ CTO GitHub: rust Twitter: conceal_rs
Copyright © Talentio 4 自己紹介 • jpmobile developer • Rails
2.3.x 対応から開発を担当 • Tokyu.rb Co-Founder • 東急沿線(乗入含)に住まう Rubyist のためのコミュニティ • 日本全域をほぼ制覇 • 概要:懇親会しかしない勉強会(?) • TokyuRuby会議スタッフ(主に司会) • 飲み会+LT大会 • 次回 2019/06/29 に開催予定 • https://github.com/ruby-no-kai/official/issues/335
Copyright © Talentio 5 自己紹介 • Perl/PHP歴8年ぐらい • jcode.plとかの時代 •
PHP 3.x とかの時代から2007年ぐらいまで • Flash歴5年くらい • Macromediaの時代 • Ruby歴12年ぐらい • Ruby on Rails 1.2.3からの世代 • Emacs歴28年ぐらい • μEmacs(x68k)→xyzzy(Win)→Emacs(Linux/macOS)
Copyright © Talentio 6 talentioとは これまでの 人事の文化・慣習を変える 圧倒的なサービスを テクノロジーを駆使してつくりたい!
talentio.comのこれまでとこれから https://bit.ly/2CmOpFi
この話がためになる人たち Copyright © Talentio 8 • 途中参加のCTOになる予定の方 ◦ またはなりたい方 •
既存システムをなんとかしないといけない方 ◦ またはそうなる気がする人
旅路 Copyright © Talentio 9 入社前 2017/10 2018/01 2018/04 2018/07
2018/10 2019/01 入社直後 決めたこと まずはやり始める ちょっとずつ進める 一歩踏み込む準備 踏み込み開始 踏み込み中
入社前 2017/09 Copyright © Talentio 10 βテストが終わったぐらい
入社前 2017/09 Copyright © Talentio 11 • 2017/09に入社が決まる • 知っていたこと
◦ 過去の経緯を知っている人がいない ▪ よくある話なのであまり気にしてなかった ◦ PHP(Laravel)+ReactのSPA ▪ 最近のPHPを学び直した • Laravelは自由度が高いことを知る • PHPはそこまで変わってなかった
入社前 2017/09 Copyright © Talentio 12 • リポジトリにアクセスできるようになる ◦ アプリのリポジトリを見る
▪ DDDぽい? • DDD感はあるが... ◦ インフラリポジトリを見つける ▪ Ansibleだった • YAMLか... • 若干、不安な気持ちを抱えつつ入社を迎える
入社直後 2017/10 Copyright © Talentio 13 1.0をやった時の気持ち
入社直後 2017/10 Copyright © Talentio 14 • とりあえず環境構築しようとする ◦ ドキュメントはJIRA+Confluence+Trello
• VirtualBoxで構築開始 ◦ Apache + mod_php だったので ◦ そして頓挫 ◦ Ansibleタスクが動かない ▪ どうもパッケージが見つからない? • 社内で相談すると vbox ファイルが共有される ◦ 「これで作ってと言われたんです」と言われる
入社直後 2017/10 Copyright © Talentio 15 • 不安に思ってインフラリポジトリを確認する ◦ どうも現サーバと同じものが作れそうにない
• アプリの仕様を聞く ◦ 「たぶんこうです」みたいなこと言われる ◦ コードを読むが読みにくい ▪ DDDぽさはぽさだけだった(完) • 機能が既存コードのコピペで追加されている形跡を 見つける ◦ さらに似たような関数に大きな差分がある
入社直後 2017/10 Copyright © Talentio 16 • いろいろ考えて全部やり直すことを決意 ◦ 「なぜこう書いたのか」を説明する人がいない
▪ 謎のコピペが生まれる原因になる ◦ 設計思想がない ▪ DDDぽいだけだった... ◦ インフラが古い ▪ 古かった... • そして更新できそうになかった...
決めたこと 2017/10-2017/11 Copyright © Talentio 17 吉Pの気持ちがわかるターン
決めたこと 2017/10-2017/11 Copyright © Talentio 18 • Railsで作り直す ◦ Laravelは悪くはない
▪ 初期設計が異常なほど重要(だと感じた ◦ 複数人で開発するには指針が必要 ◦ なぜRailsか ▪ Railsの思想とエコシステム • MVC / CoC / DRY / RubyGems / etc... ▪ Rubyのコード品質に対する熱意 • みんな大好き Rubocop ▪ 単純にCTOの生産性が一番高い • 気合で乗り切れそう
決めたこと 2017/10-2017/11 Copyright © Talentio 19 • 作り直し方 ◦ 一気に進めない
▪ ビジネスを止めることになるのはNG • 本末転倒 ▪ そもそも人がいない • 一気に進められない ▪ 「ついでにリニューアル」とか言われる可能性 • だいたい失敗する ◦ 段階的に移行する ▪ 特定のAPIとか特定の画面とかだけ移行
決めたこと 2017/10-2017/11 Copyright © Talentio 20 • サービスをフルコンテナ化する ◦ いまどきOSのインストールとか設定とか...
◦ ECSなどの環境が整いつつある ◦ 開発マシンの依存をなくしたい
決めたこと 2017/10-2017/11 Copyright © Talentio 21 • Terraform + itamae
にする ◦ インフラの構成管理をちゃんとしたい ▪ 使ってない subnet とかある ▪ role は荒れ放題 ◦ コード化するしかない ▪ Terraform ◦ YAML で構成とか書きたくない ▪ やっぱ Ruby でしょう • itamae
決めたこと 2017/10-2017/11 Copyright © Talentio 22 • Kibelaを導入して情報共有方法を変更 ◦ Confluenceはとにかく重い
◦ Wikiだけじゃない何かが欲しかった • GitHub issues / Projects を積極的に使うようにする ◦ 結局 Pull Request と連動するので一元化するこ とに
決めたこと 2017/10-2017/11 Copyright © Talentio 23 • 意識したのはあたりまえということ ◦ 「〜するのはあたりまえだよね」と言うことはやる
▪ 世の中の流れに乗る • 無理はしないことも重視した ◦ 無理してもいいことはない ▪ 経験則と周りの話から
まずはやり始める 2017/10-2017/11 Copyright © Talentio 24 1.1xとかの時代
まずはやり始める 2017/10-2017/11 Copyright © Talentio 25 • Rails 化 ◦
まずは rails new ◦ 若干貧弱だった社内向け管理画面を黙々と作る ことに ▪ 利点 • 表示するだけだがモデルを移植していける • 書き込みさえしなければ多少のバグは許さ れる ◦ 社内向けなので
まずはやり始める 2017/10-2017/11 Copyright © Talentio 26 • Docker 化 ◦
ひとまず手元の開発環境から Docker 化すること にした ▪ むしろやらないと開発しにくい... ◦ docker-compose でミドルウェアも起動するよう にした ▪ いちいち MySQL とか起動するの面倒だし ◦ ハマりどころはいろいろあった ▪ が、先人の知恵を拝借してなんとかできた
まずはやり始める 2017/10-2017/11 Copyright © Talentio 27 • Terraform & itamae
導入 ◦ やるしかないのでがんばった... ▪ YAMLの解きほぐし ▪ Terraforming も一部利用 • kuroko2 の導入 ◦ crontab 使ってたのでなんとかしたかった ▪ いろいろ迷ったが Rails 製なので採用 ▪ 困ったときにいろいろ聞きやすかった • 前職のおかげ
ちょっとずつ進める 2017/12-2018/03 Copyright © Talentio 28 新生を作り始める
ちょっとずつ進める 2017/12-2018/03 Copyright © Talentio 29 • 本番サービスの一部 Docker 化
(ECS(EC2)) ◦ デプロイには hako を利用 ▪ ruboty で Slack からデプロイできるようにして いる • 開発中の確認環境も ECS 化 ◦ Terraform / hako YAML(Jsonnet)のコピペで量 産可能になった
ちょっとずつ進める 2017/12-2018/03 Copyright © Talentio 30 • 監視に Prometheus /
Grafana を使う ◦ 自前で何とかする場合はこれかなという気持ちで 導入(費用感も考慮して ▪ node-exporter を動かすようにしておく ▪ あとは CloudWatch からで • これでだいたいなんとかなる • このあたりでエンジニア2名入社 ◦ Docker化しておいたのが功を奏して、初期のとき ほど大変な状態ではなくなる ◦ 「昔は vbox ファイルというのがあってだな...」み たいな老害トークできるほどには簡単になる
一歩踏み込む準備 2018/03-2018/09 Copyright © Talentio 31 1.xx終盤
一歩踏み込む準備 2018/03-2018/09 Copyright © Talentio 32 • このあたりでエンジニア1名入社 • バックエンドの一部をRailsで動かす試み
◦ LaravelのセッションをRailsで読めるようにする ▪ Cookie あれこれは jpmobile で経験済み ▪ セッションデータベースをなんとかする • 中身は PHP オブジェクト ◦ どうするか
一歩踏み込む準備 2018/03-2018/09 Copyright © Talentio 33 • バックエンドの一部をRailsで動かす試み ◦ LaravelのセッションをRailsで読めるようにする
▪ 調べると php-serialize というのがあった • 便利な世の中... ◦ いろいろわかったので勢いで実装 ▪ ある程度は普通に動いた • が、問題はあった
一歩踏み込む準備 2018/03-2018/09 Copyright © Talentio 34 • バックエンドの一部をRailsで動かす試み ◦ JSONが入っている
text カラム ▪ よくあるやつがつらいやつ • 特に PHP だと空の連想配列が [] になる ◦ Rails ではHashにならない... ▪ いろいろやってくれるモジュールを頑張って作る • 微妙に異なるモジュールができあがる ◦ なんとか負債 ◦ まあ、そんなこんなで下準備はできた
一歩踏み込む準備 2018/03-2018/09 Copyright © Talentio 35 • メール配信にSaaS(SendGrid)を使うことにした ◦ メールサーバの管理(特に受信)は非常に面倒
▪ 前々職でいろいろ経験したので、やらないほう がいいことはわかっていた • メールサーバを管理したい人はいないは ず...
一歩踏み込む準備 2018/03-2018/09 Copyright © Talentio 36 • Fargate 活用 ◦
そうこうしている間に Fargate が日本リージョンに やってきた ▪ hako も対応していたので部分的に Fargate 化を進める • 思った以上に簡単に終わる ◦ メンテナンスしなくてもいいのが便利 ▪ 少人数チームだと運用コストが馬鹿にならな いので ◦ 流れに乗らなきゃ...!!
踏み込み開始 2018/10-2019/01 Copyright © Talentio 37 1.xx終盤
踏み込み開始 2018/10-2019/01 Copyright © Talentio 38 • このあたりでエンジニア2名入社 ◦ インフラ担当する人が入ったので色々捗り始める
• 完全 Fargate 化 ◦ サービスで使っているのは全て Fargate になっ た ▪ サーバの面倒見なくていいので運用が楽 • ecs-agent の update とか
踏み込み開始 2018/10-2019/01 Copyright © Talentio 39 • バックエンドに Rails を使い始める
◦ 下準備が功を奏して思ったよりはサッと動いた ▪ 徐々に移行を進める • 新しい機能のAPIは基本的に Rails で • 既存のAPIの改修は既存のままで ▪ 無理しないスタイル • 無理するといろいろほころびが生まれる ◦ 身体的 / 精神的 / etc… • 一部画面を Rails 化 ◦ β版のような感じで進めているところ
踏み込み中 2019/02- Copyright © Talentio 40 2.0に向けて
踏み込み中 2019/02-現在 Copyright © Talentio 41 • このあたりでエンジニア1名入社 • 監視に
DataDog を入れようとする ◦ Prometheus に限界を感じる ▪ exporter 用意するのがまあまあ大変 ▪ Prometheus / Grafana の管理運用もわりと 面倒 • Pull 型だから、そこそこリソースが必要 ◦ そのあたりをうまくやってくれる SaaS として DataDog
踏み込み中 2019/02- Copyright © Talentio 42 • Kubernates に移行を開始する ◦
エコシステムの成長が速く継続性もあるものを使 うのがいいと思う ▪ 世の流れに乗ると言うのもある ◦ とは言えすぐにはしない ▪ 社内でノウハウが溜まったら
学びとまとめ Copyright © Talentio 43
学びとまとめ Copyright © Talentio 44 • よくあることは、ほんとうによくある ◦ そういう心構えが重要 •
ダメだと思ったら素早い意思決定が重要 ◦ 迷う時間の無駄 • 小さく始められるところから徐々にやっていく ◦ 一気にやろうとするとつらみが溢れる • 主導者の好みを重視する ◦ モチベーション重要 • 世の中の流れに乗る ◦ ちゃんと追従することにも意義がある