LINE証券のSRE

龍本悠平氏:では、LINE証券のSREについて紹介いたします。

まず本日紹介する内容ですが、この5つ話題について、お話ししたいと思います。まず、最初は自己紹介します。そのあと、LINE証券の事業について紹介をしたいと思います。次に、LINE証券で実際にSREがどのような役割を持っているのかについてお話しいたします。

また、現在のLINE証券では、どういう技術を使ってサービスを実現しているのかとか、どういうプラットフォームを運用しているのかについてお話しします。最後に、実際にLINE証券のSREとして日々どういう業務をやっているか、日々の仕事はどのように進めているのかを説明したいと思います。

まず、自己紹介ですが、私は龍本悠平と言います。現在、フィナンシャル開発センターの証券SREチームでマネージャーをしています。軽く略歴を話しますと、2015年に新卒で独立系のSIerに入社しました。その際に、金融、暗号資産や証券取引所などの開発やPMをやっていました。

その後、2019年にLINE株式会社に参画し、取引所取引の開発をしていました。2020年から、証券SREチームに合流しまして、運用および運用の改善、または開発もやっています。

さて、LINE証券はどんなサービスなのか説明したいと思います。LINE証券は、ご存知の方も多いと思いますが、LINE Financialと野村ホールディングスによるジョイントベンチャーです。主なサービスは、スマホを利用した投資サービスを提供しています。既存の投資サービスと一番大きく違う点としては、投資をこれまで参入障壁が高かった方々に、資産形成などをわかりやすく提供するとことを主な目的としています。

これまでのLINE証券

これまでのLINE証券のサービスですが、LINE証券は2019年8月に「いちかぶ」という、1株から取引できるサービスから開始いたしました。リリースして2年ほど経ちますが、最近ではiDeCoやIPOなどのサービスも開始しています。

ではサービスの紹介はこれぐらいにして、LINE証券の現在のシステム規模について、お話ししたいと思います。総口座数は、2021年8月現在約80万口座です。また、リクエスト数のピークは秒間1万リクエストにのぼります。

稼働しているサービスを動かしているコンテナの数は、約461コンテナになっています。稼働ノード数、つまりVMやフィジカルマシンのノード数は136ノードとなります。公式アカウントと比較をすると、だいたい10分の1ぐらいのプラットフォームですが、それでもスループットはかなり多くて、特にピーク時は捌ききるのがかなり難しい状況になっています。また、日々ユーザーやサービスも増えており、平均して月に10コンテナほど増加しております。

LINE証券のSRE

では、次はLINE証券の中でのSREチームの立ち位置についてお話しします。まず、組織ですが、LINE株式会社の中に、フィナンシャル開発センターがあり、さらにその中に開発1室があります。この開発1室が、LINE証券の開発を実際に行なっている部署です。その開発1室の中に、証券SREというチームがいます。それが自分が所属するLINE証券のSREチームです。

また、こちらの図で黒い背景になっている部分が、証券SREチームが主に関わっていくチームとなります。例えばインフラチームであったり、開発1室にある開発チーム、そしてLINE証券株式会社にある運用チームなどとも日々話しながら、サービスの改善などをやっています。

それでは、各チームと普段どのように関わっているかについて話をします。まず、開発チームとは基本的に開発プロセスの改善や最適化などを提案しています。それ以外にも、リリースプロセスの改善なども行っています。運用チームとは、運用作業を自動化だったり、障害検知・調査の支援や関連するツールの提供や開発をしています。

インフラチームとは、インフラ作業の軽減ができるようなプラットフォームを作ったりするのが主な関わり方です。また、開発チームの方がインフラの、例えばネットワークの知識だったりが不十分な場合とかは、間に立ってコミュニケーションの補助などもしています。

では具体的にどういうことをしているのかというと、開発については、アプリケーションのデプロイ基盤や実行基盤、いわゆるコンテナオーケストレーション基盤などを設計したり、運用や構築をしたりしています。

また、金融事業会社特有な事情としては、さまざまな外部システムと接続する要件が多く、さらに、それぞれの外部システムがかなり独自な仕様を持っていることが多々あります。そこで、それらの要件を吸収するためにプラットフォームやツールなども開発したりしています。

運用チームとの関わりについては、よくやられるメトリクスなどのログを収集する基盤の構築などがメインとなっています。また、収集だけではなく、例えば、「サーバーのリソースが足りなくなりそうになる」ような問題に対する予測や対処なども実施しています。

インフラに対しては新機能を作ったりする際に、例えばサーバーの調達の事前調整だったり、あとはネットワークまわりの設計を手伝っています。

LINE証券の技術スタック

それでは、現在使用している技術スタックなんですが、LINE証券独自のアプリケーション実行基盤について紹介したいと思います。

紹介する前に、まず、なぜLINE証券が独自のアプリケーション基盤を構築しているのかの理由について説明いたします。金融サービスを提供している影響で、LINEのプライベートクラウドを使いたくても、データセンターの事情やコンプライアンスによる自主規制のために、使用できない事情があります。しかしながら、レガシーな基盤やデプロイシステムでは、リリースサイクルが遅く、LINEの競争力を発揮できません。それらを回避するために、LINE証券では独自のデータセンターの中でサーバーを運用し、さらにその上にコンテナオーケストレーション基盤を構築しています。

しかしながら、なかなかKubernetesのような大規模なコンテナオーケストレーション基盤をLINE証券のリソースだけで運用したり、利用したりするのが難しいのが現状です。そこで、よりコンパクトなコンテナのオーケストレーション基盤として、HashiCorp社のNomadをLINE証券では使っています。

あまり聞きなれていない方が多いかと思いますが、こちらもKubernetesと似たようなコンテナオーケストレーションの実行基盤となっています。ただ、Kubernetesと違い、基盤の機能が独立しています。例えば、コンテナのオーケストレーションと実行はNomadが特化しています。あとはKVの管理やサービスディスカバリーなどはConsulを、機密情報やシークレットの管理はVaultを使っています。また、サービスメッシュなどはConsulとEnvoyを連携して使っています。

さて、実際のデプロイの流れについて解説していきたいと思います。まずは、Ansible TowerでAnsibleを実行します。Ansibleの中身は、Nomadに「サーバープールにコンテナをデプロイしてください」と設定されています。それをNomadが受け取ると各サーバーで起動しているNomadClientに指示が飛びます。こうして、各サーバーコンテナが実行されていく流れになっています。

では次に、コンテナ以外の部分である、ログ監視基盤についても紹介したいと思います。こちらも同じようにログ上にLINE証券の、例えば取引データなどの情報なども載ってしまうので、そちらもLINEのプライベートクラウドのような共通基盤に共有できないため、独自の基盤を構築しています。

実際の中身としては、Dockerのlog-driverからjournaldを経由して、Fluentdを使ってログをElasticsearchに飛ばしたり、Zabbixに飛ばしたりしています。そのあとKibanaでログを確認したりSlackでアラートを出したりするツールなども独自で作っています。メトリクスについても、独自のPrometheusを運用していて、そのPrometheusを使ってメトリクスを監視したりしています。LINE証券で使っている技術は、以上となります。

LINE証券の開発の一日

では、リモート勤務での1日の流れとを紹介いたします。まず10時から10時半ぐらいにリモート勤務を開始して、午前中は基本的にミーティングやレビューなどを実施していたりします。昼食の時間にその日の市場の出来高や、さまざまなニュースや情報をチェックをしたりしています。

午後は、これは通常業務の場合もあれば、リリースを実施したりすることもあります。ちょっと特殊なものとしては、LINE証券サービスは基本的に9時から15時までが取引のメインの時間帯になりますので、15時以降にしかリリースできないことがほとんどなので、この時間帯にリリースを実施しています。

15時から16時の間にリリースなどが終わった後は、ミーティングなども入ったりします。また、個人的には、よく午後は改善のアイデアなどを書き出したりしています。そのあと夕食を取って、基本的に19時半ぐらいにだいたい一日の業務が終わりますが、たまに勉強会をしたり、あとは自己学習している時間も取っています。

どんな人がLINE証券のSREチームに向いているのか

最後に、どんな人がLINE証券のSREチームにおすすめなのかという一例を紹介したいと思います。金融システムにちょっと関わってみたいという方にはおすすめしています。なぜなら、LINE証券はかなり技術に明るい方も多くて、かつ調整ごともかなりやりやすく、特に金融関連の部署の方との関係性もとても近いです。なので、エンジニアとして、金融サービスに関わりやすい会社かと思っています。

あとは、SREのお仕事としては、裏方、縁の下の力持ちみたいな仕事が多いので、そういうところに抵抗がない方にもおすすめしています。また、さまざまな部署の間に立って、調整ごとも多いので、そこらへんに抵抗がない方が良いかなと思います。技術的な面については、他の方にも共通するのですが、自分たちで基盤を運用しているので、難しい課題の解決をしないといけない部分が多く、そのような課題を解決したい方にはおすすめしています。

どういうスキルがあったほうがいいのかというと、特定のスキルに対して「これがあってほしい」というのはなくて、逆に新しい技術に対してどんどんキャッチアップできる方。しかも、短期間で深いレベルでキャッチアップできる方などが合うかなと思っています。あとは、基盤を運用していく上で課題がどんどん発生してくるので、そういった課題を自分で見つけ出せる方が良いかなと思います。

また、LINE証券はいろいろな部署があり、他部署との関わりも多いので、他の部署にガンガン飛び込めるような方とかもよいかと思います。最後に、一番基礎的なところではありますが、ロジカルに課題などを整理できるスキルは重視しています。

以上となります。みなさまありがとうございました。ぜひ応募をお待ちしています。