社長室の米田です。
コロナ禍でもBASEでは積極的にエンジニア採用をしています!
ということで、先日エンジニア向けのオンラインmeetup「BASE meetup for Engineers 2020 #1」を実施しました。
新型コロナウイルス感染症拡大防止のため、BASEとしては初めてZoomを利用して配信形式で開催し、約100名の方にご参加いただきました!
今回は、イベントのようすをダイジェストでお届けいたします。
まずは、代表取締役CEOの鶴岡さんより会社・サービスの紹介や直近の新型コロナウイルスの事業への影響についてお話しさせていただきました。
「新規開設ショップ数は、コロナ前はデイリーで500~1,000ほどだったのが、3月後半から4月にかけては2,000を超える日も出てきて、コロナ禍でECサイトに取り組まないといけないと感じていらっしゃる方が増えていて、足元はすごく多くの需要をいただいている」と鶴岡さん。
またGMVについてですが、4月のGMVは3月と比べて倍以上となっており、鶴岡さんは創業からの事業成長を振り返って、「2012年に創業して7年半ほどサービスをやってきたのですが、7年半かけて積み上げてきたGMVと同じ額のGMVが新たに4月に積みあがった状態」と表現しています。
開発の優先順位も変更になった部分があり、詳細はえふしんさん(取締役EVP of Development)や川口さん(執行役員CTO)からお話しさせていただくとしながらも、「これまでずっとある程度予測可能な成長の範囲で開発していたのが、7年半での成長を1ヵ月で経験することになった」と話しています。
また鶴岡さんは4月の怒涛の日々を振り返って「個人的には、3年後の未来が1ヵ月でぎゅっと短縮されて一気に来たと感じています」と話していました。
次に、えふしんさんと川口さんより開発組織や技術、そして急激に利用が増えたことによる開発への影響や起こったことについてお話しさせていただきました。
まずは社内の職種比率や開発組織の構成、使用言語・技術について簡単にご説明させていただいたあと、えふしんさんから川口さんにインタビューする形式で進めさせていただきました。
ここからは会話形式でお楽しみください。
藤川:まずは、直近で起きた問題とそれにどう対処したか、そこで見えたこれからの課題について教えてください。
川口:直近でサービスに起きた問題についてですが、鶴岡さんからもお話しさせていただいた通り、7年半で積み重ねてきた成長規模が1ヵ月で一気に積みあがった状態となり、社内で想定しているアクセス増をはるかに超え、そのアクセス増がスポットではなく継続的に起きていた状態でした。テレビで紹介されたショップさんも多数あり、突発的なアクセス増もたびたび起きており、特にデータベースや決済部分の負荷が高まっていました。大変でしたね。
僕は前職でソーシャルゲームの開発をしていたんですが、ソーシャルゲームであれば運営側がイベントの時間を決められるので負荷が高まる時間帯を予測できるんですが、ECプラットフォームであればショップさんが売りたいときに負荷が高まるので全く予測ができない。それを如実に実感したのが4月でした。
藤川:「BASE」の特長としてはECなのでいつトランザクション、つまり購入集中や圧倒的なPV増がいつ発生するかわからない中で、AWSのオートスケールでは到底間に合わないわけじゃないですか。そういう状況で実際どう対処していったんですか?
川口:サーバーのスケールアップ等はやれることは全てやるというスタンスで取り組みましたが、それでもサービスのクオリティに影響してしまった場面もあり、ショップさんに販売時間を調整してもらうご協力をしていただくことでアクセスの集中を避けるようにするなど、ショップさんや購入者さんにはご迷惑をおかけしてしまったこともありました。
サービスの運営に必要なインフラのスケール方法は一通りやらせてもらいました。通常であれば明らかにオーバースペックだなと感じるものにも取り組みましたが、それでもインフラ面の恒常的な課題が露見してしまいました。
藤川:通常であればスケールアップすれば解決するものがそれでは済まなくて、今回はAWSさんに相談して自分たちの状況をちゃんと伝えるといったこともがんばりましたよね。
川口:負荷ってスケールアップすればなんとかなると思ってて、クラウドだし。それがどうにもならかったというのが現実で…
自分たちだけでは判断がつかないところもあって、AWSさんにご相談させていただいてボトルネックを解消するご提案をいただいたり、こちら側での対応をしたりして、いまは落ち着くようになったなんですけど。スペックの上げ方でどうにもならなかったときはどうしようかと思いましたね。
藤川:天井が見えちゃったというか。
鶴岡:久しぶりの感覚でしたよね、「やばい」っていうの。こんなのあまりなかったですよね。深夜1時に役員ミーティングをしたのも創業以来初めてだったなという・・・生きた心地がしなかった。
藤川:例えば入口を制限することで負荷を平準化することもできるんだけども、我々はECサービスを提供しているのでそうすると購入の機会損失を生むし、それによってサービスの信頼を失うことにもなるんですよね。結局解決方法としてはふつうに買えるようにしたってことですもんね。
川口:本音を言えば、開発側としては入口で止めたかったのはありますけどね。
鶴岡:コメントにも書いてくださってますが、オリンピックのチケット購入サイトはそう(入口で止める)でしたもんね。
藤川:順番待ちにしていましたね。そうはいっても今後負荷がさらに増えたときにこのままではいけるわけでもないということが見えたと思うんですけど、今後の技術課題ってあったりします?
川口:今スケーリングって、社内でこのショップがいついつにセールを開始するという情報を拾って、タイミングを見計らってサーバーの台数を増やしているんですが、もうちょっとそのへんを柔軟に行えるようにしたり、あとメインのDBが全部の機能を背負っているので、きちんと分けていかないといけないですね。マスタのDBのコネクションが多いところは顕著に問題なので、技術的に何が問題なんだっけっていうのをきちんと切り分けて解決しないといけないなと。
藤川:「BASE」はサービスリリースから7年経って、これまでシステムは作り変えてきたものの、まだまだ作り変えていかないといけない。
川口:アクセスの規模感が変わるとシステムも根本的に変えないといけないんだなと痛感しました。今回をきっかけにやることが増えましたね、本当に。
藤川:ここのスライドにも「今後の組織課題は?」と書いてますけど、それを支える組織をどう作っていくかなんですけど。
川口:サービス開発自体は止めたくないのでそれをやる組織はもちろん、いまもPlatform Devというセクションの中に基盤チームやSREがあるのですが、サービス開発を下支えする組織も強化していかないといけないですね。
藤川:次のスライドにいきますと、直近ではBASEのアーキテクチャ刷新は結構やってきてるんですが、そもそもなんでやっているのかも含めて話してもらえますか?
川口:現在フレームワークはCakePHPの2系を使っていて、新しいフレークワークのアップデートや別フレームワークへの乗り換え、別言語への切り替えだったり、サービスの分離をしないと、一つのモノリシックなサービスを運営するのに変更のリスクが大きくなってきてしまっていて。
なのでアーキテクチャの刷新というよりは、なるべくサービス開発を止めないような形でフレームワークの刷新や言語の切り替えを行っています。
藤川:今後の技術選定についてですが、どういったことを考えて技術選定しようと思っているか教えてもらえますか?
川口:PHPを使うことにはメリットもデメリットもあるので一概に良いのか悪いのかは言えないですが、Cakeの2系をずっと使い続けるのは明らかにリスクだと思ってますし、採用の面でも影響があるので、最新のCakeのバージョンを使うとかLaravelを使うとか、選択肢は増やしたいです。
ただ全部PHPを使う必要はないと思っていて、必要なところではGoを使うとかもあり得ますし、手札が多いほうが変化に柔軟に対応できると思っているので選択肢は増やしておきたいです。
選択肢を考えるときに意識しているのは、流行ってるからこの技術を取り入れようということではなく、流行ってる技術にはその理由があるのでそこは常に考えるようにはしています。
藤川:次はちょっと難しい質問で、面接でも聞かれることが多くてどうやって答えようかいつも考える内容なのですが、BASEの技術的な差別化要素ってなんですか?
川口:技術的な差別化って、例えばうちはこの言語のプロフェッショナルが集まってます、という打ち出し方はBASEはしてないと思っていて。
藤川:むしろコモディティ化している、他社さんでも使っている技術を使わせてもらっていることで技術的な情報の平準化がされているし、エンジニアのキャリアパス、簡単に言えばBASEから他社さんへ転職できるし、他社さんからBASEに転職していただいてすぐ活躍できる環境ですよね。なのでそういう(スペシャリストの集団という)差別化はしていないですよね。
強いていうと、「誰でもかんたんに使える」というサービスを提供しているわけですけど、エンドユーザーが”かんたんに使える”からといって裏側の技術が簡単かというとは限らないと思っていて。それが技術かというと必ずしもそうではないものも含まれるかもしれないのですが、そのプロセスや意思決定において他社とここは違うというところはありますか?他社だったらここまでやらないだろうなというところ。
川口:難しい質問ですね。”かんたんに使える”を実現するために、それに対する努力は惜しんでいないつもりです。かんたんさを犠牲にしてしまうような、例えば技術的に難しいからという理由で妥協しないようにはしています。
それこそ外部の決済サービスさんなど各種ステークホルダーの協力の中で成り立っているサービスなので、そこの技術的な交渉やサービス維持のための協力はがんばってますね。それが技術かといわれるとちょっと違うかもしれないですけど…
今回で言えば、「100人待ち」の画面を出さないように、いかにちゃんとスループット出すかというところは特に意識しましたね。
藤川:そこにこだわって、追い詰められている状況下でもしっかり改善できているのは良かったなと思いましたね。
鶴岡:今回の状況であれば数量制限したり1秒あたりのトランザクション数を制限するとか、安全策を取ろうと思えばいくらでも取れたけど、そうじゃなくてSREチームが「絶対にこれ処理する」って動いていて、僕は何もできないのでもどかしかったんですけど、見ていて頼もしいというか誇らしいというか。絶対にユーザーさんにしわ寄せがいかないようにしようっていう気概がすごかったなって。
川口:そうですね。ユーザーさんに不便をさせるのって個人的にはダサいと思っているので、ダサい状態はできるだけ作りたくないと思っています。
藤川:では次の質問にいきますね。技術とカルチャーフィットのどちらを重視していますかという質問ですが。
川口:これはどちらを重視するというのではなく、どちらも重要ですね。うちはすごくサービスを重視しているので、例えばものすごく技術が好きな方がBASEにご入社されて「新しいこの言語を使いたいです」と提案されても、それがサービスにとって最適な選択肢でないのであれば受け入れられないですし、そうなるとお互いに不幸ですよね。もちろんサービスを作るのに技術ってすごく大事で、やりたいことを実現できる技術力を持っていらっしゃる方を採用できるようにしています。
あと僕の個人的なことで言えば、「インターネットが好きな人」がいいですと常に言っていますね。インターネットサービスが好きな人の方がシンプルに話が合いますし、「BASE」ってインターネットサービスなので、「BASE」を開発していて”楽しい”と感じられる人のほうがもちろんいいですよね。
Webアプリケーションの開発って得てして退屈になりがちな部分があるので、そういったところも含めてサービス作りを楽しめる人ならBASEでも楽しめるかなと思います。
藤川:それこそ1文字変えるコストを”楽しい”と感じられるかは、ユーザーさんが見えているからこそですからね。
ここからは、Q&Aセッションです。参加者の方から事前アンケートでいただいた質問や、当日イベント開催中に投稿していただいたご質問に回答していきます。
まずは事前にいただいていた質問から。
鶴岡:もちろんいろいろ変わったんですが、4月はサービスのインフラ系の改善を全社のプライオリティで最も重要なものというふうに変更して、通常の新機能の開発は優先度を下げました。いまはだいぶ落ち着いたので通常の開発を進められるようになってきましたが、コロナの影響でたとえば飲食店さんの利用が増えていたり、世の中のニーズも大きく変わっているので、それに合わせてお困りの事業者さんに日々使っていただけるような機能の開発の優先度を上げています。
なのでいまは優先度を絶賛変えているところですね。この状況で外部環境が常に変化していて、我々としてはお困りの事業者さんのためにできる限りのことはやろうということで、状況に応じてガンガン優先度を切り替えているところです。
鶴岡:もちろん今回の新型コロナウイルスの件もありますが、開発で言えば優先順位が永遠のテーマかなと思っていて。
僕たちは初めてECサイトを開く人たちにちゃんと使ってもらうというところにすごくこだわっているチームで、例えば他のECプラットフォームを使っているショップさんに「BASE」に移転してもらってGMVを伸ばすというプロダクトを作っているわけではなくて、まだネットショップは開いたことないけどいまからネットショップを始めてみたいという人にいかに使ってもらうかにフォーカスしています。
「BASE」にしか提供できない価値に集中しないと僕たちの存在意義もないなと思っていて。この立ち位置は我々が引き続き担っていきたいなと思っています。
そこにこだわってプロダクトを作っていると何が起こるかというと、嬉しいことに、「BASE」を使ってネットショップを開いてくださったショップさんたちがどんどん成長されているんですね。「BASE」をご利用のショップさんの中には売上がほとんどないショップさんもいらっしゃれば、月の売上が数百万、数千万、数億というステップを踏まれているショップさんもいらっしゃって。売上の大きいショップさんと小さいショップさんそれぞれに向けた開発のプライオリティを決めるのがすごく難しいですね。
創業から数年間はどっちかというと成長されたショップさんは「BASE」から卒業してくださっても良い、他のECプラットフォームを使うようになっていっても良いという割り切りを個人的にはしていて。
しかし、直近は売上の大きいショップさん向けの開発もやっています。「BASE」を使って成長されていったショップさんがさらに成長を求めるのであれば、我々もそこを追求する責任はあると最近は思っています。「BASE」を選んでくださったからには最後まで寄り添いたいなと。開発の優先度はそれこそ川口さんや神宮司(執行役員VP of Product)、山村さん(取締役COO)が大方針は決めつつ、各チームや個人のOKRに落とし込んでいます。
あと組織的な話もあって、CTOが藤川から川口さんに交代したのは大きなターニングポイントだったと思っていて。
僕はBASEを22歳で創業して、役員陣は年齢で言うと一回り上のメンバーで構成されていて、若い人と経験がある人がタッグを組んでサービスを作っていくというのは理想的な構造だと思っています。
直近で言えば、現場の開発の責任者を川口さんに移譲したことで会社として大きく前に進めたと思っています。そういう大胆なジャッジをより良いものにするというのは僕にとってはこれからも課題なので、毎回向き合って乗り越えていくしかないのかなと思っています。
ここからはイベント中にいただいた質問に回答していきます。
質問:基盤刷新について、使う言語の選定においては経営資産・コスト、技術的な興味、安定性の視点など、どのあたりを重要視していますか?
川口:新しい言語やフレームワークに刷新する際の、いまのメンバーの学習コストやの乗り換えコストも考えてねと(アーキテクチャ刷新などを行っている)基盤チームのメンバーに伝えています。
安定性については自分たちが安定させていくことも重要だと思っていて、フレームワークに投資していくとか、カンファレンスにスポンサードするとか。フリーライドしたくないのでその延長線上で選択できる技術にはしています。
技術的な興味を選定基準に入れると結構ブレちゃうと思うので、難しいですよね(笑)
藤川:そこは永遠の課題かもしれないですね、オープンソースとかコミュニティの世界なので。経営視点で言いますと、基本的に人をどれくらいレバレッジさせられるかという話だと思っていて、今いるメンバーや新しく入ってくる人が楽しく働けてその結果サービスがレバレッジしていくことを重要視しているからこそ、いま川口さんが言ったような基準で技術選定をしていると思ってもらえればいいのかなと思います。
質問:Webサービス開発で退屈な部分もあるとおっしゃっていましたが、どのような部分ですか?
川口:例えば間違っている文言の1文字を直すとかって、文言を直してプルリク出してステージングで確認して本番に出すっていう、1文字直すだけでも結構大変なんですね。特にサービスが大きくなってくると。そういった作業がすべて退屈に感じちゃうとしんどいだろうなとは思っていて。なんでこれをやる意味あるんだっけって考えることとか、ルーチンになってしまっているのであればちゃんと改善するとか、そういう開発ができるタイプの方じゃないと、Webサービス作ってると結構しんどいのかなと思いますね。
とはいえ退屈なことはほとんどないですけどね。人によるのかもしれないですけど。僕は毎日エキセントリックな日々を過ごしてますよ(笑)
質問:カンファレンスのスポンサード等でBASEをよく見かけます。こういった技術広報の活動への投資判断の基準などがあれば教えてください。
藤川:先ほどの川口さんの話にもありましたが、オープンソースの技術を使っている限りフリーライドしたくないと考えていて。そもそもPHPを使わせてもらってサービスを開発していて、PHPが廃れてしまったら我々のサービスの重大なリスクにもつながりますよね。そうであればPHPが長く繁栄するほうが我々にとってもメリットだし、カンファレンスのような新しいユーザーさんが訪れる場所で登壇もしてスポンサードもして業界やコミュニティを盛り上げることに積極的に関与したいですよねという考えが根底にあります。そこに対して投資をしてメリットがある技術かどうかを基準に判断しています。
質問:BASEは今後の負荷の対策について、マイクロサービスのように切り分けていくなどどのような方向にいきそうですか?
川口:いまは1つのサービスに全部乗っかっているので、大きな方向性としては切り分けていくのかなとは思っています。例えばフレームワークの刷新をする際に1日で切り替えられかというとそれは不可能で、徐々に切り替えられるようにしないといけないんだなと思っていて。負荷の観点というよりかはサービスの継続性や開発効率を考えてサービスを分けたり言語を変えたりする可能性はありますし、いまでもData StrategyチームとAPIの見直しを行っていたりして、その延長線上でいわゆるマイクロサービスと呼ばれそうなものになるのかなとは思っています。
ただ僕自身はマイクロサービスの運用知見があるわけではないので手探りなところはありますが、今後は実際に運用経験のある方にご入社いただくとか、社内のメンバーの知識の底上げをしていくとか、単純にエンジニアとしていろいろできるようになって技術選定も柔軟にできるほう方がみんな楽しいと思うので、ここはいま絶賛考え中です。
イベントレポートは以上となります!
イベントでもお話しさせていただいた通り、BASEはコロナの影響によってプロダクト作りでやるべきことがどんどん増えており、積極的にエンジニア採用をしています!
ご興味を持っていただいた方は、下記の募集をぜひご覧ください。