クラウドとシンプルな技術でリスクの少ない開発環境を実現
セッションの後半では、HRMOS Coreの開発にあたって、どのように技術選定を行っていったかが紹介された。
技術選定の基本方針は、(1)クラウドのマネージドな構成管理、(2)シンプルな構成、(3)シンプルなアーキテクチャの3つだったと大谷氏は振り返る。
「プロジェクトが始まったばかりで、余計な手間やリスクをできるだけ事前に排除する必要がありました。その点クラウドならば、自分たちで構成管理を行う必要もなく、肝心の開発作業にエネルギーを集中できます。またシンプルなアーキテクチャは、不測の事態を回避するのに最適かつ容易な手段でした」
クラウドプラットフォーム:AWS
最初は、HRMOS Coreが動く環境=クラウドプラットフォームの選定だった。ここではAWS(Amazon Web Services)とGoogle Cloud Platformの2つを検討。パフォーマンスを比較した結果、AWSを選択した。
人事データベース:Amazon Aurora PostgreSQL
次は、人事データベース=HRMOS Coreの開発技術の選定だ。Amazon Aurora PostgreSQL/MySQLを両者を比較検討した結果、MySQLは分析関数に不安があった。一方PostgreSQLは、分析用に巨大なリードレプリカが作れるアドバンテージが評価された。
アプリケーションサーバー:AWS Elastic Beanstalk(ECSに移行予定)
サーバーの選定では、従来のアプリケーションサーバーにするのか、マイクロサービスに挑戦するのか議論があった。しかしまだプロジェクト初期で、モジュール・データの依存関係が見えないことや、何よりエンジニアの熟練度を考慮して、アプリケーションサーバーを選択した。アプリケーション管理には、AWS Elastic Beanstalkを採用したが、将来的にAmazon Elastic Container Service(ECS)に移行する予定だ。
「この他、ユーザー認証にはAmazon Cognitoのユーザープールを使用しました。採用理由としては、自前でパスワード管理を行わずに済むこと、リスクベース認証などをマネージドサービスとして管理できるといったメリットが挙げられます。また、入社日や最終出社日などに合わせてデータベース変更などを自動で行うRPA化の機能には、AWS Lambdaを使っています」
Javaのスキルが生かせるKotlinをAppサーバーの開発言語に採用
今回のプロジェクトのトピックスの一つが、アプリケーションサーバー開発に、オブジェクト指向プログラミング言語の一つであるKotlin(コトリン)を採用した点だ。Kotlinは、言語自体はJavaとはまったく別のものでありながら、コンパイルされたコードはJava VM(virtual machine)で動かせるため、Javaのコード資産やスキルセットが生かせるのが大きな特長だ。
「当初の開発チームはもともとJavaがメインで、最近のプロダクトではScalaを多く使ってきました。こうした自社のスキルセットから考えて、Javaに近い言語が好ましいということでKotlinが選ばれました」
Kotlinには、Javaのエンジニアが学習しやすいという利点もある。JavaエンジニアがいきなりScalaを学ぶのは難易度が高いが、KotlinはJavaとScalaの中間的な言語なので、ビズリーチの技術陣にとっても学びやすい点が高く評価された。
また今回のプロジェクト経験から、大谷氏は「開発言語は、できるだけ統一させることが望ましいと実感した」と言う。その具体的な効果としては、学習コストの低減に加え、2つの異なる環境でロジックの再利用が可能になり、開発効率そのものが向上するといったメリットが挙げられる。
現在Kotlinで記述しているのは、アプリケーションサーバーとAWS Lambdaの部分だが、ここでの経験の蓄積が推進力となり、最近では社内の他のプロダクトでもKotlinを使い始めていると言う。
「とりわけ新規のプロダクトでは、最初からKotlinでいくケースも増えてきました。今後はこうした動きをさらに活性化させ、より効率化と省力化を進めながら、品質の高いサービスの開発体制を固めていきたい」と大谷氏は抱負を語り、セッションを締めくくった。
お問い合わせ
株式会社ビズリーチ