Mobage Open Platform
Mobage Open Platform(以下Platform)を運用をしているチームについて紹介します。
Mobage は ユーザーとデベロッパーに対しプラットフォームサービスを提供しております。15年以上運用している実績があり、DeNA の提供する事業の大きな柱を担っているサービスでもあります。
組織には自社開発の数多くのバックエンドサービスがあります。ユーザーにエンターテインメントの場所を提供し価値を届けるためには運用やセキュリティ・保守といった開発以外の広い視野と経験も必要になります。非効率な運用の再設計・効率化や、ブラウザやクライアント/ OS の最新アップデートなどに柔軟に対応しプラットフォーマーとして高い技術力を発揮するのが Platform チームです。
チームカルチャー
様々なチャレンジを行い世の中に Delight を届けるため、Platform チームは以下のミッションを掲げます。
- ユーザーにコンテンツを提供し続け、多様なゲームをプレイできる環境を作る
- デベロッパーが魅力的なゲームを提供するための開発・運用支援を行う
- DeNA の提供するサービスとしてエンターテイメントに貢献し続ける
Web と Mobile Application を提供するためのプラットフォーム機能を開発・運用します。また、Mobage のビジネスをエンジニアリングで解決をします。主な仕事内容は以下です。
- エンドユーザー向け機能の Mobile と Web システムの設計・開発・運用
- ゲームデベロッパー向け SDK, Web と Mobile Application の設計・開発・運用
- 運用効率化のためのリファクタリング
- プラットフォーム上のシステム設計・開発・運用
- 安定性・拡張性の継続的な改善
- 技術動向の把握・対策・設計
一般的なアプリケーション開発とは異なり、プラットフォーム機能をアプリケーション開発者に提供しているためブラウザやクライアント/ OS の最新アップデートに素早く対応する能力が求められます。そのため、技術動向の把握や運用を加味した設計能力などが非常に重要です。
ユーザーとデベロッパー双方に多くの機能を提供しているため、効率的な開発・運用や時には本質を捉えるため企画からエンジニアリングのアプローチを行います。
コーディングをするだけではなく、求められている・求めている本質的な課題の解決に向かう必要があります。また、プラットフォーマーとしてサービスに妥協はしません。ダウンタイム0で高品質に稼働し続け運用が続けられるプラットフォームを追求します。
開発ではエンジニア自身が当事者意識を持ち、プロジェクトを推進できるチームを目指します。そのため、開発スタイル(アジャイルやスクラムなど)やベストプラクティスの適応(過去の成功事例における概念の固定化)についてグループ横断で統一のルールは設けていません。プロジェクトや開発において各関係者間で最も成果が出せる働き方にこだわってもらいます。
事例紹介
技術スタック
主な技術
Category | Technology Stack |
---|---|
開発言語/ライブラリなど | モバイル Kotlin, Swift, Java, Objective-c, Unity サーバーサイド Perl, その他 |
インフラ | AWS, GCP |
ミドルウェア | Apache, Nginx, Memcached, Redis, q4m |
データベース | MySQL |
CDN | Akamai, Amazon Cloud Front |
データ分析 | BigQuery |
環境構築 | EC2, Docker |
CI | Jenkins, CircleCI |
Tool | Github, Jira, Confluence |
技術選定
開発や運用に応じ採用技術を検討します。運用を数年、数十年と続けていくためにエンジニアが最大の成果を達成できる技術を推進します。
比較的新しい技術の挑戦も、メリットが大きければ積極的に取り入れます。反対にメリットが薄い・投資効果がない・やってみたいだけと言う理由の場合、自社開発のフレームワークを活用した開発がコストパフォーマンスに優れるためノウハウを活かした開発方針を取ります。
運用を見据えた動き続けるサービスを提供するために、組織としてどのように管理・運用するか考え技術に向き合います。
チーム構成
Platform チームではプロジェクトやタスクごとにエンジニアの役割が変わります。will を尊重し、新たなロールでの挑戦も支援しております。プロジェクトにどういう役割が必要かを判断し、チーム内でアレンジをしつつ最大成果を目指します。
以下に役割を記載します。一つの役割で成果にこだわる働き方も、複数の役割を兼任し広く成果を出してもらうことも可能です。
テックリード/シニアエンジニア
課題解決に向けエンジニア組織を牽引してもらいます。ほかエンジニアを指導したり、勉強会を開くなどを実践し、組織の技術力向上を目指します。
コードリーディングやコードレビュー、機能設計を行い品質の担保や改善案の策定を実施します。
ステークホルダーとのコミュニケーションや開発の推進にエンジニアリングで寄与します。
アーキテクト
既存システムの再設計や新規技術の導入など難易度の高い設計を行います。セキュリティや運用も設計に組み込み、機能を満たすだけではなく非機能要求や技術の取捨選択など行い、複数の要素からシステムの設計に意味や必然性を定義します。
PM/PMO
開発のルールを策定し、開発を円滑にすすめるため、人と時間の管理を行います。
エンジニアが最大成果を発揮できるチームであるために、DX の改善や組織/プロジェクトの課題発見・対策を行います。
サーバーエンジニア
サーバーサイドのアプリケーション開発において、専門性を発揮します。
サーバー上で動作するアプリケーションの開発、運用を行います。アプリケーションのコードだけでなく、DB やネットワークなどアプリケーションを構成する要素に関わります。
現在は以下の募集を実施しております。
フロントエンジニア
Web フロントの開発において、専門性を発揮します。
ブラウザ上で動作する仕組みの開発、運用を行います。JavaScript だけではなく、CSS や HTML なども取り扱います。サーバーサイドレンダリングをしているアプリケーションにおいては、サーバーエンジニアと協力しサーバーサイドの開発も行います。
モバイルエンジニア
モバイル開発において、専門性を発揮します。
iOS / Android / Unity 向けの SDK とアプリケーション開発、運用を行います。毎年更新される外部環境の変化へのキャッチアップと対応が重要な作業となり、必要に応じて各メンバーと連携して開発を行います。