LINE テクノロジー&エンジニアリング大全

「Verda」――LINEが独自に開発したNATサービスの裏側

この記事を読むのに必要な時間:およそ 3 分

インタビュイー

LINE ITSC Verda Network Development Team シニアソフトウェアエンジニア 城倉弘樹(右)

画像

Hyperscale distributed NAT system and software engineering
(LINE DEVELOPER DAY 2020)
URL:https://linedevday.linecorp.com/2020/ja/sessions/2076

LINEのプライベートクラウドである「Verda」のネットワーク開発を担うシニアソフトウェアエンジニアである城倉弘樹氏は,⁠LINE DEVELOPER DAY 2020」において,⁠Hyperscale distributed NAT system and software engineering」のタイトルで講演しました。そこで解説されたNATサービスを開発した背景や利用した技術,得られた知見などについて,城倉氏にお話を伺いました。

LINEがプライベートクラウドでサービスを運用する理由

――LINEで使われている「Verda」はどのようなインフラなのでしょうか。

城倉:LINEの多くのサービスは,Amazon Web Services(AWS)やGoogle Cloud Platform(GCP)といったパブリッククラウドサービスを使うのではなく,LINEの社内で構築したプライベートクラウドを利用して運用しています。そのプライベートクラウドの名称がVerdaで,2016年ごろからプロジェクトをスタートしました。

VerdaはLINEのさまざまなサービスで利用されている

VerdaはLINEのさまざまなサービスで利用されている

ベースとなっているのは,クラウド基盤に必要な機能を実装したオープンソースソフトウェアであるOpenStackです。このOpenStackには,仮想マシンやネットワーク,DNSなどの機能やメカニズムが搭載されていますが,それに我々が必要な機能を追加したり,あるいはLINEで求められるビジネスロジックをバンドルしたりして提供しています。

それに加えて,Kubernetesやデータベース,メッセージング,ファンクションサービスといった追加のサービスも同様に提供しています。こうした機能をマネージドに提供することも,プライベートクラウドの開発に携わる私のチームが中心となり対応しています。このように,OpenStackだけでなくさまざまな追加のサービスも提供しているプライベートクラウドがVerdaです。

また独自に開発している機能もあり,たとえばロードバランサやベアメタルサーバの機能などはVerdaチームの中で開発を行いました。また今回新たに提供を開始したNAT機能も内製です。このように,必要な機能を独自に開発していることもVerdaの特徴です。

――パブリッククラウドを使わず,プライベートクラウドを独自に構築した理由を教えてください。

城倉:まず費用的な面があります。AWSなどのクラウドサービスには数多くの機能がありますが,必要のない機能を省いてシンプルな形にすれば,低コストでクラウドを実現することができるという考え方からVerdaプロジェクトはスタートしています。

2つ目のポイントは,ユーザニーズへのきめ細かな対応です。内製であれば,サービスを開発しているエンジニアの声をダイレクトに聞くことができて,細かいニーズに合わせて機能を提供したり,カスタマイズすることが可能になります。こうしたエンジニアのニーズに基づいた開発を,より幅広く,かつ迅速に行えるのはプライベートクラウドの強みであると考えています。

数万台のVMが収容する大規模NATの開発

――NATサービスを開発することになった背景を聞かせてください。

城倉:当初,Verdaはすごくシンプルにインフラの機能を提供していました。このシンプルがゆえの課題があり,それに対処するためにNATを開発する必要性が生じました。

具体的に言うと,Verdaを使ってさまざまなサービスが運用されていますが,一方で強いアイソレーションは行っていません。パブリッククラウドであれば,テナントごとにネットワークが分離されていて,相互に接続できないようになっています。これに対してVerdaは,すべてのVMが1つのネットワーク上に存在しています。ネットワークを終端するような機器もなく,すべてのVMが直接インターネットにつながる構成になっていました。

このような構成であるため,インターネットに接続する際にはそれぞれのVMがパブリックIPアドレスを所持している必要があります。たとえば外部にデータをアップロードするサーバーが32台いれば,そのためにパブリックIPアドレスを32個も消費してしまうことになります。このように,現状の構成ではパブリックIPアドレスを大量に使ってしまうという問題がありました。

またファイアウォールのような機能を,特定のプロジェクトごとに提供するといったことが難しいことも課題でした。現状は1つのファイアウォールをすべてのサービスで共有するといったデザインになっているため,今後さらにサービスが増えていくと厳しくなるのではないかと考えていたこともポイントです。

これらの課題に対し,パブリックIPアドレスの枯渇を回避するためにNATサービスを提供しようということになり,さらにファイアウォールやアクセスコントロールの機能などを提供できるNATサービスがあれば,個別にファイアウォールの機能を提供するなど,今後のインフラにおける機能拡充にも対応することが可能になります。このような背景から,独自にNATサービスを開発することを決めました。

――今回のプロジェクトを進めるにあたって,意識したことはどういったことでしょうか。

城倉:パブリッククラウドやOpenStackのNATサービスは,アイソレートされたネットワークでNATが使えるようになっています。しかしVerdaはすべてのプロジェクトのVMが1つのネットワークを共有しています。そのVMはリージョンごとに数万台存在します。それだけの数を収容できるNATメカニズムを作る必要がありました。

ネットワークの文脈では,キャリアグレードNATと呼ばれる大規模NATもあります。これはネットワーク的に要求の高い技術であり,それを自分たちでクラウドに最適な状態で作らなければならないというのは,メカニズム的に難しい面があると感じていました。

こうした大規模NATは,グレイスフルなフェイルオーバー機能を持ったNATです。全体的に見てアクティブ-スタンバイで動作し,グレイスフルなフェイルオーバーが起きたときは100%のユーザーが影響を受けます。これはあまり嬉しくありません。

これに対し,クラウドなどモダンな仮想インフラは,壊れることを許容してシステムを構成できるようになっています。ただ,壊れることは許容しているけれど,壊れたときに100%影響を受けます,たぶんうまくいくけれどもたまに失敗することもある,といった形は怖くてやりたくない。そこで,壊れたとしても影響を受ける範囲,いわゆるブラストラディウスを小さくしていくことができるようにしなければならないという問題意識がありました。

著者プロフィール

川添貴生(かわぞえたかお)

株式会社インサイトイメージ代表取締役。企業サイトの構築及び運用支援のほか、エンタープライズ領域を中心に執筆活動を展開している。

メール:mail@insightimage.jp


馮富久(ふぉんとみひさ)

株式会社技術評論社クロスメディア事業室室長。

1975年生まれ。横浜市出身。1999年4月株式会社技術評論社に入社。入社後から『Software Design』編集部に配属され,2004年1月に編集長へ就任。同2004年9月に『Web Site Expert』を立ち上げ,同誌編集長に就任,現在に至る。その後,2008年9月に設立したクロスメディア事業部(現クロスメディア事業室)に配属。現在,社外活動として電子書籍を考える出版社の会の代表幹事やWebSig 24/7のモデレーター,TechLIONプロデューサーなども務める。過去にIPAオープンソースデータベースワーキンググループ委員やアックゼロヨン・アワード他各賞審査員などの経験を持つ。

Twitte ID:tomihisa(http://twitter.com/tomihisa/