2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
LINEギフトのサーバーサイド開発(全1記事)
提供:LINE株式会社
リンクをコピー
記事をブックマーク
栗原由樹氏:ここからはLINEギフトのサーバーサイド開発について紹介いたします。まずは簡単に自己紹介をします。私は栗原由樹と申します。LINEギフトの開発チームのマネージャーをしています。
エンジニア歴は23年くらいで、LINEギフトの開発を担当して、およそ1年くらいになります。LINEにジョインして以降は、主にファミリーサービス、アプリの開発に携わっていまして、2013年にはLINEマンガのサービス立ち上げなども行なっています。
言語的には、もともとPerlのサーバーサイドのエンジニアだったんですが、その後iOSアプリやJavaのサーバーサイドの開発を経験していて、最近ではマネジメントもしています。
趣味はガジェット集めや、最近はモンハンライズをやっています。どうぞよろしくお願いいたします。
ではアジェンダになります。アジェンダはこのようになっています。まずLINEギフトについてご紹介したあとに、実際にどんなものを作っているのか。その後、サーバーサイドエンジニアの仕事の範囲や、どうやって業務を進めているのかなど。
また、LINEギフトが抱える課題などを紹介したあとに、最後に技術スタックや求めている人物像についてお話しようと思います。
ではさっそく、LINEギフトのご紹介をします。参加している人の中にも、もしかしたら利用したことがある方もいるかもしれませんが。LINEギフトはLINEの友だちにギフトが贈れるサービスです。
直近では累計ユーザー数が1,500万人を突破していて、LINEユーザーのだいたい6人に1人くらいが利用しているサービスに成長しています。2020年の年間総流通額で言うと、対前年比で250パーセントくらいの伸び率を達成しています。
これはコロナ禍ということもあって、なかなか直接会えない状況でもちょっとしたお礼をしたいというユーザーのニーズに、LINEギフトがマッチしていたのも一因ではないかと考えています。
利用ユーザーは20代から30代の女性が半数くらいで、主に誕生日やバレンタイン、クリスマスなどの季節イベントで利用してもらっています。
(スライドを示し)LINEギフトはこの中の左上のところですね。LINEアプリのところに位置しています。LINEギフトはLINE Platformの1つとして位置付けられていて、LINEアプリ上で動くものとなっています。
導線としてはLINEアプリのトーク画面のメニューであったりとか。あるいは、ホームタブというLINEの一番左のタブのサービス一覧というところにあったり。またはウォレットタブと呼んでいるんですが、一番右のタブからもアクセスできます。
このほかにも、ホーム画面に時折「友だちがもうすぐ誕生日だよ」って出てくるのをご覧になられた方がいるかもしれませんが、そこからもLINEギフトへの導線があったりします。
LINEギフトがどんなサービスなのかは、なんとなく理解していただけたかと思いますが、実際に私たちがどんなものを作っているのかについて、もう少し具体的に紹介します。
先ほど紹介したように、LINEギフトはLINEアプリとして提供していますが、関係図で言うと、このようなかたちになります。一番下にLINE Platformがあります。これはトークであったりとか、ソーシャルグラフを管理しているものになります。
その外側に、LINE上のWebアプリを管理するLIFF Platformがあります。LINEギフトはLIFF Platformの上で動いているサービスです。
LINEギフトなんですが、いくつかプロダクトを提供しています。それがこの3つのプロダクトです。一番左がエンドユーザーさん向けの、いわゆるLINEギフトサービスそのものです。
またLINEギフト上で商品を販売しているショップ向けのShop CMSというプロダクトもあります。こちらはAPIも提供していて、ショップの中には自社で在庫管理システムをお持ちの企業もいますので、そことシームレスにシステムをつなぐことも可能になっています。
この2つは、2015年4月にリリースされていて、現在で6年ほど運用しています。このシステムはPerlで書かれていて、のちほど紹介しますが、現在これをJavaに絶賛書き換え中です。
次に右側のeGift Platformですが、こちらはeチケットの発行管理をするためのプラットフォームです。eチケットというのは、例えばスターバックスさんやコンビニなどで、スマホの画面を見せて商品を交換することをやったことがある方もいるかもしれませんが、これはそのeチケットを発行するためのシステムになります。
大きな企業だと、自前でこのシステムを持っていたりするんですが、小規模のショップだと、そのシステムを自前で用意するのはなかなか難しいので、そういったお客さんに対して、気軽にeチケットを発行してLINEギフトで販売できるようにするためのシステムです。
さて、ここまではLINEギフトがどんなもので、どんなプロダクトがあるのかを紹介しましたが、ここでは実際にそういうプロダクトを作る中で、サーバーサイドエンジニアがどんな仕事をしているのかを紹介します。
サーバーサイドエンジニアがまずやらなければならないのが、フロントエンド向けのAPIや、バックエンドの処理の設計、開発になります。またリリースしたシステムやサービスで発生する運用業務も行なっています。そういった設計や運用の中で、関連する社内部署と技術的な調整や仕様のすり合わせなどを行うこともあります。
それ以外にも少しインフラに近いところで、サーバーの環境構築などもしています。LINEの社内には、Verdaと呼ばれるプライベートクラウドがあるので、基本的にはVerdaのWebUIでポチポチすることで、WebサーバーやデータベースなどのVMインスタンスを起動できます。
それに対して必要であれば、例えばAnsibleなどのツールを使って環境構築したりします。またシステムがリリースされたあとのメトリクスなどを監視したり、障害が起こった際にはその対応も行なったりします。
ちなみに障害の検知については、社内に別の監視専門チームがいまして、24時間監視しているので、夜間でもなにか起こったときには、そのチームから連絡をもらって対応することもあります。
こういった仕事の範囲の中で、現在LINEギフトでどのようなことを行なっているのかについて、少し具体例を紹介しようと思います。現在LINEギフトでは季節イベントのキャンペーンの開発であったりとか、新機能、追加機能の開発、あとユーザーからのお問い合わせに対する対応や関連する調査、そしてシステム運用などの定常業務を行なっています。
またこれに加えて最近では、先ほどちょっとお話ししましたが、LINEギフトシステムがPerlで書かれているので、これをJavaに書き換えています。そのほかにも社内や外部連携機能の設計、開発や、eGift Platformの新機能の設計、開発などもしています。
では私たちが実際どういうフローで業務を進めているのかについても説明しようと思います。ちょっとその前にチーム体制がどんな感じになっているのかについて紹介します。
LINEギフトの中のチーム体制は、このようになっています。私が所属するのは、中央にある開発になります。開発の中には、今日お話しているサーバーサイドのほかにも、フロントエンドや技術的な面でプロジェクト管理を行うテクニカルPM、また品質管理を行うQAチームなどがあります。
そして私たちが最もコミュニケーションを行うのが、図の左上にあるLINEギフトの事業を行っている事業部です。この中には多くのチームがいますが、その中でも特に企画チームとコミュニケーションを取りながらプロダクトを作っていきます。
なお、人数規模は多少違いますが、このチーム体制はほかのサービスもだいたい同じになっています。
サーバーサイドのメンバー構成は現在LINEギフトではこのようなかたちになっています。もともとLINEギフトは日本のチームで開発を行なっていましたが、前述のJava化やeGift Platformの開発をするタイミングでベトナムのLINEの子会社のエンジニアにもお手伝いいただいており、加えて協力会社さんも若干名います。
では実際にどのように業務を進めているのかを紹介しようかなと思います。基本的にはこのように左から右に、事業部側の企画チームから企画が立案されて、それが開発に降りてきます。
降りてきた内容を精査して、開発側で詳細設計や見積もり、あと必要に応じて社内の他の部署との調整を行なったあとに、開発を開始します。開発では実装後のプルリクを作成して、お互いコードレビューして、問題なければマージ。そして開発期間の最後にベータ環境でQAを行なって、問題がなければリリースします。
場合によっては、企画段階から開発が入ることもあるので、開発の業務範囲というのはかなり前段から、リリースとそのあとの運用まで、幅広くなっています。
ここまでLINEギフトの開発について紹介しましたが、実際LINEギフトではどんな課題があるのかをここで紹介しようと思います。
まず、やりたいことが多いというところです。先ほど最初のほうでお話ししましたが、LINEギフトは事業規模が急速に拡大していて、それに伴ってアクセス数の増加とか、新規開発案件も増えており、加えてJava化や運用保守業務というのを行うのがなかなか困難になってきています。
あと2015年リリースという話をしましたが、6年くらい経っているシステムなので、アーキテクチャがどうしても古くなっていることは否めないかなと思っています。なのでアーキテクチャを刷新したり、新しい技術を導入したり、またSREなどで安定稼働と運用改善などを行いたいと思っていますが、まだまだ人が足りない状態です。
またそれらのことを行いたいとは考えてはいるものの、そのノウハウや経験を持った人がまだまだ足りないというのも課題の1つになっています。
ここで1つだけ、どんな課題があるのかという例を紹介しようと思います。LINEギフトは、LINE公式アカウントからキャンペーン告知を行ったりします。行うんですが、そのキャンペーンがお得なキャンペーンだった場合は、一時的にアクセスが増えて、オーダー部分の負荷が増加します。
在庫引当が間に合わずにDB負荷が増加して、場合によってはDBが耐えられずにFailoverしたりすることもございます。これは原因としてはモノリシックな古いアーキテクチャが問題で。
そのへんを解決するためには例えばマイクロサービス化したりとかして、オーダー部分を切り離して処理を分散させたりしたいとは考えているんですけれども、なかなかそこまで手が回っていないという感じになっています。
また常に多くのオーダーがあるわけではないので、リソースを効率的に利用できるようにもしたいなと考えています。アクセス数や規模数もそこそこあるサービスにはなっているので、このへんをどうすればよいかを考えるのはチャレンジングであり、やりがいがあることかなとは考えています。
そろそろこのプレゼンも最後に近づいていますが、ここでLINEギフトの技術スタックについて紹介します。このような感じになっています。
使用言語としてはJavaとPerlになっていますが、今はJava化しているところなので、後々はPerlはなくなっていくのかなと思っています。フレームワークはJavaはSpring Boot、PerlはAmon2を使用しています。
データベースはMySQL、Redis、Memcached、あと検索でElasticsearchというのを使っています。メッセージキューですとKafkaや、これはPerlのものなんですけれども、TheSchwartzというのを使っています。
そのほかにNginxとか、Dockerとか、これはCIですがdroneであったり、プライベートクラウドのVerda、あとGitHub Enterpriseとか、IDEだとIntelliJ Ideaなどを使っています。
あとコミュニケーションですが、コミュニケーションに使っているツールはここに書いてあるようにSlackとかZoom、あとLINE、LINE WORKS。タスクマネジメントはJIRA、ドキュメントはConfluenceや、ストレージとしてBOXを使っています。
少し前にベトナムのメンバーもいるという話をしまして、使用しているコミュニケーション言語は基本的には日本語で問題はないんですが、一部のドキュメントやコミットログとか、あとSlackでの会話では、たまに英語を使う場合もあります。
ただ英語のテクニカルな文章とかがある程度読めれば、あとは翻訳ツールなどを使用することで基本的には問題なくコミュニケーションはできると思います。
最後に求める人物像について紹介したいと思っています。最初は、まさに今拡大しているサービスなので、そこに携わりたいという方がいたらぜひお願いしたいなと思っています。
あと、新しい技術が好きで仕方ない方や、アーキテクチャの設計や構築、最適化を考えるのが好きな方。あとJavaがもし書ければそのスキルを活かしたい方や、Javaが書けなくてもこれからやっていきたいと思っている方。さらにPerlをもし理解しているとさらに良いかなと思います。
あとは分散システムやシステムの改善、SRE、コンテナ化も含めてそのへんのワードを聞くとテンションが上がる方はぜひご応募いただけたらなと思っています。
LINEギフトについては以上になります。ご清聴ありがとうございました。
LINE株式会社
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05