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
6年かけてこうなった!我々の開発環境の変遷と現在 / phpconokinawa2019
Search
blue_goheimochi
October 12, 2019
Technology
1
1k
6年かけてこうなった!我々の開発環境の変遷と現在 / phpconokinawa2019
PHPカンファレンス沖縄2019の登壇資料です。
https://phpcon.okinawa.jp/
blue_goheimochi
October 12, 2019
Tweet
Share
More Decks by blue_goheimochi
See All by blue_goheimochi
コミュニケーションを「パス」のやりとりと捉え大切にしていること / dai-kichijojipm-2024
blue_goheimochi
2
2.5k
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
4
1.1k
芝生の障害対応・メンテナンスについて語る / ya8-2024
blue_goheimochi
1
44
「わたしたちのコード」を安定させるためにフレームワークとの距離を保つ / phperkaigi2024
blue_goheimochi
5
1.8k
コードを計測することで捉える問題点 / phpcondo2024
blue_goheimochi
4
1k
Laravelのコードとわたしたちのコードとの距離を保つ / phpcon2023
blue_goheimochi
1
1.9k
リンケージにおけるアプリケーションコードとの付き合い方とそれを支えるコミュニケーション / drobe_pixiv_linkage-20230905
blue_goheimochi
1
510
推測しないで、計測し、判断する! 〜カイゼンのためのステップ考察〜 / phpconfuk2023
blue_goheimochi
3
2k
iOS, iPadOSにもWeb Pushがきたのでさわってみた
blue_goheimochi
1
430
Other Decks in Technology
See All in Technology
トークナイザー入門
payanotty
2
340
【ログ分析勉強会#5】Elasticsearch/Kibana のパイプ型クエリー言語ES|QLの紹介 ~ Pandasと一緒にログ分析してみた
nobuhikosekiya
0
160
XP matsuri 2024 - 銀河英雄伝説に学ぶ
kawaguti
PRO
3
490
AWSへのNIST SP800-171管理策 導入に向けての整備/20240930 Mitsutoshi Matsuo
shift_evolve
0
140
エンジニアは伝え方が9割/90% of what engineers need is communication skills
ykanoh
2
150
ORM と向き合う
hoto17296
7
5.9k
GitHub Actions/Docker/Terraform/Renovate で最小限の Monorepo CD パイプラインを作る / Minimalistic Monorepo CD Pipeline with GitHub Actions, Docker, Terraform and Renovate
yuyatakeyama
4
340
いまからでも遅くない! コンテナでWebアプリケーションを 動かしてみよう(2-1)WebAPI座学
nomu
0
140
Rubyはなぜ「たのしい」のか? / Why is Ruby a programmers' best friend? #tqrk15
expajp
4
1.7k
普通の Web エンジニアのための様相論理入門 #yapcjapan / YAPC Hakodate 2024
ytaka23
1
170
リスクから学ぶKubernetesコンテナセキュリティ/k8s-risk-and-security
mochizuki875
1
260
【shownet.conf_】ShowNet伝送改めShowNet APN 2024
shownet
PRO
0
310
Featured
See All Featured
Gamification - CAS2011
davidbonilla
80
5k
We Have a Design System, Now What?
morganepeng
49
7.1k
Clear Off the Table
cherdarchuk
91
320k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.7k
Testing 201, or: Great Expectations
jmmastey
38
7k
Building Your Own Lightsaber
phodgson
102
6k
Adopting Sorbet at Scale
ufuk
73
8.9k
Speed Design
sergeychernyshev
22
460
YesSQL, Process and Tooling at Scale
rocio
167
14k
Music & Morning Musume
bryan
46
6.1k
Transcript
#phpconokinawa #track_b 6年かけてこうなった︕ 我々の開発環境の変遷と現在 PHPカンファレンス沖縄2019 2019.10.12 株式会社オウケイウェイヴ ⼤橋 佑太
2 blue_goheimochi ⼤橋 佑太 株式会社オウケイウェイヴ PHP(Laravel),Javascript(Vue.js/Nuxt.js), Laravel JP Conference 2020,
PHPerKaigi 2020 … おおはし ゆうた 2013年5⽉〜
3 オウケイウェイヴの事業 ミッション︓ 互い助け合いの 場の創造を通して、 物⼼両⾯の幸福を実現し、 世界の発展に寄与する 多⾔語コールセンター 運営および インバウンドサービス
エンタープライズ ソリューション事業部 コンシューマー ソリューション事業部 多⾔語CRM事業 (株式会社BRICKS) 法⼈向け ソリューションの 製造/販売 Q&Aサイト 「OKWAVE」の 運営および広告事業
4 Q&Aサイト「OKWAVE」
5 Q&Aサイト「OKWAVE」 質問者と回答者がやりとりして疑問を解決
6 Q&Aサイト「OKWAVE」 PCサイト SPサイト ガラケーサイト OEMサイト1 OEMサイト2 アプリ(iPhone) アプリ(Android) 内部API
データベース 管理画⾯⽤ 内部API 新バッチ バッチ 旧バッチ 管理画⾯ PCサイト SPサイト ガラケーサイト WebAPI Cache Cache ※2013年当時
7 Q&Aサイト「OKWAVE」 PCサイト SPサイト ガラケーサイト OEMサイト1 OEMサイト2 アプリ(iPhone) アプリ(Android) 内部API
データベース 管理画⾯⽤ 内部API 新バッチ バッチ 旧バッチ 管理画⾯ PCサイト SPサイト ガラケーサイト WebAPI Cache Cache 本体サイト OEMサイト アプリ等 WebAPI 内部API 管理画⾯ バッチ ※2013年当時
8 Q&Aサイト「OKWAVE」 PCサイト SPサイト ガラケーサイト OEMサイト1 OEMサイト2 アプリ(iPhone) アプリ(Android) 内部API
データベース 管理画⾯⽤ 内部API 管理画⾯ PCサイト SPサイト ガラケーサイト WebAPI Cache Cache 新バッチ バッチ 旧バッチ ※2013年当時
9 というような環境における開発環境の 変遷についてお話ししていきます 開発環境構築ツールの良し悪し話はしません
10 ︖ ︖ 我々の開発環境の変遷 ⼤きく分けると4つの時代に分かれる 2013 2019 2016 2014 2015
2017 2018 ︖ ︖
11 XAMPP期
12 XAMPP期 当時の状況 • 私⾃⾝は2013年5⽉に⼊社 • 「OKWAVE」は2000年1⽉から正式運⽤開始 • 2005年に「OKWeb」から改名 •
13年超の歴史あるサービスにJOIN • 開発機はWindows
13 Double XAMPP
14 XAMPP期 当時の状況 • 私⾃⾝は2013年5⽉に⼊社 • 「OKWAVE」は2000年1⽉から正式運⽤開始 • 2005年に「OKWeb」から改名 •
13年超の歴史あるサービスにJOIN • 開発機はWindows • Dobule XAMPP・・・︖ • プロダクトのPHPのバージョンが2系統(お察しください) • ということで2つのバージョンのXAMPPが共存して存在
15 XAMPP期 当時まだスレてなかったわたし なるほど︕OKWAVEはこのような 開発環境なんですね︕ がんばります︕タスクください︕
16 XAMPP期 問題点 • XAMPPを切り替える場合、⽚⽅を停⽌し、Apacheなどの設定ファイルも⼿ 動で切り替えたり編集する必要があった • 5系のアプリケーションはマイナーバージョン関係なく5系のXAMPPで • XAMPP⾃体のインストールがつらい
• バージョン固定なので、社内のファイルサーバのXAMPPのzipを利⽤ • 環境構築だけで1⽇以上かかる • バッチのローカル開発環境は存在しなかった • などなど。。。
17 我々の開発環境の変遷 XAMPP期から・・・ ︖ 2013 2019 2016 2014 2015 2017
2018
18 Vagrant期 (with VirtualBox)
19 Vagrant期 当時の状況 • Double XAMPPの環境が⾟いことに気付きだす • 環境構築が⼿動もつらい・・・ • 当時Infrastructure
as Codeがだいぶ流⾏ってきていた • ローカル環境構築をまず⾃動化したいお気持ちがムクムク • 少なからずPHPのバージョンアップをしているのでローカルに必要な環境も 増える • Vagrant + VirtualBoxの環境を構築︕
20 Vagrant期 なにが良くなった︖︖ • 環境構築の⾃動化が進んだ︕ • Vagrant + VirtualBox +
Chef • Boxファイルを配布することで、初回の環境構築の簡略化 • かなり初期の環境構築が楽になった • 複数環境の同時起動ができるようになった • 別々の仮想環境を⽴ち上げるかたち • 1つの仮想環境の中に詰め込めば︖という話はあるのですが・・・
21 Multi Vagrant
22 Vagrant期 問題点 ローカルマシン 管理画⾯⽤ 内部API⽤ PCサイト⽤
23 Vagrant期 問題点 • 複数環境⽴ち上げた場合のPCのリソース消費がつらい・・・ • 基本的にそれぞれのプロダクトやアプリケーションの担当者が仮想環境 を構築していた • 複数のBoxファイル、Boxファイル化してないアプリケーションも
• OSやパッケージのアップデートなどでプロビジョニングのタイ ミングでエラーになってしまったり • Chef vs Ansibleなど構築ツールも実は様々・・・ • ということで1つの仮想環境にまとめられていなかった
24 Vagrant期 問題点 • 仮想環境の起動が遅い • vagrant up したあとまぁまぁ時間がかかる(環境が複数ありますし) •
⾃動化しきれていない部分がまだまだあった • XAMPPの環境は捨てきれていない・・・・・・・・ • チーム全体で動けていたわけではなかった • 全社で利⽤していたウイルス対策ソフトの相性問題 • 最新のVirtualBoxが利⽤できなかった • などなど。。。
25 我々の開発環境の変遷 Vagrant期から・・・ ︖ 2013 2019 2016 2014 2015 2017
2018
26 第1次 Docker期 (Docker in VirtualBox)
27 第1次 Docker期 当時の状況 • ちゃんとチームで開発環境問題を解決しよう︕という流れになってきた • それでも最初は数⼈の有志メンバーで喧々諤々 • 使うツールも(なるべく)揃えよう︕
• Dockerがよいのでは︖ • この辺は⼿段が⽬的化していたかもしれない。やりたかった。 • VirtualBoxの中にDocker環境を構築︕ • Packerを利⽤して、既存の資産(ChefやAnsible)を⽣かしながらDockerイ メージを作成
28 第1次 Docker期 なにが良くなった︖︖ Private Docker Registry ローカルマシン(Win7)
29 第1次 Docker期 なにが良くなった︖︖ • Dockerを使うことで開発環境が1つでOKになった • Vagrantでたてた仮想環境上にDockerをインストール • docker-compose
up -d するだけで環境構築が完了するようになった • コンテナ数は多いですが、⼀気にコンテナを起動し、依存のあるサービ スが⼀度に⽴ち上がる • 残っていた古いPHPのXAMPPの環境もコンテナイメージ化 • Dockerが使えてウキウキ︕ • (全てのコンテナをそろえるのに半年くらいはかかってしまった)
30 だいぶ整ったのでは︖
31 第1次 Docker期 問題点 • ファイル読み込みが重い • Vagrantの共有フォルダ → コンテナイメージがマウント
• Dockerの環境を使ってくれていないチームメンバーが・・・ • 半年後に発覚。たしかに、環境構築をし直すのが⾯倒なのは分かる・・ • 古いコンテナのビルドが通らなくなる • CentOS5のコンテナ・・・・yumが・・・・・ • とりあえず作っておいて助かったがメンテナンスはきつい • などなど。。。
32 第1次 Docker期 問題点 • ファイル読み込みが重い • Vagrantの共有フォルダ → コンテナイメージがマウント
• Dockerの環境を使ってくれていないチームメンバーが・・・ • 半年後に発覚。たしかに、環境構築をし直すのが⾯倒なのは分かる・・ • 古いコンテナのビルドが通らなくなる • CentOS5のコンテナ・・・・yumが・・・・・ • とりあえず作っておいて助かったがメンテナンスはきつい • などなど。。。
33 第1次 Docker期 問題点 • ファイル読み込みが重い • Vagrantの共有フォルダ → コンテナイメージがマウント
• Dockerの環境を使ってくれていないチームメンバーが・・・ • たしかに、環境構築をし直すのが⾯倒なのは分かる・・・・ • 古いコンテナのビルドが通らなくなる • CentOS5のコンテナ・・・・yumが・・・・・ • とりあえず作っておいて助かったがメンテナンスはきつい • などなど。。。 https://speakerdeck.com/blue_goheimochi/phpconsen2019
34 第1次 Docker期 問題点 • ファイル読み込みが重い • Vagrantの共有フォルダ → コンテナイメージがマウント
• Dockerの環境を使ってくれていないチームメンバーが・・・ • たしかに、環境構築をし直すのが⾯倒なのは分かる・・・・ • 古いコンテナのビルドが通らなくなる • CentOS5のコンテナ・・・・yumが・・・・・ • とりあえず作っておいて助かったがメンテナンスはきつい • などなど。。。 https://speakerdeck.com/blue_goheimochi/phpconsen2019 フルリプレイスがほぼほぼ完了しています︕ (どこかで報告できたらいいな)
35 ︖ 我々の開発環境の変遷 第1次 Docker期から・・・ 2013 2019 2016 2014 2015
2017 2018
36 第2次 Docker期
37 第2次 Docker期 当時の状況 • Windows・・・つらくない︖ • (≒Docker in VirtualBox・・・つらくない︖)
• みんな・・・たのむ・・・開発環境移⾏してくれ・・・・ • よし、みんな、開発環境をMacに移⾏だ︕ • 端末の交換時期とも重なり、メンバー全員のローカルマシンが Mac Book Proにリプレイス
38 第2次 Docker期 なにが良くなった︖︖ Private Docker Registry ローカルマシン(MacBook Pro) Docker
for Mac
39 第2次 Docker期 なにが良くなった︖︖ • メンバー全員がMacになりDocker for Macが利⽤可能に • 体感的にはとても速くなった(遅いという話も聞きますが・・)
• リモートワーク推奨などの流れもあり、徐々に変えていっている過程 • 強制的に全員が環境構築を再度できた • 少しずつメンバーがコンテナを作ったり修正してくれるような感じに︕ • この辺は本当に継続は⼒なりだなぁ・・と • でもまだまだ全員に触ってもらえているわけではない • この辺りは技術的な課題というよりもチームビルディングに課題感が
40 我々の開発環境の変遷 第2次 Docker期・・・完・・・ 2013 2019 2016 2014 2015 2017
2018
41 我々の開発環境の変遷 • XAMPP期 • Vagrant期 • 第1次 Docker期 •
第2次 Docker期
42 我々の開発環境の変遷 • XAMPP期 • Vagrant期 • 第1次 Docker期 •
第2次 Docker期 • 第3次 Docker期︖︖︖
43 第3次 Docker期︖︖︖ 現在の状況 • よりチームメンバーにコンテナを触ってもらいたい︕ • 徐々に機会を増やすようにする • Packer経由でAnsibleなどで構築しているコンテナをDockerfileベース
に直していくというようなことを進めています • それ以外にあまり問題点は感じていない • たださらなるステップアップとしてできそうなことはある • 本番環境でのコンテナ運⽤︕ • これができれば本番環境とローカル環境とほぼほぼ同じにできる
44 まさに、現在 チャレンジ中です
45 第3次 Docker期︖︖︖ チャレンジ • クラウド化の実現 • アプリケーションの刷新 • フロントエンド︓
Nuxt.js • バックエンド︓Laravel • 本番環境でのコンテナ運⽤ • インフラチーム(SREチームを新設)とのさらなる連携 • の第1弾を 2019年9⽉にリリース しました︕ • 継続してよりよい環境になるよう頑張っています︕
46 我々の開発環境の変遷 • XAMPP期 • Vagrant期 • 第1次 Docker期 •
第2次 Docker期 • 第3次 Docker期 ← Now
47 最後に ⼀番伝えたかったこと
48 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now ここまでくるのにほぼ6年半
49 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now 速いと思いますか︖ 遅いと思いますか︖
50 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now https://www.slideshare.net/ohashiyuta/5docker 個⼈的にDockerを触り始めたのは2014年
51 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now 実践したいができずに ⻭がゆい気持ちはあった
52 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now あそこの会社ではやってるのに・・・
53 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now ただ振り返ってみるとこう思います
54 「変化」を起こすためには 「時間」は必要
55 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now チームの体制や状況に⼤きく関係するが そのチームでできる最速が「最速」である
56 我々の開発環境の変遷 第3次 Docker期 ← いまここ 2013 2019 2016 2014
2015 2017 2018 Now 常に情報をキャッチアップし準備し 然るべきタイミングで⼒を注ぎ込む
57 この約6年半の チームの取り組みを 我々は誇りに思っています
58 We are hiring !
59 Tech Stack
60 ΦέΠΣΠϰͷ੍ ݄༵ޕલӦۀٳ 「オウケイウェイヴ ブルーマンデー 対策」 https://otekomachi.yomiuri.co.jp/news/20181217-OKT8T119021/
61 ΦέΠΣΠϰͷ੍ #BSεϖʔε 世界のビールが飲み放題(ソフトドリンクもあるよ)
62 ご清聴ありがとうございました