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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shinichiro OGAWA
March 22, 2019
Technology
5.8k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
talentio をなんとかしようと頑張ってきた18ヶ月の旅路
Shinichiro OGAWA
March 22, 2019
More Decks by Shinichiro OGAWA
See All by Shinichiro OGAWA
どう生きてきたか、どう生きるのか~シニアエンジニアの人生~
ogawa
0
160
talentio.comの裏側の改善と今後の展望〜エンジニアリングとプロダクトと〜
ogawa
0
1.8k
RubyとRailsの勉強のしかたとコミュニティの参加のしかた
ogawa
0
800
everyleaf.rb LT
ogawa
3
490
Git道場 技 本日の課題、 テクニックの解説
ogawa
7
7.6k
jpmobile futures
ogawa
2
320
SubversionからGitへ移行するときの問題について簡単に語る
ogawa
3
4.5k
Other Decks in Technology
See All in Technology
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
20260724 情シスAI #1 「全従業員をAIネイティブにする」ために情シスがやっていること(公開版)
frtckty
0
140
AIエージェントの知識表現と推論に なぜグラフが使われるのか - 記号的AIの復権とニューラルAIとの統合
yohei1126
1
250
NetBoxを利用した作業効率化の試み_NetDevNight4
tnoha
0
420
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
390
オートマトンと字句解析でRoslynを読む
tomokusaba
0
130
AI工学特論: MLOps・継続的評価
asei
11
3.1k
「待ち時間」の消滅と「自我消耗」の加速:生成AI時代のエンジニアを救うメンタル・リソース管理
poropinai1966
0
390
AI時代の強いチームの作り方
yuukiyo
22
12k
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
190
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
340
Power Automateアップデート情報
miyakemito
0
290
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Unsuck your backbone
ammeep
672
58k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
380
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
250
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
650
The agentic SEO stack - context over prompts
schlessera
0
860
From π to Pie charts
rasagy
0
240
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
41k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
Code Review Best Practice
trishagee
74
20k
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 • よくあることは、ほんとうによくある ◦ そういう心構えが重要 •
ダメだと思ったら素早い意思決定が重要 ◦ 迷う時間の無駄 • 小さく始められるところから徐々にやっていく ◦ 一気にやろうとするとつらみが溢れる • 主導者の好みを重視する ◦ モチベーション重要 • 世の中の流れに乗る ◦ ちゃんと追従することにも意義がある