WebNote2:LineArtを構成する技術 ②過去からの踏襲

前の記事 にて、WebNote2:LineArtの技術構成について触れました。 その構成については過去数度、類似するサービス運用を経て得た成功と失敗の踏襲に由来する部分もあります。

過去からの踏襲

※ この表は言語名やフレームワーム等の表記に統一性が無いですが、雰囲気でお読みください。

世代 サーバー バックエンド サーバーサイド(Socket) フロントエンド クライアントサイド(Socket)
前々代 LAMP PHP Java HTML, CSS, JavaScript(jQuery) ActionScript3.0
前代 LAMPから後にDocker化 express(JavaScript) ←に同居 Vue.js JavaScript
現世代 Docker Next.js(TypeScript) Node.js(TypeScript) Next.js(react + TypeScript) TypeScript

前々代

前々代は2010年頃から運用されていたサービスで、表を見て分かる通り色々なプログラミング言語で構築されていました。 データ構造や処理について何か1つ修正が発生すると、各言語でデータ構造定義や処理の書き直しが要され、重大な負担となっていたのが次の代で是正されます。

前代

2016年頃から運用が開始されました。 世間的にFlash Playerが魅力的なランタイムではなくなりつつあったためフルHTML5に移行します。 サーバーもNode.jsで現実的に運用できる時代が到来しており、サーバーからクライアントまで全てJavaScriptにする事に成功しました。 しかし、数多くの問題を生み出します。

  • expressとSocketサーバーが同居しているため、Socketに引きづられてWebサーバーも同時にクラッシュする欠陥構造
  • 粒ぞろいの悪いnpmモジュールに密依存しきっていたため、モジュールの開発停止/放棄/非推奨/不具合発生でその後立ち回りが行かなくなった
  • 静的コードチェックされないピュアなJavaScriptで全編記述していたため、数年前のコードの保守作業が困難を極める
  • その他色々..

現世代

以上の成功と失敗からこのような事を踏襲し実装されています。

  • 同一言語で作る
  • TypeScriptで静的コードチェック
  • interfaceやclassの共通化
  • 汚染防止層の挿入
  • プロセスを分離(コンテナごと分離した)

続く

Written on August 23, 2020