株式会社villioの技術スタック紹介
こんにちは。株式会社villioでエンジニアをしている石黒です。
この記事では、villioでどのようなテクノロジーを使ってプロダクトを開発しているのか、またその技術の選定理由などをご紹介します!
はじめに
株式会社villioは、ピープルマネジメントの質を向上させる1on1のToB SaaS「Talent Amp」を提供している、HR Techスタートアップです。
サービスの概要については、下記をご覧ください。
技術スタック
villioで利用している技術の全体像は以下の画像のとおりとなっています。
以下、抜粋してそれぞれ簡単に解説していきます。
Backend
Go
Talent Ampのバックエンドアプリケーションは、すべてGolangで開発されています。
Golangは、言語機能が多くなく、シンプルで癖がないため他の言語経験者でも習得が比較的楽であることや、私を含めた初期のエンジニアがGolangの開発経験が豊富であり、開発のスピードが早いことを期待して選定しました。
PostgreSQL / SQLBoiler
DBにはPostgreSQL、ORMライブラリにはSQLBoilerという組み合わせを採用しており、DBアクセス部分のコードをほとんど自動生成しています。これにより、DAOなどの写経的な実装を減らし、生産性の高い開発を行っています。
REST / Open API
フロントエンドとの通信方式はREST APIを選択しています。
当初GraphQLも選択肢として上がりましたが、柔軟なクエリよりも実装やインタフェースのシンプルさや、キャッシュの効率を優先しています。
2023/03現在、バックエンドの開発メンバーは、私含め3人のメンバーがバックエンドの開発を行っています。
Frontend
TypeScript / React / Next.js
Talent Ampのフロントエンドは、TypeScriptで実装されています。
型付けによるコードの品質と安全性と開発効率の向上を期待し採用しています。
フロントエンドフレームワークにはReact・Next.jsを採用しています。TypeScriptと合わせて、このスキルセットでの開発経験が豊富なメンバーが多く、高い開発スピードが出せること、学習コストがかからないことが選定理由です。
Chakra UI
コンポーネントライブラリにはChakra UIを採用しました。
モーダルのような複数コンポーネントの組み合わせを提供してくれ、かつアクセシビリティ対応に手厚く対応していて、自前のスタイルを当てやすいコンポーネントが提供されていることが魅力的です。
2023/03現在、フロントエンドメインの開発メンバーは4人で、全員業務委託のメンバーが開発を行っています。
フロントエンドの技術スタックの詳細については、後日別メンバーの記事で解説します。お楽しみに!
他の利用ライブラリ
OpenAPI
REST APIのドキュメンテーションには、OpenAPI Specificationを採用し、スキーマ駆動での開発を行っています。
これにより、バックエンドとフロントエンドの開発を並列化できたり、コミュニケーションコストを削減できたりするため、重宝しています。
また、バックエンド・フロントエンドともにインターフェース部分のコードを自動生成しており、エンジニアが考えるべき部分に集中できるようにしています。自動生成には、以下のライブラリを利用しています。
backend: go-swagger
frontend: openapi-generator
Infrastructure
Talent Ampのインフラは、ほぼすべてGoogle Cloud上で稼働しています。
比較的高いシェアを持つAWSやAzureに比べ、シンプルな構成や機能でスタートアップでも扱いやすいことや、コンテナベースのアーキテクチャでサービスを作りやすいこと、クレジットがありコスト的に優位であることなどの理由からGoogle Cloudを選択しました。
アプリケーションの実行環境には主にCloud Runを利用しています。
仮想マシンやクラスタの管理などが必要なく、さらにRevision機能やオートスケーリングが便利であることなどが魅力で、メインの実行環境として活用してしています。
その他、データストアやタスクキュー、ジョブスケジューラーなどの他のインフラ構成要素もGooble Cloudのマネージドサービスを利用しています。
DevOps
Terraform
まだ100%ではありませんが、IaC化を進めています。
特にスタートアップ期ではインフラ構成は属人化しがちなので、できるだけ最初からコード化することに努めています。
Terraform化により、インフラの管理コストを抑え、かつインフラの変更適用もCI/CDパイプラインに組み込めるようになっています。
CI/CD
CIはGithub Actionを利用しています
PRごとに、バックエンド・フロントエンドともにUT、Linterなどが実行されます。また、E2EテストやOpenAPIの自動生成部分コードに更新漏れがないかなどもチェックしています。
CDはGithub Action + Cloud Buildという構成です。
当初GitHub ActionsでCIからCDまですべて行う方法も考えられましたが、ビルド速度やセキュリティ的な理由でCloud Buildも併用する形になっています。
リポジトリ戦略は軽量なGithub flowを採用しています。featブランチが main ブランチにマージされると、すぐにプロダクション環境にデプロイされる仕組みになっています。
また、Github上のPRに特定のラベルをつけると、ステージング環境やプレビュー環境に自動でデプロイされ、QAテストやUATがスムーズにできる仕組みも構築しており、開発リードタイムが極力短くなるようにしています。
最後に
簡単にではありますが、villioの現在の技術スタックをご紹介しました。
今後も必要に応じてどんどん技術スタックを追加・更新予定ですので、定期的に発信していきます。
最後になりますが、villioでは一緒に働く仲間を募集しています!
PMFを目指してどんどん事業を進める楽しいフェーズですので、少しでもご興味を持っていただいた方はぜひご連絡ください!
より詳しくvillioについて知りたい方はこちら