web-dev-qa-db-ja.com

大規模な多言語プロジェクトを整理する方法は?

私のプロジェクトの1つはPHPとして開始されましたが、最近、いくつかの新機能がNode.jsプラットフォームのJavaScriptで記述されています。

複数の言語を使用してサーバーコンポーネントを作成する大規模な多言語プロジェクトは、どのようにコードを編成しますか?

そのために必要なことの1つは、モデルとサービスを複数の言語で作成することです。これは私たちを導きます:

/models
  /php
  /js
  /Ruby
/lib
  /php
  /js
  /Ruby

あるいは、異なる言語で書かれた実装を同じフォルダーに入れ、ファイル拡張子によってのみ区別することもできます。

/models
  user.php
  user.js
  role.rb
/lib
  auth.php
  service.js
  anotherService.rb

これに対処するためのいくつかの一般的なパターンは何ですか?

1
Denis Pshenov

パッケージを導入するのに適切な時期かもしれません。プロジェクトは、さまざまな機能を独立したパッケージに分離するのに十分なほど複雑になっているようです。したがって、構造は次のようになります。

/package-1  # (Ruby)
  /models
    file.rb
  /lib
    some-file.rb
/package-2  # (Node)
  /models
    ...
  /lib
    ...
/package-3  # (Node)
  /models
    ...
  /lib
    ...

このような構造を持つことで、各パッケージからコードを個別に更新し、それらの間にクリーンなAPIを配置し、さらにはそれぞれの独立したバージョン管理を行う可能性が広がります。あなたがそれを知る前に、あなたは本格的なマイクロサービスアーキテクチャを実行するつもりです:-)

もちろん、状況はそれぞれ異なりますが、このパターンは大規模なサービスでは非常に一般的です。