2017-12-12 3 views
-1

GoogleのRailsアプリでスケーリングを行うのはうんざりです。Go langを使いたいと思います。だから今日はRoRとPostgresqlで書かれた非常に大きなアプリケーションがあります。多くの処理では遅くなるRubyが処理されています。スプリットレールアプリを小さなマイクロサービスに移動

私たちのアプリケーションのいくつかの部分を取って、より良いパフォーマンスのためにGolangに書き直したいと思っています。

私はいくつかの良いアドバイス&の実践、特に分割を開始する方法を聞きたいと思います。どのように移動すると&レールと通信することができますハード計算を移動するには?同じデータベース/データを共有できる方法はありますか?

よろしく

答えて

1

最高の象を食べる方法は?一度に一度噛んでください...

これは新しい世界なので、最初は何か他のものとあまり関係のないアプリケーションの機能を剥がしていきます。実際のビジネスロジックを使用しないレポートエンジンを選択するか、データベースに直接または類似してクエリを実行する定期的な保守タスクを選択します。パフォーマンスの向上が最も必要なものである必要はありません(データを取得するためにビジネスロジックを実行する必要がある場合は、IMEのレポート作成はほとんど常に遅くなります)。重要な前提条件がないので、新しい環境がどのようにプラグインされるのかについて自信を持って理解することがポイントです。

これを済ませたら、必要なビジネスロジックを検討し、あなたの副作用がどの程度深いか。多くの副作用がなく、できるだけ古典的な関数(すなわち、入力の集まり、1つの出力)に近いもので、2番目の作業のバッチを見つけようとします。あなたのRoRコードにディスパッチ可能なものがあれば(「このデータをすべて取得しました」など...)、「何らかの処理データを出力します」というメッセージが表示されます。

トリップには一定の待ち時間がHTTP上で前後に追加されていますが(ブラウザからの直接的なものではありませんが...)、利益を得ることができる場所で作業するように注意してください。あなたの古いコードに対するプロファイラは、ここで束ねるのを助けます。高価なものは次の候補になります。

ローハンドの果物を処理した後でも最適化が必要な場合は、ビジネスルールを分割してRoRの世界に住み、他の人々がGoに住むよう配慮する必要があります。同じビジネスルールの2つの実装を維持しないでください。注文が1つのシステムであり、サプライチェーンが別のものであると判断した場合、それは問題ありませんが、両方の環境でサプライチェーンコードの実装を維持しようとはしません。

G-dのために、古いシステムから新しいシステムにビジネスロジックを移行する場合は、古いコードをそのまま残してください。あなたはバージョンコントロールを持っています - 誰かが古い実装に戻って参照する必要がある場合、それらを掘り起こしてください。そうしないと、貧弱なコード管理者と決して実行されない残余コードが混同されます。非難されたコードをお持ちの場合は、削除してください。

ああ、私はこれを言う必要はありませんが、バグのため、バグの互換性を確認するために、ユニットテストを必要と確信している...

最後に、RoRのは非常にMVCであることに留意してください-orientedとGoは本来 MVCではありません(numberofframeworksですが)。あなたは間違いなく、直接ポートを行う無駄な試みで、それらのフレームワークをチェックアウトする(そして正直言っておそらく捨てる)ことを望むでしょう。あなたのシステムからそれを取り出してください。その後、小さな進歩的な進歩を進め、ゆっくりとあなたの象を食べる。

+0

私は本当に便利、あなたの投稿を読んで - 多分私はそれをプリントアウトし、私はその間 おかげでたくさんにそれに戻って倍のダースを来るように私の壁に置く:) – zauzaj

+0

あなたはそれが好きうれしいです。このような技術の移行に参加したり、参加したりしたことで、あまりにも多くの技術が磨耗した戦闘傷跡ではありませんが、それでも...私はGoが大好きで、あなたに最高の運を願っています。 –

+0

ええ、それは本当に役立っていて、間違いなくそれらの原則のいくつかに従います。もう一度やり直します。私はもう一度聞くことができる実用的なものを持っています。 – zauzaj

関連する問題