Server Side

LINEのOpenJDK導入レポート:互換性の確認から注意事項まで

こんにちは。私は、Service EngineeringチームでSRE(Service Reliability Engineer)の業務を担当しているYongChan Kwonです。チーム名や業務名から分かると思いますが、一つの業務を担当するよりは、サービスのライフサイクルにおいてインフラ、開発、サービス技術の間で発生しうる死角を補う役割を担っています。

2018年、オラクルのライセンス体系が変更され、2019年1月以降は無料でOracle JDKを使用できなくなりました。そこで、LINE内部ではOpenJDKへの移行に向けて必要事項や検討項目を事前にまとめるため、TF(task force)を立ち上げました。また、その作業内容や技術のことについてまとめるためにこの記事を書くことにしました。

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

はじめに

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

RedisConf18登壇レポート

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

RedisConf18 Venue

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、自動スケールといった対応が行われています。プロジェクトの詳細については、下記ページからご確認いただけます。

HBase Cross Row、Cross Tableトランザクション処理機能を実装してみました

こんにちは、LINEでGame Platformを開発している 趙 です。

この記事はLINE Advent Calendar 2016の9日目の記事です。

LINE Game Platformでは分散型でスケーラブルな高速データベースであるHBaseをメインストレージの一つとして使っています。HBase運用における問題のひとつは、cross row, cross tableトランザクション処理機能がない事です。Client Faultなどが起こった時の対応が難しいです。(例えば、HBaseにテーブルAとBがあり、ABの順番にデータを処理する場合、もしAの挿入の後にBの挿入に失敗した場合、データ不整合が起きます)

HBaseは幾つかの単行atomic apiを提供します。(HBase versionによって違うところがあります)

Elasticsearch を検索エンジンとして利用する際のポイント

こんにちは、LINE でスタンプ・着せかえショップのバックエンド開発をしている川田 (@hktechno) です。

この記事は、LINE Advent Calendar 2016 の 6 日目の記事です。

今年の4月に、Java も Elasticsearch もまともに知らなかった新卒エンジニアが Elasticsearch クラスタの管理を突然任されて苦労した話をしようと思います。

Elasticsearch とは

Elasticsearch は、Elastic 社が開発している検索・分析エンジンおよびそのストレージを担うソフトウェアです。簡単に言えば、検索に特化したクエリを投げることができるデータベースのようなものです。No-SQL 型の DB といっても良いと思います。

Elasticsearch のすごいところは、大量のドキュメントの中から形態素解析や n-gram など自然言語的な解析を行った上で、素早く検索クエリを処理でき、かつノードを増やすことで簡単にスケールアウトすることができることです。最近では、Elasticsearch は様々なログの収集・分析にも使われるようになっていて、どちらかと言うとログ収集で苦労した話が多いと思います。ちなみに、私の所属しているチームでは、ログ収集・メトリック分析ツールとしても Elasticsearch を利用しています。

文字数をカウントする7つの方法

こんにちは、LINE+開発室のパク・サンジン(SJ)です。

今回は、文字数をカウントする方法についてお話したいと思います。LINEサービスではプロフィール名やグループ名、ひとことなど様々なところで文字数をカウントしていますが、画面で文字が短すぎたり長すぎないようにし、ストレージ容量を正しく割り当てるためには、文字数を正確にカウントすることがとても重要です。特に、LINEは全世界で使っているサービスなだけに他言語の文字数も正確にカウントできなければなりません。 ある日、BTS(Bug Track System)のプロフィール名にemojiを入力すると1字が2字で表示されるといった、文字数が正確にカウントされないという課題が登録されました。emojiとは、日本で使い始めたもので、今ではUnicode標準に含まれ世界的に広く使われるようになった絵文字セットのことです。最初は、単純にSurrogateカウントエラーの問題だと思い分析し始めました。Surrogateとは、UTF-16エンコードを16ビット以上に拡張させる文字セットのことですが、emojiにはSurrogateで表現する文字があるからです。しかしよく見ると、実際にはSurrogateとは関係のない2文字が入力されていることが確認できました。ということは、「emojiの後ろに共通的に追加されるcharacterがあるのでは」と思い、そのルールを探し出して例外処理をしようと考えていました。が、さらに他の課題が登録されてきました。

LINEのマイクロサービス環境における分散トレーシング

LINEとマイクロサービス

LINEのアプリは、トークをはじめとして、電話、ショップ、公式アカウントなど、多数のサービスで構成されていますが、これらのサービスはモノリシックな単一のシステムとして開発されているわけではありません。それぞれ独立したシステムとして開発・運用され、お互いにAPIを介してコミュニケーションする、いわゆるSOAやマイクロサービスと呼ばれるアーキテクチャになっています。

本エントリでは、大規模なマイクロサービス環境において、システムのトレーサビリティを向上させるためのLINEバックエンドの取り組みを紹介します。

LINE Serverの開発とリリースプロセス

皆さんお元気ですか?LINEサーバー開発室でサーバ開発を担当している崔珉秀と申します。

この記事ではLINEのサーバーの開発とリリースプロセスについて述べたいと思います。
LINEの開発者はどんな形で開発しているのか、サービスに変更事項をどのように適用しているのか、お互い協力してより良い開発環境を得るためにどんな努力をしているのかをお伝えする機会になったらいいなと思います。