SmartHR Tech Blog

SmartHR 開発者ブログ

権限基盤の難しさ

こんにちは!権限基盤ユニット所属の@bmf-sanです。今年の6月に入社してから早くも6ヶ月目を迎えました。

権限基盤ユニットは、SmartHRにおける各プロダクトの権限を集約し、労務・タレントマネジメント領域における要求に柔軟に対応できるような権限基盤の構築・運用を行うチームです。

権限基盤ユニットでは、マルチプロダクト戦略における権限の課題をスマートに解決していこうと日々奮闘しています。

私は入社して以来、権限の難しさにずっと頭を悩ませてきました。権限の難しさに頭を悩ませているのはきっと自分だけではないはずです……!

そこで、権限に関わるメンバーが権限にどのような難しさを感じているのかを次の質問を通して明らかにしてみたいと思いました。

  • 「好きなおにぎりの具は何ですか?」
  • 「権限基盤の難しいことは何ですか?またその理由を教えて下さい」

この記事では、権限の基盤の難しいところについて、メンバーの生の声を元にお届けしたいと思います。

「好きなおにぎりの具は何ですか? 」

  • @uknmrさん
    • 「梅おかかじょうゆ、昆布」
  • hotakaさん
    • 「塩」
  • kureさん
    • 「焼さけハラミ」
  • yugeさん
    • 「ポーク玉子、おかか、梅(カリカリ入ってるやつ)、昆布、たらこ、鮭はらす。でも一番好きなのは塩むすび」
  • @nagaiさん
    • 「梅おかかです!」
  • @hachimitsuさん
    • 「明太子」
  • 私(@bmf-san
    • 「ツナマヨ」

皆さん案外スタンダートなものが多いですね! 全部美味しいですよね!

特に梅が人気のようです。梅、梅(カリカリ)、梅おかか、梅おかかじょうゆとバラエティに富んでいます。

SmartHRのシステムは、基本機能を提供するシステムを中心に、複数のプラスアプリという機能を拡張するアプリケーションで構成されています。

それぞれのシステムが求める権限機能はおにぎりの具のように多様で、それぞれのシステムの要求に応えられるように権限基盤を設計していく必要があります。

塩や焼き鮭ハラミ、明太子、ツナマヨなどシンプルな具の要求であれば考えることも比較的少なくシンプルです。しかしバラエティに富んだ梅のような要求となるとそれだけ解決の難易度が高くなります。

複数のプロダクト間の連携が求められる環境の中、日々成長・進化を遂げるプロダクトにおいて、権限への要求も肥大化・多様化しています。

そのような要求を整理し、理解することの難しさやレバレッジの効いた解決策を考え抜く難しさこそ、権限基盤の醍醐味であり、難しさの一つなのではないかと感じています。

おにぎりの例えは分かりづらかったかもしれませんが、おにぎりを見るたびに権限基盤のことを思い出してもらえると嬉しいです。

「権限基盤の難しいところは何ですか?」

@uknmrさん

「仕様を決めきること」

データベースやロジックの設計が難しい 不確定要素が多いことも難しい。 既存のシステムとの結合や実現のための設計が複雑であるため難しい ユーザーがエンドユーザーだけではなく、基盤システムを利用する社内開発者も対象であるため開発の難易度が上がる 参考となる他社事例が少ないことも難しさを底上げしている 社内事例のない誰も正解を知らない課題に向き合うという難しさがある 基盤開発にこれまで取り組んでこなかったゆえのツケがある

hotakaさん

「未来を見据えつつ眼前の要求に応える必要があり、そのうえで失敗しづらいこと」

権限はアプリケーションの機能に広く関連するため、各機能に与える影響が大きく、広範な要求に応えられる設計やパフォーマンスを求められるため

kureさん

「お客様それぞれの要望にすべて沿うような設計をすること」

企業の大きさやフェーズによって要望が異なっていく印象で、それらすべてを包括するような設計を考えるとなると整理や理解が大変そうだと思っているため また、拡張性や保守性が高くないと将来お客様になる企業様からの要望に答えられない可能性もあるため、それらも考慮しながらの設計となることが予想されるため

yugeさん

「概念モデルの理解と影響範囲(検討しなければならない範囲)の広さ」

これまで所属していたチームとはドメイン領域がまるで違うので、そもそも概念を理解するところからだったが、権限そのものの領域を理解することに難しさがある SmartHRが取り扱うプロダクトが労務・タレントマネジメント領域に分かれていて、権限の操作をするユーザー自身のポジションや、どのように権限を取り回したいのかのポリシーも異なるため、数十手以上先を見据えてかつ基盤として汎用的に扱えるものにしなければならないため 権限基盤としては最適だと思うものも、基盤の仕組みを使うオプション機能ごとに異なる懸念事項もあったりして、連携先プロダクトの理解も深める必要がある

@nagaiさん

「後から基盤を作ってること」

既存の仕様を考え、互換性を持たせないといけない。データ移行やユーザーのメンタルモデルを変える必要もあり、漸進的にやらないといけないため時間がかかってしまう 「モノリスとマイクロサービスが混在していること」

SmartHRは基本機能は巨大なモノリス。オプション機能はマイクロサービス。といった構成になっている。一見バランスが取れているように見えるが、権限基盤にとっては両方の課題を解決する必要がある。例えば、モノリス(基本機能)では、機能同士が密結合になっているため、操作に関する権限を分離しにくい。機能拡張をするのに影響範囲が広く開発に時間がかかってしまう。他方、マイクロサービス(オプション機能)では、権限設定がプロダクト毎に分散し、仕様も個別最適化されてしまっている。これらの課題を解決していきながら、統合された権限を作らないといけないため、難易度が高い。非常にチャレンジな環境である。

@hachimitsuさん

「プロダクトチームとの連携」

決まった仕様で社内のプロダクトチームの要件を満たせるのか、プロダクトチームと連携しやすいような設計になっているのか、そもそもこの機能は基盤に集約するべきなのか、連携するための開発が始まった時複数チームのプロダクト開発の足並みをどうやって揃えるのか、プロダクトチームと権限基盤が連携する時考えなければいけない事は無数にあるから。

私(@bmf-san

「権限に対する要求がプロダクトにあちこちある中で、将来を見据えた基盤の設計を意識していく必要があること」

自転車を漕ぎながら後輪のタイヤキャップを外して空気を入れながら走るみたいな難しさがある。日々権限に対する要求は増えている中で、基盤としての将来像を考えていく必要がある。要求を1つ1つこなしていくだけではスケールが追いつかないため、より高次元の解決策が基盤に求められている。

いかかでしょうか?先程のおにぎりの具の話が頭に浮かんだのではないでしょうか?

要求を整理することや仕様をまとめることに難しさを感じているという意見が多いように見られます。課題そのものの難易度の高さも感じられますね。

権限はプロダクトのあちらこちらで使われている仕組みであるため、関わる領域が広いです。そうした背景も課題の難易度を上げる要因の一つとなっているかと思います。

まとめ

権限基盤の難しいところについて、メンバーの生の声を元にお届けしました。

  • 課題の解き方が難しい
  • 権限を利用する機能が多いため、影響範囲が大きい。それゆえのリスクがある
  • 機能ごとに要求に多様性があり、権限という領域自体を理解する難しさがある
  • 既存の権限仕様を汲みつつ、新しい権限の形を提供する必要がある
  • SmartHR全体のアーキテクチャの都合上、俯瞰的な設計が求められる
  • 権限が持つべき責務とそうでない責務の区別が難しい
  • 権限と接点を持つチームとのコミュニケーションコストが高い
  • 多種多様な要求を効率よく解決していくため基盤としての形が求められている

権限基盤にはこのような難しさがあることを改めて認識しました。

私は過去システム基盤の構築・運用に携わってきた経験があるのですが、「もう少しこう何というか 手心というか……」と思わず言いたくなってしまうほど権限基盤の容赦ない難しさを感じています。

一緒にこの難しさを体感してみたい!解決したい!という方、好きなおにぎりの具は問いません!仲間になりませんか!

権限基盤ユニットでは、一緒に働く仲間を募集しています。興味を持っていただけた方は、ぜひ以下のリンクから詳細をご覧ください。

シニアプラットフォームエンジニア(プロダクト横断基盤 バックエンド)