1. h173.club
  2. 010: カラーミーショップ、お..
2022-07-05 22:43

010: カラーミーショップ、お前もRAW人形にしてやろうか

記念すべき第10回は、ひとなみクラブの常連「カラーミーショップのPHPバージョンアップ戦略」についてです。

言語処理系のサポートは、メインの開発コミュニティのサポート以外でもLinuxディストリビューションのベンダーサポートがあるという話と、本格的なコンテナ運用までの段階的なコンテナ化などを話しました。

00:01
はい、ひとなみクラブは、GMOペパボ、EC事業部の2人の高橋が、
社内の出来事や、最近気になっている技術について話すポッドキャストです。
みなさんこんにちは、くんさんです。
こんにちは、たかぴーです。
今日、ついに10回目ですよ。
あ、10回目。
記念すべき。
記念すべき10回目ですね。
あの、社内用のところには書いたんですけど、
実は前回ね、間違えて10回だと思って、
前半すごいいっぱい喋っちゃったのをバッサリ切ったんで、
今回は無事10回を記念して、
本当の10回ですね。
そうですね。
毎週、ちょっと空いた週とかはありますけど、
ほぼほぼ毎週撮れて、毎週公開できてるので、
まあまあいいペースでやりできてるかなと思いますね。
はい。
じゃあ、まあ10回なので、もしお祝いとか応援のメッセージある方は、
ぜひ社内のスラックとかで声をかけてもらえるとすごくありがたいです。
今日はなんかたかぴーが重めの話題があるということで。
重め、そうですね。
えっと、なんかPHPのアップデートって大変じゃないですか。
大変じゃないですかって言うと。
大変なんですね。
最近PHP7になったなと思ったら、もうすでに7.4がそろそろEOLになるみたいな感じで、
やっぱりアップデートを最新に追いつくのはすごい大変だなというふうに思っていて、
この辺のアップデート戦略みたいなのをどう考えるといいのかなと思っていて、
最近ある程度、こう、方式みたいなのを考えていたので、
その話についてできればなと思っております。
いいですね。なるほど。
結構PHPのバージョンって、自分は5.6が結構長かったのかなという印象を持ってて、
そこから7になってから、なんかポンポンポンポン上がるようになった印象はありますね。
そうですね。毎年7.1ぐらいからEOLが続いてるみたいな感じで、
もう毎年アップデートしてないと、最新に追いつけないみたいなところがあるので、
なんかこの辺がすごく、例えばPHP界隈だと結構レガシーなシステムだったり、
行動ベースだったりするところが多いと思うんで、すごく大変だろうなというふうには感じてますね。
確かにそうですよね。結構PHPカンファレンスとか、あとはペチパー会議みたいなところでも、
結構その継続的にちゃんとバージョンアップしているのは大変だったり、
工夫してる会社さんとかが発表されてて、なんか面白い、いつも見させてもらってるんですけど。
確かに。
結構そこら辺が話題の中心だったりしますよね。どう上げたかみたいなところとか。
03:03
確かに。そうですよね。やっぱりかなり歴史あるプロダクトで使われてることが多かったりする印象はあるので、
そうなるとどうしてもね、書き方もそうだし、ライブラリーみたいなのもそうだし、
結構考えなきゃいけないことが多いから、大変は大変ですよね、やっぱり。
そうですね。
なので今回はそういった負担をどういったら減らせるとか、どういった方針でやると負担がなくアップデートできるのかなとか、
そういったところを話していきたいなと思ってます。
なるほど。いいですね。
じゃあ、始めはどのあたりから切り込んでいくといいですか?
そうですね。まずそのPHPのバージョンアップって常に最新にしなきゃいけないっていう方針だったりとか、
じゃなくても別の手段があるんだよっていうところをお話ししたいと思っていて、
一つ正直にやるのであれば、セキュリティサポートされているPHPのバージョンに上げる、最新のバージョンに上げるとかするっていうのが一つですよね。
もう一つが実はOSがサポートしているPHPのバージョンに上げるっていう方法もあって、
例えばそれってどういうことかっていうと、実はですね、セントOSだったりとかUbuntuだったりっていうOSがあると思うんですけど、
そこがサポートしているPHPとか、そういったランタイムとかソフトウェアっていうのは結構その公式のセキュリティサポートが終了したとしても、
実はそのOSのライフサイクル、セントOSだったりUbuntuだったりのライフサイクルが終了するまで、実はそのベンダーが面倒を見てくれているっていうのがあるんですね。
なるほど。
なので、YAMのコマンドとかでパッチの履歴とかを見ると、実はEOLになっているバージョンであっても、
実はその脆弱性の修正のパッチが当たっていたりみたいなのが結構あって、
そこら辺は結構ちゃんとやってくれているんだなというふうに思っています。
なると、メジャーなLinuxディストリビューションだと、それぞれのディストリビューションの中でサポートの期限というのが決まっているので、
そのサポートの期間内は、そこから公式に提供しているパッケージも全部サポートするっていうことになっているので、
もしそのPHPの本体というか、OSSのPHPのコミュニティではもうサポート切れてるよっていうバージョンであっても、
致命的な脆弱性があったりしたら、それを使っている人たちは上げないといけないんだけど、
公式からパッチがないから、じゃあどうするかというと、ディストリビューターの人たちが頑張ってパッチを書いて提供してくれてるみたいな背景があるってことですね。
06:08
それを使うと、最初に話していたPHPのバージョンアップが楽になるというか、その辺はどういうふうにつながっていくんですか。
PHPのバージョンアップって、ある程度計画してやっていかないとダメなところがあって、長期間に及んだりするところがあったりして、
例えば事業部でやらなきゃいけない施策だったりとかっていうところと被ったりするんですよね。
なので、そのEOLが来たとしても、例えばOSがサポートしているバージョンに合わせるってことで、一旦その期間はしのげるっていうところが、
すみません、うまく言えないな。
なるほど。なので、PHPのOSSのメンテナンスのスケジュールだと結構頑張って上げていかないと追いつけないというか、
難しいんだけど、ディストリビューションのサポートっていうふうに見ると、それよりも長く余裕があるというか、
安全なPHPを使い続けられるっていう余地があるので、そうなるとその余裕があった方が、
例えば喫緊に差し迫ったタスクとか、今年中にどうしてもローンチしないといけない機能みたいなのがあったときに、
だけど、セキュリティアップデートとどっちをやるんですかっていうのが結構課題になってくるので、
そういうときに取れる手の一つとして、ディストリビューションのサポートを使い続けるっていう手を取りたいので、
そういう形で自分たちが、例えばビルドして最新のPHPを使うじゃなくて、ディストリビューションのパッケージのPHPを使うっていう選択肢が、
一つ余裕を持つ方法としてあるんじゃないかっていうことですかね。
はい、そうですね。
なるほど。結構この辺りは知らない人とかも、もしかしたらいるかもしれないですよね。
ディストリビューションでサポートされてるっていうのは、OSSの方よりも長いとか、ちょっと余裕があるとか、
そういうのは知らないと知らないよなと思って、知らないと何も言ってないですけど。
なんかその昔は結構そのOSのパッケージで入るバージョンが古すぎるみたいな問題も、
昔よくあったなと思ってて。
でも最近はそうでもないんですか?
そうですね。レッドハット系のOSはやっぱりちょっと古めだなという印象があって、
例えば今セントOS7とか使ってるところがあると思うんですけど、セントOS7だと今サポートしてるPHPが5.4とかだったり、
ちょっと一世代昔のライブラリーだったりとかソフトウェアを使っているという感じになってまして、
09:02
ちょっとそれだとやっぱり最新のソフトウェア、OSが管理しているもの以外のを入れようとした時に、
うまくバージョンが噛み合ったりしないので、そこは今後どうしていくかというと、
Ubuntuを使っていきたいよねっていう話になっているみたいで、
Ubuntuはセキュリティサポートだったりサポートはされているんですけど、
レッドハット系よりも比較的新しいバージョンを使っていたりするので、
最新の他のライブラリーとか、他から取ってきたライブラリーとかとうまく噛み合ったりできるんじゃないかなというふうに思っております。
なるほど、確かにあまり古すぎる言語の環境だと、
ライブラリー側がもうその言語のバージョンをサポートしてないよみたいなのはザラにあるでしょうし、
ましてやね、CentOS 7っていつまでサポートあるんでしたっけ、まだある?
CentOS 7は2024年ですね、6月とかだったかなと思います。
まだ結構余裕があるけど、それのベンダーが提供しているPHPを使うと5.4だけど、
5.4でちゃんと動くPHPの今活発に開発されているライブラリーっていうのが本当にどれぐらいあるのかとか、
クリティカルなものだともう動かなくてどうしようもないみたいなことが起きうる可能性があるっていう感じですよね。
なのでちょっとそのライブラリーとの相性というか、バランスは取っていかなきゃいけないかなとは思っておりますね。
確かに、なるほど。
じゃあ先ほどウブンツを使っていこうかっていう話がありましたけど、
ウブンツはその辺りは比較的新しいバージョンなんですか?
ウブンツはそうですね、LTSの一番新しいバージョンでいうと8.1を使っている感じですね。
1個前のバージョンでも7.4を使っているので、かなり新しいバージョンなんじゃないかなと思ってます。
なるほど。
こういう観点がありますよっていうのと、
あとはそうですね、最近やはりコンテナ化っていうのが地元で騒がれているというか、
終了になってきているというところがありまして、
我々が担当しているカラー見ショップでも最終的にはコンテナを売るようにしていきたいよねっていう方針になっていると思うんですけども。
そうですね。
コンテナの言語処理系って何を使うとか、コンテナのイメージってどういうものを使っていくとより良い形になるのかなっていうのがあるのかなと思ってて、
12:00
コンテナイメージの話で言うとおそらく一番メジャーなのって、
PHPのオフィシャルというか、ドッカーハブで公開されているPHPのイメージっていうのがあると思うので、あれが一番メジャーかなと思うんですけど。
そうですね。
ドッカーが管理しているやつですよね。
そうですね。
あれはサポートってどういう感じになるんですかね。
あれはですね、ドッカー社が独自にビルドしたものをコンテナ化しているので、そのセキュリティというサポートの面で言うと、PHPの公式サポートと同じという形になりますね。
なるほどなるほど、結構バンバン上げていくというか、新しいのがどんどん出てきて、古いのはOSSのサポートと一緒に切れていくというか、もうこれ以上はこのイメージは更新されないよみたいな感じになっていくってことですね。
はい、そうですね。
そうなるとコンテナイメージで運用するっていうと、その勢いでいかなきゃいけないのかっていうのが多分次の課題になってくるんですかね。
そうですね。
そのあたりは、コンテナ運用を見据えたそのPHPのバージョン管理みたいなものは、今考えているものはどんなものがあるんですか。
そうですね、そのコンテナ運用プラス先ほど言ったそのOSのサポートしているPHPを使うと、ある程度余裕を持ったアップデートができるんじゃないかなと思っておりまして、
まずコンテナ運用する時点で、アップデートに対する負担も減ってくると思うんですね。
例えば、切り替えが楽だったりとか、並行運用が楽だったりみたいなところの恩恵を受けられるので、まずそこの部分で負担が減るのかなというところと、
あとはある程度そのOSのサポートしているPHPを使うことで、EOLに追われなくて済むっていうところがあるので、そういったものを組み合わせながらやっていくと良いんじゃないかなと考えております。
なるほどなるほど。
コンテナ化することでVMじゃなくなるので、今私たちってパブリッククラウドも使ってるんですけど、プライベートなクラウド環境もある。
VMをいくらでも建てられはするんだけれども、コンテナと比較するとちょっと並行稼働とかが面倒っていう問題がありますよねと。
その上でコンテナをうまく使っていくとその辺が解決できるでしょうと。
コンテナのコッカーハブの公式のPHPイメージを使うと、OSSと同じようなサイクルで上げていかないといけなくて、本来はそうあるべきなんだけど、そうもなかなかやれないこともあるので、
15:04
じゃあどうするかというと、おそらくはLinuxの公式のディストリビューションのイメージから自分たちでPHPを入れてそのコンテナを使うみたいなことをイメージしてるって感じですかね。
はい、そうですね。
なるほど。なかなかそれは面白いというか、いい戦略のように見えますね。
はい、そうですね。
なんかその作戦で課題みたいなものってあるんですか。
そうですね。まず一つがKubernetes化するにあたって、そもそもそれに対する課題だったりとか、ある程度構成枠があるよねっていうところの、
まずその初動部分がかなり大変というのはあるかなと思っております。
なるほど。今そもそもコンテナ運用に適したようなアプリケーションにはなっていない部分があるので、そこをまずそもそも何をするにしても対応していく必要が一つはあるっていうのがわかりますね、確かに。
そうですね。
なのでちょっと第一弾として考えているのが、まず既存の動いているVM上にそのPHP FPMだけコンテナ化して動かすっていう方法は第一弾としてありなんじゃないかなと思っております。
なるほど。まずはVMの上にそのPHPだけが動いているどっかコンテナというかどっかデーモンがいて、単にそのVMの前のLBからはそのコンテナのポートに直接アクセスしてくるみたいなのをするだけで、まずはそのコンテナ化をするっていう目的が達成されるっていう感じですかね。
なるほど。それは結構面白いアイデアというか、なるほどって感じなんですけど、そういうのって他でやってるところとかあるんですか。
そうですね。技術部の方で老人業家みたいなプロジェクトがありまして、そっちでやってるのをちょっと参考にさせていただこうかなと思っておりまして。
社内だと今は開発リソースがちょっとかけられないけど、運用は長くしていきたいっていうサービスがいくつかあったりするので、そういうところでセキュリティのアップデートと運用みたいなところを合わせて考えたときに、まずは今はその作戦でいこうかっていうのがいくつか動いてるような感じですかね。
そうですね。
なるほど。社内ではやられてるってことなんですけど、アイデアとしてはすごく一般的な話なので、社外ではやられてるかどうかとか知ってます?
そうですね。確かに本来のコンテナ運用としては確かにそれが割と一般的かなって思うんですけど、ちょっと事例はそこでしか見たことがないんですね。
18:06
なるほど。今年はそれを進めていくっていう感じなんですか?
そうですね。まず今年はそういった方法でやっていきたいなと思いまして、最終的にその完全なコンテナ化、Kubernetes化するにあたっての第一歩になりますし、長期的なHPアップデート、毎年終われなくて済むような施策にもなってくると思うので、今年はまずその基盤を整えるっていう意味でやっていこうかなと思っております。
なるほどなるほど。バージアップって追われるのは確かに良くないですけど、上げていった方がいいのは間違いないじゃないですか。
そうですね。なので、そういうコンテナ化とか、あとはOSのベンダーサポートをうまく活用するっていうのは、自分たちが上げたいときに上げるというか、今上げるべきと思ったときに上げられるような柔軟性を持つっていうところを多分目的としてやられてるんだろうなとは思うので、それが狙い通りにはまるとすごくうまくいきそうですよね。
そうですね。一方でちゃんと上げられるような、継続的にアップデートできるような組織体制は課題としてあるので、それはまた別途計画をしていきたいなと思っております。
そうですね。結構セキュリティだったり、バージアップも一つのセキュリティの施策の中に入るかなとは思うんですけど、そういうのと売り上げとか利益を伸ばすような機能開発だったり、何か新しい仕組みを入れるものっていうのは競合するっていうわけじゃないですけど、
リソースはいつもやりたいことよりは少ないので、そうなるとどっちを優先するとか、どうやったら楽にできるかっていうのを常に考えなきゃいけない中で、そういう一つの社内での実績だったり方法を考えて、私たちもそれに習ってやってみましょうっていうのはすごく良いですね。
はい。
あとはPHPのアップデート周りだと話したいことってありますか?
そうですね。あのところはこんな感じで考えてますってことは共有できたので、だんだん十分かなと思います。
ちなみに実際バージアップをやるのはたかぴーがやるんですか?
私がやりたいなと。
いいですね。やりたいなら大丈夫ですね、それは。
その辺の作業とかは割と好きな方なので、もし積極的にやりたいって方がいれば全然譲りはするんですけど、なかなかいないかなと思うので、私の方できっとやってしまおうと思いますし、
21:01
後継者みたいなのもできれば育てられると嬉しいなと思っているので、誰か一緒にやりたいって人がいたらお声掛けいただければなと思っております。
そうですね。結構バージョンアップっていろんな知識がついたり、もちろんいろんな知識が必要とされるから、普段の機能開発とはまた違った頭の使い方とか書く行動とかがあるじゃないですか。
そうですね。
バランスよくやるというか、気分転換じゃないですけど、そういうのでやってもらうのもいいかなとは思いますね。
機能開発にはない面白さがあるかなと思うので。
確かに。結構どっちをより面白く感じるかとか、そもそも面白さを感じるかって人それぞれではあると思うんですけど、やってみると意外と楽しいじゃんとか向いてるじゃんとか、
あるいは自分はちょっとこれは辛いからいいかなって思う人もいるかもしれないですけど、新しいチャレンジするのはいいことだと思うので、興味がある方はぜひ声かけてもらえたらなと思いますね。
じゃあ今日はそんなところですかね。
ですね。はい。
何か言い残したことありますか?
私からは大丈夫です。はい。
じゃあ今回第10回は、PHPのバージョンアップの戦略みたいなところを、たかぴーが今どう考えているかっていうのをお話ししていただきました。
じゃあ第10回は以上で終わります。ご視聴ありがとうございました。
ありがとうございました。
22:43

Comments

Scroll