はじめに
こんにちは。medibaのテクノロジーセンターでVPoEをしている、@primunuです。
こちらの記事はmedibaアドベントカレンダーの1日目の記事となります。
恒例となったmedibaを支える技術ですが無事6年目を迎えます。
21年度と比べ技術スタックの大きな変化はありませんでしたが、22年度はエンジニア組織に変化があったので重点的に記載します。
過去の記事は下記をご覧下さい。
mediba を支える技術(2016年度)
mediba を支える技術(2017年度)
mediba を支える技術(2018年度)
mediba を支える技術(2019年度)
mediba を支える技術(2020年度)
mediba を支える技術(2021年度)
事業組織 (2022年12月1日 現在)
medibaでは20年度から変わらずマトリクス組織で運営しています。
詳細はこちらを参照下さい。
テクノロジーセンター
medibaのエンジニア組織はテクノロジーセンターという名称で活動しています。それぞれのプロダクトや横断で課題解決、戦略を担うUnitで活躍するエンジニアが所属する組織です。そんなテクノロジーセンターですが運営していくにあたり大小様々な課題がありました。特筆すべき課題は以下となります。
エンジニアリングマネージャー(以下EM)がスーパーマン化
medibaのEMは1on1や評価と言ったピープルマネージメント、エンジニアリング、プロジェクトマネージャー(以下PjM)、プロダクト開発と、全方位的に稼働していました。全方位的に稼働すること自体が悪だとは思っていませんが、マネージャーが多忙問題を引き起こしていました。また一つ一つの領域のコミットメントが弱く、中途半端になってしまいました。特にピープルマネージメントとエンジニアリング、だとコンテキストスイッチが発生しEM自体の負担が大きかったと感じています。
キャリア形成が難しい
プロダクト開発でにおける主なロールは、EM、テックリード、メンバーの3つです。人材不足も相まって、一部のEMはテックリードを兼務したりと、多くを求められるEMを目指すことに対しネガティブな声が多方から耳にしていました。
EM自体も全方位的に稼働しているので得意領域を伸ばせず次目指すキャリアパスと言う所が難しかったのではないかと感じています。
※medibaのキャリアパスの詳細はこちらを参照下さい。
2022年度のテクノロジーセンター組織
上記課題の解決を行うため以下のように組織したのが図示したのが下記になります。
組織変更による意図
組織変更自体は去年の21年12月頃からCTO準備室メンバーでディスカッションを重ね骨子を固めました。その後EMに展開し解決したい課題に乖離がないか等議論を行い、そのフィードバックを元に再考し組織したものになります。主な意図としては前述の課題の通りEMがスーパーマン化していました。そんなEMですが一口にEMといっても、PjM、組織運営、Techと様々でそれぞれ強みが異なります。役割が多くコミット領域も多いので、得意領域に時間を使えずEMの強みが活かせてないと感じました。そこでEMの責務を分割し新たなロール、テクニカルリーダ(以下TcL)、ユニットリーダー(以下UL)を配置しました。
以下は責務分離を図示したものになります。
各ロールの説明
組織運営、ピープマネージメント軸のグループリーダー(以下、GL)を配置
EMの責務分離をし、組織運営・人事領域強を得意領域にもつEMはピープルマネージメント、組織運営にコミットするGLを配置しました。GL配下メンバーは職能毎に組織する事で、職能ならではの課題や、成功体験がGLに情報が集まる事で、職能醸成が可能だと考えています。
また、プロダクトへの関与をあえて薄くする事でコミット領域が明確になり得意領域を伸ばせるのではないか。と考えています。
Tech領域を強みとしたTcLを配置
EMの責務だったプロダクト開発領域を切り離し委譲したのがTcLなります。プロダクト開発におけるプロジェクトリーダ、テックリードを責務とします。現時点だとプロジェクトリーダとして振る舞く事がbizとの調整や全体調整をやっていることが多いです。フェーズによっては技術選定から積極的に関わり技術スタックを提案及び策定を行います
Unitの取りまとめを行うULを配置
Unitとは組織横断的な戦略を担う組織になります。
Unitの構成は後述しますが、ULとは各Unitの長となります。主な責務としてはUnit内の調整や配置、Unitの意思決定等を行います。
主なUnit
SRE Unit
「システムの品質を高く保ち続ける」をミッションに、各プロダクトのシステム信頼性を向上するために活動する部署。
ほとんどメンバーはプロダクトにアサインされ、プロダクトの信頼性向上のために活動しつつ、SRE Unit としての横断的な施策等にも尽力しています。
BPM Unit
社内の業務フロー自体を組み替えて冗長な作業を不要にするための部署。ビジネスオペレーションのレガシーを見つけて駆逐するのが業務です。
セキュリティ Unit
社内システムの導入、インフラの構築、保守運用全社のセキュリティ企画などを担当します。
- Microsoft Azure
- Cisco Systems
- ID 管理系など
品質管理 Unit
「medibaが提供するサービスの品質を支える」をミッションとし、サービスのライフサイクルを通して品質向上のために活躍しています。
- お客さまに安心して利用いただけるサービス品質を確認し、リリース判定するプロセスの運営
- システムテストを通じた品質確認と品質向上活動
- 障害管理と障害ナレッジ共有
- プロダクトへ参画して早期からの品質作り込みのサポート
アウトソース Unit
他社とのシステム的なやり取りや、業務のアウトソース化などをメインで行います。
システムディレクターが所属しています。
グローバル開発 Unit
主にBrSEが所属しており、オフシェア開発の取りまとめ等を行っています。
主なプロダクト(掲載サービスは一部)
auスマートパス/auスマートプレミアム
会員数1,500万人以上。国内有数の有料会員数を誇るスマートフォン向けサービス「auスマートパス」の企画・開発・編集と、サービス運営に関わる全般を担当しています。
auウェルネス
auウェルネスは、健康を目指すすべての方へ健康活動の習慣化をサポートするサービスです。iOS/Android/Watchアプリ各種機能のUIUX設計と開発、プロモーションなどサービス運営に関わるクリエイティブの制作を担当しています。
ポイントためる
「ポイントためる」は毎日まわせるポイントガチャやアプリの利用・アンケートなどでPontaポイントをためることができるサービスです。コンテンツの企画・開発・運用全般を担当し、楽しくおトクにPontaポイントがためられるサービスを日々提供しています。
Bratto
Brattoは「やることのない休日が楽しみな休日に変わる」旅行・お出かけ動画アプリです。“次の休日に何しようかな”と誰もが一度は感じたことがあるそんな漠然とした思いに、みんなの共感できる”動画”を通じて、次の休日にやりたいことを見つけるヒントを提供します。
開発の進め方
チーム制
プロダクトチーム構成は以下になります。
プロジェクトごとに異なるという前提はありますが、Scrumをベースとしたアジャイル型とウォータフォール開発が半々です。21年度はリモートワーク中心としたワークフローが定着し各々のプロジェクトで改善が見られました。20年度から実施しているモブワークも普及し、複数のプロジェクトで実施しています。
2022年ではモブ開発が全体の半分となりました。
ツール
開発推進していく上で重要なツールとしては以下のものを利用しています。
22年度からドキュメント管理ツールとしてNotionを利用し始めました
※メインで使用しているツールを太字にしています
- タスク管理
- JIRA , Backlog , Github Projects
- ドキュメント管理
- Confluence , Notion, Github, SharePoint, Backlog, Redmine
- コミニュケーションツール
- Slack , Teams , Zoom, miro
技術選定
使う技術・ツールの選定に関しては、プロダクトごとで構成されるチームに基本的には委ねられていますが、人材アロケーションの観点からガイドラインを定めています。
開発言語
サーバーサイド
Golang、Node.jsが中心となり、PHPは採用しない傾向にあります。
- Golang
- Node.js , Express, NestJS
- PHP, Laravel
フロントエンド
一部Vue.jsを使用しているプロダクトもありますが、
21年度同様React & Next.js、TypeScriptのスタックがメインとなります。
- React & Next.js
- Vue.js & Nuxt.js
- TypeScript
- Storybook
- styled-components, Sass,
- Apollo, graphql
アプリ
Swift、Kotlinが中心ですが一部Flutterを使用しています。
- ios
- Swift, SwiftUI
- android
- Kotlin, Java, Dagger2
- クロスプラットフォーム
- Flutter
- React Native
利用サービス・利用ツール
CI周り
現在はGithub Actionsが多く採用されており社内のデファクトになっています。
また、殆どのサービスはコンテナで運営されており、素早く価値を提供するといった観点からECSを使用する事が殆どです。
- ソース管理
- GitHub Enterprise
- 構成管理
- ECS , Docker, Kubernetes(Amazon EKS)
- Terraform, CloudFormation, Ansible
- CI/CD
- GitHub Actions , CodeBuild
- デプロイ
- CodeDeploy
監視・アラート
監視はNew Relicをメインに使用しており一部Datadogを使用しています。
- New Relic , Datadog, Sentry, Twilio, Amazon Connect
セキュリティ・試験周り
- アプリケーション脆弱性
- OWASP ZAP
- ECR イメージスキャン
ミドル脆弱性
- Vuls
性能試験
- Gatling , ApacheBench
レスポンス速度
- Sitespeed.io
- Lighthouse
運営イベント
運営イベントは21年度と変わりませんが継続に発出しています。
KGDC Tech Conference
mediba Tech Café
https://mediba-tech-cafe.connpass.com/
次回のテーマは”各職能の紹介”をテーマに発信致します。 12/8(木)12:00に放送予定なので参加して頂けると幸いです
mediba Creator x Engineer ブログ
2015/10/1からいわゆるテックブログを始めました。開発プロセス、フロントエンド、バックエンドの技術を中心に投稿しています。企業の情報や組織の雰囲気は、企業のWebページ以上にはなかなか手に入りにくいものです。我々medibaでは、日々の取り組みや気づきをメンバー自らが発信することで、社会への認知と自身へのフィードバックの場として積極的に取り組んでいます。
( http://ceblog.mediba.jp/ )
最後に
21年度と比べ大きな技術スタックの変更はなかったものの組織課題であったEMの責務分離を行い組織体制を変更した22年度でした。まだ様々な課題があるものの一つ前進できて良かった感じています。引き継ぎユーザーに向き合いながら、我々のビジョンである『「良いもの」を届け続ける』エンジニア組織を醸成し、Developer eXperienceの向上に努めます。
medibaに興味をもっていただいた方は、まず私とカジュアル面談しませんか。沢山の応募お待ちしております。
( https://hrmos.co/pages/mediba/jobs )