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
TECHHILLS-CROOZ CTOが考える 企業とOSSとの付き合い方-
Search
CROOZ
April 13, 2022
Programming
0
980
TECHHILLS-CROOZ CTOが考える 企業とOSSとの付き合い方-
CROOZ
April 13, 2022
Tweet
Share
More Decks by CROOZ
See All by CROOZ
クルーズ株式会社(クルーズグループ)_会社紹介資料(新卒・中途)
crooz
1
69k
SHOPLIST.comでの Fargate活用事例
crooz
0
190
TECHHILLS-年間300万人が利用するファッション通販アプリをFlutterでリプレイスした話-
crooz
1
790
TECHHILLS-テックヒルズ- 「SHOPLIST」の技術負債-長年構築されてきたレガシーシステムを脱却することで見えてきた未来-
crooz
2
690
クルーズ 会社紹介資料(エンジニア職向け)
crooz
0
65k
Other Decks in Programming
See All in Programming
Piniaの現状と今後
waka292
5
1.5k
CSC509 Lecture 08
javiergs
PRO
0
110
飲食業界向けマルチプロダクトを実現させる開発体制とリアルな現状
hiroya0601
1
400
Amazon Qを使ってIaCを触ろう!
maruto
0
190
約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話
hatsu38
24
12k
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
210
Why Spring Matters to Jakarta EE - and Vice Versa
ivargrimstad
0
1.1k
カスタムしながら理解するGraphQL Connection
yanagii
1
1.3k
WEBエンジニア向けAI活用入門
sutetotanuki
0
310
Content Security Policy入門 セキュリティ設定と 違反レポートのはじめ方 / Introduction to Content Security Policy Getting Started with Security Configuration and Violation Reporting
uskey512
1
440
ECSのサービス間通信 4つの方法を比較する 〜Canary,Blue/Greenも添えて〜
tkikuc
11
2.3k
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
980
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
38
7.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
The Power of CSS Pseudo Elements
geoffreycrofte
72
5.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
BBQ
matthewcrist
85
9.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
4
380
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Transcript
CROOZ CTOが考える 企業とOSSとの付き合い方 クルーズ株式会社 鈴木 優一
自己紹介 経歴 ・2008年にモバイルコンテンツプロバイダに入社 ・2012年クルーズ株式会社に入社 入社後は技術統括部門の責任者として全社の開発平準化や採用技術選定、 アーキテクト業務に従事のほか、品質管理部門やCS部門、人材育成部門 の運営に携わる。 ・2015年に執行役員就任 最高技術責任者CTO グループのIT技術・セキュリティ分野全般を担当する。
鈴木 優一 クルーズ 株式会社 執行役員 CTO 兼 CROOZ SHOPLIST株式会社 技術統括部長
・CROOZ のについて ・SHOPLISTで採用しているオープンソースソフトウェアについて ・技術選定時の視点 ・企業視点でのOSSとの付き合い方 ・OSSとの付き合い方の注意点 本日のAgenda
1 CROOZ について
CROOZ について クルーズは『SHOPLIST.com by CROOZ』を軸に、EC領域に関連する 複数のサービスを展開する「ECソリューションカンパニー」です。 モバイル コンテンツ 受託開発事業 IT業界に
特化した 人材派遣事業 2001年 検索エンジン CROOZを 活用した ネットワーク 事業 2002~ 2009年 事業売却 コンテンツ ブロバイダ 事業 ソーシャル ゲーム事業 2003年 2007年 Mobage 参入 2007年 ネイティブ ゲーム市場 参入 2014年~ モバイル コマース 事業 2008年 2016年~ 事業撤退 ファッションEC SHOPLIST 2016年~ 10業種20社を超 えるグループ経営 で1兆円を目指す 時代の流れに合わせメイン事業を 5回変更
CROOZ について 現在EC領域を中心にゲーム領域/ 広告/メディア領域で 事業の展開をしています
CROOZ SHOPLISTについて 「一番お得、ここにしかない商品の提供」をビジョンに、レディー ス・メンズ・キッズのファッションアイテムを中心にインテリアや コスメや雑貨に至るまで、幅広いジャンルのアイテムをまとめて購入 できる通販サイト「SHOPLIST.com by CROOZ」を運営しています。
2 SHOPLISTで使用している オープンソース ソフトウェアについて
採用しているオープンソースソフトウェアについて 9割以上がオープンソースソフトウェア 例)サーバ周り ・CentOS、Ubuntu ・MySQL、PostgreSQL ・PHP、 Laravelr、その他各種ライブラリ 例)クライアント回り ・Flutter、その他各種ライブラリ 例)開発ツール関連
・GitLab CE 一方で商用で使も使っている ・Microsoft の各サーバ製品(Windows Server/SQL Server)
主な技術スタック ・技術スタックはサーバはLAMP ・ネイティブはJava/Kotlin/XCode/Swift併用 ・現在技術スタックの置換え中(後程詳細説明) Server Side Frontend Dev/Ops Native App
Infra Structure
3 技術選定時 の視点
技術選定時の視点 前提 ▪企業(営利法人)の目的は利益を上げること 業種は違えど、市場や顧客から満足をするサービスやモノを提供し、 利益を追求するもの なので、技術選定は上記を実現する手段の1つにしか過ぎず、 商用ソフト使うことは悪である! みたいな考えではないです。
技術選定時の視点 前提 ▪企業(営利法人)の目的は利益を上げること 業種は違えど、市場や顧客から満足をするサービスやモノを提供し、 利益を追求するもの また、 オープンソースプロジェクトに参加し、OSSにコミット することを強く奨励します! みたいな考え方もないです。
技術選定時の視点 技術選定時に最も大事にしていることは以下5つ 1.その時の課題を解決するソリューションとして適切なものか? 3.いま採用している技術スタックから置き換え可能なものか? 4.選定しようとしている技術要素に対する情報が十分にあるか? 5.選定しようとしている技術要素に将来性があるか? まず、OSS云々関係なくこの視点で見ています 2.採用しようとする技術要素は経済合理性があるか?
技術選定時の視点 技術選定時に最も大事にしていることは以下5つ 1.その時の課題を解決するソリューションとして適切なものか? 例えば ・ページ表示速度を速くしたい → 画像フォーマットのwebP対応 レスポンスのBrotli 圧縮 ・生産性を向上させたい
→ クロスプラットフォーム言語 の採用 など、課題を解決させるうえで適切かという視点
技術選定時の視点 技術選定時に最も大事にしていることは以下5つ 2.採用しようとする技術要素は経済合理性があるか? 例えば ・この技術要素はオープンソースソフトウェアとして存在するけど 実装にかかる時間が商用製品と比較して3倍かかる →工数と人月単価と、商用製品のコストを見たら 投資対効果は適切なの? といった、投資対効果の視点。
技術選定時の視点 技術選定時に最も大事にしていることは以下5つ 3.いま採用している技術スタックから置き換え可能なものか? 例えば ・この技術要素は、いま採用している技術要素と親和性が高いので 習得コストが少ない。 ・この技術要素は、いま採用している技術要素との親和性が低いので 経済合理性を見る際に、学習コストを見込んでおく必要がある という技術の視点。
技術選定時の視点 技術選定時に最も大事にしていることは以下5つ 4.選定しようとしている技術要素に対する情報が十分にあるか? 例えば ・この技術要素は、コミュニティの公式ドキュメントはあるけど、 利用ユーザの投稿記事が多い、少ない ・この技術要素は、商用で公式ドキュメントはあるけど内容が薄くかつ ブラックボックスなのでサポートへの問い合わせベースでの対応になる かもしれない という採用する技術に対する情報の視点。
技術選定時の視点 技術選定時に最も大事にしていることは以下5つ 5.選定しようとしている技術要素に将来性があるか? 例えば ・オワコン化している技術じゃないか? ・開発コミュニティは活動をしているか? ・オワコン化している技術であっても経験者が市場に十分いるか? という将来性の視点。
技術選定時の視点 過去の技術選定事例 WebP 1.その時の課題を解決するソリューションとして適切なものか? →ブラウザに転送されるデータ量が多いことが課題。うち8割が画像リソースである ため、画像を圧縮するという問題の解決策は適切 2.採用しようとする技術要素は経済合理性があるか? →CDNは転送量に応じた従量課金なので、仮に画像リソース容量が4割削減でき、 その削減費用相当の投資額で実現できるのであれば経済合理性がある。 3.いま採用している技術スタックから置き換え可能なものか?
→当時はサムネイル生成処理はEC2上に構築されたWebサーバ(Nginx)上にsmalllight をたてて動的変換したものをCDN上でキャッシュ化していた。 今回ngx_sall_lightを使って置き換えも可能ではあったが、スケーラビリティと コアコンピタンス視点から、置き換えるのではなく、処理一式の外だしを検討 OSSという手段ではなく、Fastly CDNのImage Optimizerをの利用を検討
技術選定時の視点 過去の技術選定事例 WebP 4.選定しようとしている技術要素に対する情報が十分にあるか? →公式ドキュメントもあり、また第三者の作成記事もあり設定実装を行うのに 十分な情報量と判断 5.選定しようとしている技術要素に将来性があるか? →CDNサービスで見て、Fastlyのシェアは純増。 現行のEC2+nginx+smalllightを独自で運用し続けるよりは商用サービス利用 のほうが将来性があるのでは?と判断
技術選定時の視点 過去の技術選定事例 Laravel 1.その時の課題を解決するソリューションとして適切なものか? →管理画面の生産性高く製造できないのが課題。 独自フレームワークからLaravelに切り替えることで製造スピードの向上が期待 2.採用しようとする技術要素は経済合理性があるか? →学習コストは多少かかるものの、同じLAMP環境上で動作し、同じMVCの思想に 基づくフレームワークのため、学習コストが少なくかつOSSなので投資コストは小 3.いま採用している技術スタックから置き換え可能なものか?
→上記記載のとおり既存フレームワークと親和性が高く置き換え可能と判断
技術選定時の視点 過去の技術選定事例 4.選定しようとしている技術要素に対する情報が十分にあるか? →公式ドキュメントもあり、また第三者の作成記事も十分ある。 また従業員にも経験者が多い 5.選定しようとしている技術要素に将来性があるか? →自社フレームワークの100倍将来性がある Laravel
4 企業視点での OSSとの付き合 い方
企業視点でのOSSとの付き合い方 1.原則利用がメインにどうしてもなっちゃう ・前のページでも触れたとおり、営利企業だとサービスやモノを提供して 利益を出すことをが目的。 ・その手段として各技術要素があって、その一部がOSSとなるため、 原則は利用となり、OSSプロジェクトへのコミットが目的であって はならない。
企業視点でのOSSとの付き合い方 2.OSSコミュニティへの貢献も必要 ・ただ利用しているだけでは、利用しているOSSプロジェクトは発展しな いかもしれなし、極論将来的にOSSプロジェクトのバージョンアップが 行われず、最終的に困ってしまうのが自分になるかもしれない。 ・大前提MIT License, Apache Licenseなどの各ライセンス従い、自分で 改変した場合にソース開示(対象project
へのPull Requestはすべき) →技術統括本部だけでも直近1年間で4件Pull Requestを実施 ただ業務で使っている中で、これは大本直したほうが良いよねってのが原則なので 数は多くない
企業視点でのOSSとの付き合い方 3.OSSプロジェクトへのコミットだけがOSSへの貢献ではない ・例えば、Issues(バグ報告、要望、質問など)を上げる ⇒OSSコミュニティ内に情報を発信する。 ・事例記事をまとめて自社の技術ブログで公開する。 ⇒OSSコミュニティ外に情報を発信する。 ・業務上で改変したらPull Requestする ⇒仕事の中で行った改変はソースとして開示する。 ソースコードを開示する以外にもOSSプロジェクトを継続的に盛り上げて
行くことのサポートはできる!!
5 OSSとの付き合 い方の注意点
OSSとの付き合い方の注意点 公式の「保障」「サポート」がないことへの留意は必要 ・決して「品質に問題がある」「サポートが悪い」というわけではない ・実際にレビューがされたのちリリースされており、Issusへのレスある。 ・ただしOSS提供元は個人やコミュニティで活動している人々が大半で、 なので、期日や要求する品質を「保証」するという考え方ではない。 ⇒自分で改変しすることや、代替プロダクトを選定するなどの対策を 考えておく必要がある。 ※特にライブラリ系は気軽に探して使ってしまう分注意が必要 過去にWebViewライブラリで実現したいことができず、代替ライブラリに
差替え、呼出し部分の書換えで対処した経験あり。
OSSとの付き合い方の注意点 Pull Requestしたからといって100% Mergeされるわけじゃない ・自部署のメンバーで直近1年間で4件Pull Request して、Mergeまで いったのは2件 ・いまだにOpen状態のものもある。 ・要するに、コミュニティの事情により改変を開示してもMergeされるまで
の期間に差があり、MergeかCloseのいずれかが保証されてるわけではない
OSSとの付き合い方の注意点 場合によりOSSのほうがプロダクトの継続性に優れる場合がある 過去にあったこととしては ・Flashの変換エンジンを外部の企業より商用で提供を受けていたが、その会社 が変換エンジンの提供・保守をやめてしまった。 ・結局OSS のFlashの変換エンジンに乗せ換えて運用していた ・なので、稀ではあるものの商用だからと言って継続性の保証があるわけじゃ ないということを念頭に置いておくべき
6 まとめ
まとめ ・企業視点でのOSSとの付き合い方だと、利用がメインに ・一方でOSSへの貢献は必要 ・改変した場合は各ライセンス規定に従ったソース開示はマスト ・ソースコード開示という方法以外にもOSSへの貢献として情報の 発信という手段もある ・なので、OSSプロジェクトへのPull Request がすべてだと思わず 業務の中で両立できる貢献は積極的にしていくべき
今後のイベントのお知らせ
本日お話できなかった裏側のディープなお話や CROOZ SHOPLISTの組織についてお話します 直近開催予定のイベント
次回 2022年7月開催予定! 次回のテックヒルズ開催のお知らせ TECHPLAYで CROOZをフォローして 情報をお待ちください!
Twitterでも情報発信しています! 情報発信強化中!!! ハードボイルなCTOのつぶやき 未経験エンジニアの教訓 s-flo
最後に 現在積極採用中です!! 詳細はこちら⇒