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.1k
talentio をなんとかしようと頑張ってきた18ヶ月の旅路
Shinichiro OGAWA
March 22, 2019
Tweet
Share
More Decks by Shinichiro OGAWA
See All by Shinichiro OGAWA
どう生きてきたか、どう生きるのか~シニアエンジニアの人生~
ogawa
0
11
talentio.comの裏側の改善と今後の展望〜エンジニアリングとプロダクトと〜
ogawa
0
1.4k
RubyとRailsの勉強のしかたとコミュニティの参加のしかた
ogawa
0
710
everyleaf.rb LT
ogawa
3
400
Git道場 技 本日の課題、 テクニックの解説
ogawa
7
7.3k
jpmobile futures
ogawa
2
230
SubversionからGitへ移行するときの問題について簡単に語る
ogawa
3
4.4k
Other Decks in Technology
See All in Technology
TypeScript、上達の瞬間
sadnessojisan
46
13k
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
220
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
450
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
170
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
630
Engineer Career Talk
lycorp_recruit_jp
0
190
あなたの知らない Function.prototype.toString() の世界
mizdra
PRO
1
160
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
420
Featured
See All Featured
Being A Developer After 40
akosma
87
590k
BBQ
matthewcrist
85
9.3k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
How GitHub (no longer) Works
holman
310
140k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Designing for Performance
lara
604
68k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Adopting Sorbet at Scale
ufuk
73
9.1k
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 • よくあることは、ほんとうによくある ◦ そういう心構えが重要 •
ダメだと思ったら素早い意思決定が重要 ◦ 迷う時間の無駄 • 小さく始められるところから徐々にやっていく ◦ 一気にやろうとするとつらみが溢れる • 主導者の好みを重視する ◦ モチベーション重要 • 世の中の流れに乗る ◦ ちゃんと追従することにも意義がある