ソフトウェアエンジニア (Distributed Service Platform - Kafka)【LINEプラットフォーム】

雇用形態
正社員
業務内容
★English follows★

近年LINEでは、サーバアーキテクチャを構成する上での中心的なコンポーネントとして、Apache Kafkaの採用を進めています。
LINE本体をはじめとして、多くのサービスが各サービスの状態変更をイベントとしてKafkaクラスタに送信しており、
当該サービスのイベントに協調して動作する他のサービスは、Kafka経由でイベントを受け取って処理するというモデルが広く採用されています。
既に世界でも有数の規模のKafkaクラスタ(> 1500億メッセージ/day)を運用していますが、Kafkaの採用事例は日々拡大し続けており、
さらなる人員が必要とされています。


【主な業務内容】
このポジションで採用された方はIMF(Internal Message Flow)と呼ばれるチームに所属し、
以下のようなエンジニアリングに従事することが期待されています。
・Kafkaクラスタの運用(モニタリング、日々のオペレーション、新規クラスタの構築)
・Kafkaの開発(バグの修正やパフォーマンス、オブザーバビリティ向上のためのパッチ)とOSSコミュニティへの還元
・サービスデータへの統一的なアクセスを実現するためのプロトコルやコンベンションの策定、整備
・サービスプラットフォームとしての使用性を向上されるためのライブラリやフレームワークの開発
・Kafkaを用いた分散処理システムの開発(Decaton - https://engineering.linecorp.com/en/blog/detail/80)
・Producer/Consumerの実装、またそのやりとりに用いるプロトコルの設計
・IMFの運用するシステムの使用者である他チームへのコンサルティング、サポート

ログ解析などの使途に用いられるデータを収集する目的でデプロイされるKafkaとは異なり、IMFで運用するKafkaや
その周辺サービスはサービス用途に用いられるため、弊社で運用されているミドルウェアの中でも最高レベルのReliabilityと
Availabilityが求められます。その実現のため、IMFでは多くの時間をKafkaの安定化のための運用や開発に費やしており、
過去には以下のようなコミュニティへの還元も行われてきました。

https://kafka-summit.org/sessions/single-data-hub-services-feed-100-billion-messages-per-day/
https://issues.apache.org/jira/browse/KAFKA-4614

このポジションで採用された方においても、同様の活動が奨励されます。

【チーム】
私たちのチームはLINEメッセージング機能のサーバー開発を責務とする部署に属し、業務上最も多く関わるコードやチームも、
LINE本体のサーバ開発に関わるものです。高いAvailabilityやReliabilityが求められるメッセージングサーバの開発に関われる一方で、
我々のプラットフォームの利用者は全社に渡って存在しているため、多くのチームと関わりながら仕事を進めることになります。
重要なプロジェクトであるため、少数ですが高いスキルを持ったメンバーによってチームが構成されています。

In recent years, Apache Kafka has been widely adopted as the central component to our server architecture.
Starting from LINE(messaging service), many our services are sending their state update as events to our Kafka cluster,
and other services needs to cooperate with that service are receiving events from Kafka to process them for their needs,
and this model has been adopted widely. We are already operating one of the world most eminent Kafka clusters
(> 150 billion messages /day), but Kafka's adoption is expanding daily so we need more people work together with us.

【Responsibilities】
Prospective candidates applying for this position will join the Internal Message Flow Team/Project (IMF) and will be expected to perform the following functions:
・Operate Kafka clusters(Monitoring, daily operations, constructing new clusters)
・Develop Kafka(Bug fixes, patch for improving performance and observability) and contribute outcomes to OSS community
・Develop and maintain protocols and conventions to let application developers access service data in the consistent way
・Develop libraries and frameworks to improve usability of Kafka as a service platform
・Develop distributed processing system using Kafka(Decaton - https://engineering.linecorp.com/en/blog/detail/80)
・Develop producers, consumers and protocol that defines data format between them
・Consulting and supporting for other teams who uses IMF's system

Kafka clusters and surrounding services that are operated by IMF are required to provide highest availability and
reliability even amongst middlewares operated at LINE, because unlike Kafka clusters that are used for collecting data
for log analysis for example, these are used for service purposes.To accomplish that requirement,
IMF has been spent a lot of time developing and operating Kafka's stability, which led us to contribute outcomes
like below to the OSS community.

https://kafka-summit.org/sessions/single-data-hub-services-feed-100-billion-messages-per-day/
https://issues.apache.org/jira/browse/KAFKA-4614

Candidates are encouraged to work on such activity.

【Team】
Our team belongs to the department which is responsible for developing LINE's messaging function, hence we work mostly
with code and team of LINE core's server development. While you can work for development of messaging server which is required
to be highly available and reliable, you will also work with many teams as our platform is being used widely by users
across the company. Since IMF is considered as an important project, few but highly skilled members are working in this team.
応募資格
★English follows★

【必須条件・スキル】
- 分散ミドルウェア(特にApache Kafka)に対する興味がある方(Apache Kafkaの使用/運用経験は問いません)
- 自分の開発物に対し一定のこだわりを持ち、クオリティを高めていくことに妥協しない方
- 自律的立場(自ら開発を計画し、推進を行う立場)での開発の経験と能力
- Java/ScalaなどのJVMベースで動作する言語による開発を問題なくできる方
- Unix系OSで動作するシステムで、コマンドラインを用いてデプロイやトラブルシューティングを行なった経験

【歓迎する経験・スキル】
- Apache Kafkaを使用、運用、開発した経験
- Unix系OS(特にLinux)に対する深い造詣(実際の問題解決のためにLinuxのカーネルソースコードを読んだことがある等)
- 高いAvailabilityやReliabilityが求められる状況下でのシステム開発または運用した経験
- Javaによる高いコードデザインスキル、プログラミングスキル
- OSSのコードを読み、動作を理解、また必要な修正を加えた、またそれをOSS upstreamに還元した経験
- Unix系OS(特にLinux)で動作するアプリケーションやミドルウェアに対してパフォーマンスの調査や改善を行なった経験
- データベースや分散キューのようなミドルウェアのの内部実装に関わる開発の経験
- JVMの内部構造やGCに関する理解、チューニングの経験
- コンピュータサイエンスもしくは関連分野の修士/博士学位

【言語】
- 日本語:業務推進が可能なコミュニケーション能力
- 英語:読み書きが可能なレベル


【Required Skills】
- Strong interest in distributed middleware(especially Apache Kafka).
It is not required to have experience in using or operating Apache Kafka
- Has certain commitment on quality of your outcome, and do not compromise for improving it's quality
- Self directive (Plan development by yourself and proceed it by yourself)
- Can develop with JVM based language such as Java and Scala
- Experienced in deploying, troubleshooting on Unix-based operating system using command line

【Preferred Skills】
- Experienced in using, operating or developing Apache Kafka
- Deep understanding of Unix-based operating system kernel(especially Linux).
Has been read Linux kernel source code for tacking the actual problem for example
- Experienced in developing or operating system that is required for high availability and reliability
- Outstanding skill of code design, programming with Java
- Experienced in reading, understanding and patching OSS's code, and contributed it back to OSS upstream
- Experienced in performance engineering application or middleware running on Unix-based operating systems
- Experienced in developing Database or distributed queue
- Understanding of JVM's internal and/or GC algorithm and experienced in tuning it
- M.S or D.S of Computer Science or related field

【Language skills】
- Japanese skills of working proficiency is required.
- Basic reading and writing skill of English is required.
勤務地
新宿オフィス
〒160-0022 東京都新宿区4-1-6 JR新宿ミライナタワー23F
勤務時間
10:00~18:30(実働7時間30分)
待遇 / 福利厚生
【休日/休暇】
完全週休2日制(土・日)、祝日、年次有給休暇、年末年始休暇、慶弔休暇、
リフレッシュ休暇制度(勤続5年で10日間)

【給与】
年俸制
-保有されるスキル・経験・能力により優遇、相談の上で決定
-別途、インセンティブプラン有

・諸手当:交通費全額支給、LINE Pay Card Benefit Plan(※)
・給与改定:年2回
・インセンティブプラン:年2回
※社員の「健康維持増進」「自己啓発」「次世代育成」を目的として給与とは別に支給する手当です。

【福利厚生】
◆各種保険
雇用保険、労災保険、健康保険、厚生年金保険

◆福利厚生
定期健康診断、各種社内イベント他

その他詳細は面談の際にお伝えします。
Other details will be informed at the interview.