幹事シリーズのアーキテクチャ

当ブログをご覧頂きありがとうございます。
エンジニアの杉山です。
 
今回のブログでは幹事シリーズのアーキテクチャについてお話しようと思います。
 

現状について

現在、主に6つのサービスを展開していますが、それぞれ以下のように分かれています。
それぞれの主機能は共通する部分も多いのですが、実は結構違いがあります。
URLコード基盤機能数コードの独自性
Web幹事https://web-kanji.com/単独
動画幹事https://douga-kanji.com/単独
システム幹事https://system-kanji.com/単独
補助金幹事https://hojokin-kanji.com/共通
営業幹事https://eigyo-kanji.com/共通
OA幹事https://oa-kanji.com/共通
  • コード基盤
    • 以前から展開しているWeb・動画・システム幹事は単独のプロジェクト
    • 直近で展開した補助金・営業・OA幹事は共通プロジェクト
    • 一部サービスはWordpress
  • 機能数 & コードの独自性
    • Web幹事が最多で、直近のものはまだ少め
    • システム幹事は一部特殊な構成 (システム軸とアプリ軸が同居)
    • DBのテーブル名やカラム名などに絶妙な差異がある
 
今後もシリーズに新たなサービスの展開を予定しており、共通する機能も増えていくことを鑑みる
と単独で管理していくのはメンテナンス性や機能拡張において問題になりえると判断し、補助金幹
事以降は共通基盤で管理出来るようにベースとなるシステムを再構築しました。
 
共通基盤ではどのようにサービス毎の差異を吸収し、無理なく・可能な範囲で共通化しているかを
もう少し詳しく説明したいと思います。
 

共通基盤について

大まかな構成を図示するとこのようになります。
大まかな構成を図示するとこのようになります。
 
幹事シリーズ共通の主機能は以下になります。
  • 記事コンテンツ (Article)
    • サービスに合わせた様々な有益な情報を掲載・管理出来る。
  • 情報検索 (Company)
    • サービスに合わせた情報を検索出来る。
      • 制作会社(Web/動画)、開発会社(システム)の情報など
  • お問い合わせ (Contact)
    • 弊社の担当者とのヒアリング予約が出来る。
 
主機能でみると、記事コンテンツやお問い合わせはサービス毎の差異はあまりありませんが、
情報検索については掲載する情報やコンテンツが違う為、サービス毎に大きな差異が生まれます。
そこで、情報という抽象的な扱い方を共通基盤(図のKanji Common Platform)では行い、会社情報
という具象的な扱いはサービス毎のロジック層(図のKanji Service Logic)で吸収します。
そのようにすることで全体としての扱い方は統一して処理できるので、各サービス毎の実装は最小
限で済ませることが出来るので、サービスの立ち上げスピードを上げられるます。
 
一方で、Laravelというフレームワークの上での共通基盤なので、フレームワーク on フレームワー
クにならないように切り分け方や手続きの仕方に注意して設計しています。(弊社のサービス特性
に合わせたLaravelの拡張のように捉えてもらえるとわかりやすいかもしれません。)
 
共通基盤内でLaravelの共通ロジック(例えばServiceProviderやconfig/database.phpなど)を使用し
ている部分では以前のブログに書いたように.envをうまく活用して切り分けを行っています。
 
View(Blade)は、共通テンプレートを特定のディレクトリにまとめた上でnamespaceを付与した上
で、変化する部分を変数化して対応しています。
また、JavascriptやCSSはWebpackを使用してバンドルしていますが、サービス毎の設定ファイル
を用意して、それぞれに合わせたエントリポイントを指定しています。
 
データベースもサービス固有と共通のそれぞれのスキーマが存在し、それぞれを跨いでデータ処理
を行う必要があるため、config周りの設定に工夫をいれて実装しており、実装する担当者があまり
細かいことを考えなくても良い設計にしています。

今後の対応

今後は幹事シリーズだけではなく、周辺の別サービスやプロダクトとの連携も考え、API化やマイ
クロサービスを進めていくことになります。場合によっては一部を別言語やフレームワークで実装
した方が効率が良くなったり、インフラ基盤が変わることもあると思いますので柔軟性を失わない
ようにしながらブラッシュアップしていきたいと思います。
 
 
ユーティルでは共に「デジタルを広めて日本の中小企業400万社を変革する挑戦」をしてくれる仲
間を募集しています。こういうことを考えるのが好きな方や、もっとこうすればいいのに!と思っ
て頂けましたら軽い気持ちでお話だけでも聞きに来て頂けると幸いです。
 
ではまた次のブログでお会いしましょう!