誰かがこの問題について何らかの洞察を持っているかどうか疑問に思っていました。
少し背景:
Rails を使用して古い dBase と Visual Basic ベースのシステムから移行し、ラベル印刷、在庫管理、出荷などを行う社内の IntrAnet を構築しました。基本的には ERP です。
ジレンマ
現在、Java で作成されていた古い顧客向け Web サイトを置き換える必要があります。この Web サイトは、クライアントが使用する内部システムに接続されます。在庫、発注、口座明細などの情報を社内システムから引き出して、ライブでサイトに公開できるようにしたいと考えています。その理由は、ウェブサイト、ファックス、電話で注文を受け付けており、時にはウォークインもあるからです。そのため、30 分以内に同じ商品を 2 人の顧客に販売するため、古い Java サイトで在庫の更新が少し遅れただけでも、(非常にまれに) 注文を取り寄せてしまうことがあります。通常は 1 日以内に修正されますが、将来的には回避したいと考えています。
実際の質問
これをより良い方法で達成する方法について誰か提案がありますか?
私が見る3つのオプションは次のとおりです。
a) 内部アプリが接続するのと同じDBに接続する別の Rails アプリを Web サーバー上に構築します。
+++ プラス: ライブデータ - 内部アプリが見るのと同じもの、つまり、注文はリアルタイムで作成され、在庫はすぐに使い果たされます
--- マイナス: 潜在的なセキュリティ リスク、コードの重複 - つまり、注文を処理するすべてのコントローラー、モデル、ビューなどを複製する必要があります。
b) 内部アプリとは別の DB に接続する別の Rails アプリを Web サーバー上に構築します。
- +++ プラス: セキュリティへの露出が少ない。
- --- マイナス点: Web DB と内部 DB を同期するための余分な労力 (または REST-API のような Web サービスを使用する)、在庫の枯渇と注文番号の作成を処理するための追加のコード、コードの複製 - つまり、すべてのコントローラーを複製する必要があります。注文を扱うモデル、ビューなど。
c) 内部アプリを Web に公開する
- +++ プラス: 上記のすべての問題が解消されました。これはかなり「DRY」な方法です。
- --- マイナス: セキュリティ上の問題がさらに多くなります。より複雑なログイン システム - 1 つは Web 用、もう 1 つは LDAP を使用する内部ユーザー用です。
それで、何か考えはありますか?誰もが同様の問題を解決しましたか?当社のリソースは限られていることに注意してください。つまり、これに専念する開発者は 1 人です。したがって、これは「お金/人/リソースを投入する」ソリューションではなく、「適切な」「スマートな」ソリューションの 1 つでなければなりません。
ありがとうございました。