0

伝統的に、Ruby on Rails を使用してアプリケーションを構築しており、サービスを抽出することはめったにありません。私は現在、より管理しやすくパフォーマンスの高いもの (SOA w/API) に移行しています。

私が混乱しているのは、Go のようなもので API サーバーを構築すると、正確に何を失うのかということです。アーティクル モデルがあるとします。システムを介したジャーニーはどのように見えるでしょうか? つまり、ORM、コントローラー、API などの観点からです。

Go に API がある場合、ORM は API のレベルにあるのでしょうか、それとも Rails (API と通信する) を引き続き使用できますか? じゃあコントローラーは?このスタックが理にかなっている場合、私は迷っています:

  • API サーバーとして移動
  • アプリケーションサーバーとしてのRails

私が懸念しているのは、このアプローチを採用した場合、マイグレーションなど、Rails に付属する多くの機能が失われるのではないかということです。

4

1 に答える 1

1

SOA に関しては、これが必ずしも Go または Ruby/Rails 固有のものであるとは言えません。Ruby や Go だけを使っている場合も同様です。つまり、アプリケーションがどのように設計されているかです。Ruby または Go だけで SOA を実行できます。

サービス指向アーキテクチャには多くの利点があります。

  • 責任の明確な分離
  • さまざまなチームがさまざまなコンポーネントに取り組むことができます
  • コード単位で簡素化されたアプリケーション アーキテクチャ
  • 開発および管理コストを削減できます
  • 構成の柔軟性
  • ターゲットを絞ったパフォーマンス監視
  • 簡素化された/段階的なソフトウェア更新
  • 固有のサービス ドキュメント (ソースから godoc が生成)
  • 対象を絞った単体テスト (サービスは機能しますか?)
  • スケーラビリティの向上

おそらく、そのリストにさらに利点を追加できます。

克服すべき最大の障害は、特に初めての場合の初期計画です。物事をどこまで分解しますか?どのようなものを分離する必要がありますか? 適切なバランスを見つけないと、メリットを失うことになります。

SOA アーキテクチャーをどのように設計するかについては、状況によって異なります。記事とコメントを含むブログ サービスを構築している場合、次のような API メソッドを使用できます。

SubmitEntry
GetEntry
SearchEntries
GetComments
SubmitComment

一般的な考え方は、サービスがすべての作業を行う/行うことです。font-end アプリケーションは単なる GUI です。MVC を使用すると、フロントエンドはモデルを持つことができます。データベース呼び出しの代わりに API 呼び出しを行うだけです。

どの言語を使用するかは、あなた次第です。Go は素晴らしい言語です。そのコミュニティは急速に成長していますが、まだ若いです。他の方法では Ruby にあるパッケージを見つけることができない場合があります。自分で書かなければならなくなるかもしれません。そうは言っても、Go には多くの可能性があり、書いていて楽しいです。

個人的な経験: 私が働いている会社は PHP を使用していました。1 年前、私たちは変更を加える必要があると判断し、Go に決定しました。私たちは自分たちでいくつかのライブラリを書かなければなりませんでしたが、全体としては素晴らしい年でした。現在、Go のみを使用しています (C/C++ のダッシュを使用)。

于 2013-08-06T22:37:09.103 に答える