Category Archives: Back-End

サーバーサイドKotlinの知見/KotlinでClova Skill Award挑戦

はじめに

LINE Engineering Blogをご覧の皆さまこんにちは!今日の記事は2名の連名によってお送りします。LINEでゲームプラットフォームを開発しているKagayaと、ライブ配信サービスLINE LIVEのAndroidアプリを開発しているakiraです。こちらはLINE Engineering Blog「夏休みの自由研究 -Summer Homework-」の9日目の記事です。

LINE Developer Meetup #38【京都】 参加レポート

こんにちは。LINE FukuokaでiOSエンジニアをしているはるふです。

去る6月22日(金)、新しくオープンしましたLINE KYOTOにてLINE Developer Meetup #38を開催しました。
テーマは「ニッチ言語」ということで、Swift(Server-side), Elixir, Clojureという3つの言語について、実際に使っている方々からの、紹介を兼ねてのセッションでした。
自分も参加してきましたので、そのレポートをお届けします。

RedisConf18登壇レポート

こんにちは。LINEのRedisチームのJongyeol Choiです。LINEでは、各サービスで様々なストレージシステムを使用しています。たとえばメッセージングサービスではRedis、HBase、Kafkaといったオープンソース・ストレージシステムをたくさん利用していますが、中でも私が担当しているのはRedis関係の開発です。その業務の一環として今年4月26日、米サンフランシスコで開かれたRedisConf18に発表者として参加し、「Redis at LINE, 25 Billion Messages Per Day」と題して発表を行いました。今回の記事では、発表の準備から発表への反応、そしてカンファレンスの雰囲気などをお届けします。

RedisConf18 Venue

API the Docs参加レポート

はじめに

こんにちは。テクニカルライターのSerizawaです。LINEには、エンジニアが最新の技術動向を把握できるよう、海外で開催されるカンファレンスに会社負担で参加できる制度があります。今回の記事では、その制度を利用して参加してきたAPIドキュメンテーションのカンファレンス「API the Docs」の様子をご報告します。

API the Docsは、テクニカルライター、API開発者、プロダクトオーナー、エバンジェリスト向けに年に数回世界各地で開催されている、APIドキュメンテーションに特化したイベントです。デベロッパーエクスペリエンスの重要な要素であるドキュメンテーションについて、最新のベストプラクティスやトレンドについて知見を共有し、意見を交換する場になっています。

LINE Game Cloudの例に見る関数型言語の特徴

こんにちは。LINEでゲームプラットフォーム開発を担当しているジュニア開発者のBusung Kim、Jaeho Leeです。LINE Game Cloudが関数型プログラミング言語の一つであるClojureで実装されているのを見て、関数型言語に興味を持つようになりました。本記事では、LINE Game Cloudの例に見る関数型言語の特徴をいくつかご紹介したいと思います。

LINE Game Cloudと関数型プログラミング言語

LINEは、グローバルにゲームサービスを安定して提供するため、LINE Game Cloudというクラウドベースのゲームサーバープラットフォームを構築・運用しています。LINE Game Cloudは、サービスのグローバル化やリリースプロセスの自動化を目指して始まったプロジェクトです。現在、同プラットフォームを通じて世界各地のユーザにゲームサービスが提供され、サーバーの自動手配、L4/L7ルーティング、DNS、自動スケールといった対応が行われています。プロジェクトの詳細については、下記ページからご確認いただけます。

25K request/secをさばいた「LINEのお年玉」のアーキテクチャの裏側

みなさんこんにちは、LINEのサーバーサイドエンジニアの長谷部です。普段は、最近でいうとLINE LoginLINE Customer Connect などの開発を担当しています。

2018年の年始に LINEのお年玉 というイベントを実施し、その開発を担当しました。今回の記事では、LINEのお年玉のアーキテクチャの紹介や、当日実際に発生した問題(サービス過負荷起因のkafka consumer遅延)などの振り返りについて書こうと思います。

Prometheusをサービスとして提供する

こんにちは。LINE Fukuoka開発チームのPaul Traylorです。LINEファミリーアプリを支えるたくさんのサーバーのモニタリングを担当しています。この記事はLINE Advent Calendar 2017の25日目の記事です。

ほとんどの開発者にとって興味深いことといえば、コード作成や新機能の追加ではないかと思います。しかし機能が正常に動作しないときは、原因がわかれば役に立ちますよね。とはいえ、開発者が自分自身でモニタリングの設定を行うのは、そう簡単ではないときもあります。そこで私は、最高のパフォーマンスのためあらゆるサービスをモニタリングできるように、モニタリングの設定管理を簡単にすることに取り組んでいます。その一環として開発されたのが、Prometheusの設定を管理するためのツールであるPromgenです。これを利用すれば、モニタリングターゲットを簡単に登録したり、担当サービスのアラートを購読したりできます。

モニタリングの設定

ほとんどのサービスは導入時にはシンプルで小規模なものですが、時間が経つにつれ、数百台のサーバーにまたがる数十ものコンポーネントで構成されるようになります。そうした中でモニタリングを設定するのは容易なことではありません。そこでPromgenは、あらゆる設定を1箇所でまとめて行い、一目で確認できるように開発されました。

targets

レイテンシーを計算する技術の話

こんにちは、LINEメッセンジャーのサーバーサイドとモニタリングプラットフォームの開発を担当しているフィ(@dxhuy)です。この記事はLINE Advent Calendar 2017の20日目の記事です。

今日は、モニタリングシステムでよく使うレイテンシーやその計算方法などについて紹介したいと思います。LINEでは、日々ユーザが楽しくメッセージを送れるように、システムの安定性を第一に考えています。安定したシステムを保つためにたくさんの指標を見守る必要がありますが、その指標の1つが「レイテンシー」です。

ウィキペディアでは、レイテンシーは以下のように定義されています。

デバイスに対してデータ転送などを要求してから、その結果が返送されるまでの不顕性の高い遅延時間のこと

インターネットサービスにおいては、レイテンシーは基本的に「レスポンスタイム」のことです。つまり、リクエストを受けてからレスポンスを返すまでにかかる時間がレイテンシーです。

Redis Lua scriptingをatomicな処理とcache stampede対策に使った話

こんにちは。LINEでゲームプラットフォーム開発をしているKagayaです。この記事はLINE Advent Calendar 2017の18日目の記事になります。昨年新卒入社1年目で執筆した「マイクロサービスのためのプロジェクト生成ツールLazybonesを使ってみた」に引き続き、今年もAdvent Calendarの記事を書くことになりました。よろしくお願いします。

はじめに—RedisとLINE GAMEプラットフォーム

LINE GAMEプラットフォームでは、インメモリNoSQLデータベースであるRedisをメインデータベースの1つとして利用しています。キャッシュとしての利用が多く、例えば、LINEやFacebookなどのアカウントで認証を行っているユーザのソーシャルデータ(プロフィールや友だちリストなど)のキャッシュに利用しています。基本的にはRedis Clusterとして利用しており、開発環境では共通のクラスタを、本番環境ではゲームごとに独立のクラスタを組んで運用しています。

大規模サービスLINE LIVEのためのエンコーダレイヤ構造と悩んだこと

はじめに

こんにちは。LINE ITSC所属のエンジニア、Kim Suhyukです。これはLINE Advent Calendar 2017の16日目の記事です。

先日12月10日に、LINE LIVEサービスがリリースされてからちょうど2年が経ちました。リリース以来障害なく運営できて、とてもよかったと思っています。私はライブメディアサービスの構築や運営の経験がなかったため、今回の記事では、設計や構築を始めるときに悩んだ点についてまとめてみました。

背景および課題

LINE LIVEは、いつでも誰でもライブ配信できるサービスとして、予測を超える数のユーザーが利用したとしても円滑にライブを配信・視聴できる必要があります。そのため、以下の条件を満たす構造が必要と考えました。