ERP開発

2年半前、企業の運営を管理するシステム、この場合は小規模な店舗チェーンが必要でした。 彼らはある種の最小限のボックスプログラムから始めましたが、それはよく知られた標準的な2文字システムではありませんでした。 彼は自分の努力をすることを提案しましたが、完全に彼自身のERPを書くことは面白くなりました。 一般的に、私はそれが私にどれくらいの費用がかかるかをほぼ理解しました。私は95年目から、主に電気通信、銀行、保険会社で契約に取り組んできましたが、時には生産もしています。 私は計画された規模を実現するのに十分なプロジェクトを見ましたが、このイベントについての短いセットで、豚は食べない、窒息しないと決めました。



まず第一に、そこにあったものの代わりに通常の機器を供給する必要があり、ファイアウォールはモントリオールで購入され、私はカリフォルニアで2台のサーバーを注文しました。 一般的にロサンゼルス、トロント、フランクフルト、ピーターからオンタリオ州から車を運転しました。 ハードウェアは、いくつかのパラメーターに従って選択されました。2番目のプロセッサーを追加できるデータベース、最大96GBのメモリー、最大16個の3.5インチディスク。1Uソフトウェアサーバーにはすでに2つのプロセッサーと32GBがあります。ソフトウェアサーバーにはRAID1に2つのハードドライブがあります。また、2つのSSDがRAID1にあり、すべてが2Uボックスにあります。メインベースはSSDにあり、OSはハードドライブにあり、そこにバックアップがあります。ファイアウォールには、ハードドライブとオプションのフラッシュカード内の1/2ポートに6つのポートがあります。シリアルポート、VGA、および外部電子ヘルスモニター。 IONのRed Hat、ファイアウォール上のサーバー設定、OpenBSDの。鉄ボックスに靴下とすべての手荷物で詰め物ではなく、ポイントでの面白い話がありました。



そもそも、これをすべて収集して確立する必要がありましたが、これは「金属の専門家」(別の面白い話)の助けを借りて行われました。 その後、ショッピング旅行があり、開発自体が始まりました。 最初のステップは、既存のシステムから単一の全体にデータを収集することでした。 このために、SSLを介してデータを送信するシステムが送信されました(これにはOpenBSDが非常に便利です。また、Theoは私を感心させます)。 幸いなことに、データは所定のスケジュールに従って収集されました。送信されたもの、レジから店舗のサーバーに行くもの、サーバーからレジに行くものすべてが記録され、ローカルの単純なファイル「データベース」に記録され、次のデータを待っていました伝送。 システムはモデムを起動しようとし、送信しました。 すべてのデータは、仮想OSユーザーから収集されました。 各ストアは、プログラムをオフにしないよう指示を受けました(MS Windowsの非プロフェッショナルバージョンでプログラムをサービスとして実行しても機能しませんでした)。



次のステップはもちろん、蓄積されている着信ファイルを把握し、それらを処理して、新しいデータベースに書き込むことです。これも慎重にモデル化する必要があります。 これはかなり長く、あまり快適なプロセスではありません。一部のファイルはあまり文書化されていませんが、ネットワークの管理に使用されたプログラムのサーバー側に関するすべては、あなたがこの異常なモデルを好きで理解しているように、単なる野生の文書でした。 ある時点で、データはファイアウォールから新しいデータベースに忍び込みました。 自然に数回の訪問があり、基地を消去する必要があり、見つかった新しい問題は修正され、再び過負荷になりました。 最終的に、データが20分ごとに到着してロードされるようになり、作業が楽になりました。 今、このすべての富を使うという問題が生じています。



少し脱線します-独自のERPを作成する理由 多くのボックス化されたソリューションがあり、さらに、ロシアではよく知られたプログラムに最も慣れていることが知られているため、ポイントは何ですか? 簡単な答えはありません。複雑なものもたくさんありますが、これは言えることです。新しい小さなチェーンと既存のチェーン店と競争するのは難しいため、それをしなければなりませんでした。 あなたは他のすべてから自分自身を押しのける何らかの方法を持っている必要があります;あなたは競争への新しいアプローチが必要です。 実際、これはさまざまな視点から、そして私の観点(2年前)およびネットワークの観点から大きなリスクでした-すべてがうまくいくという保証と、誰もがそれを使用することを確立するのが容易ではないという保証はどこにありますか? しかし、事実は、誰もがそれを使用するという事実がすべての人を同じレベルに保ち、あなたがすべての人と同じレベルにいるとき、生存の保証はあなたとまったく同じである他のすべての人と同じです。



システムは標準のJavaビジネスシステム(JVM、Tomcat、Struts、Apache Server、PostgreSQL、もう少しシェルと期待)として始まりましたが、開発を高速化するために多数のコードジェネレーターが作成されました。 標準コードは標準構成ファイルから生成されるため、データベース、プレゼンテーションファサード全体、およびそれらを接続するすべてのもの(ビジネスロジックのシェル)と通信するための最初の準備が作成され、それが正しい判断であり、信じられないほどの時間を節約しました。 文字通り、3〜4日間手作業で行われていたことは、数時間で完了しました。 「標準」のようにこのプログラムで作業することは機能しないことがすぐに明らかになりました。機能し、実行速度を上げるいくつかのアーキテクチャ上の決定を行う必要があります、または私は200以内のシステムからの応答を期待するユーザーに慣れているため、これは完全にカバーされています-800ミリ秒以下。 しかし、ここではすでに約15の店舗と少なくとも1か月の時間間隔をカバーするレポートが作成され始めていますが、すぐにレポートの時間間隔は1年になりました。 つまり、約40人のディレクター/マネージャーが1つまたはすべての店舗で製品カテゴリを販売することに関心があり、1か月から12か月のデータを一度に見たいと考えていました。 オブジェクトモデルの使用方法を処理する必要がありました。レポートを30分間待つことを誰も望んでおらず、そのようなことを人々に与えるのは下品です。 1か月の作業の後、解決策が見つかりました。また、レポートに対する各ユーザーリクエストがデータベースに入力され、システム自体を調べて、何を、どのくらいの時間、どのパラメーターを使用するかを確認することができました。 このシステムは、ユーザーが製品をフィルタリングするための簡略化された正規表現を作成できるため、従業員の作業を監視し、人々を教育するのに役立ちました。 しかし、一般的に、結果は正常であることが判明し、リクエストの90%が1秒未満で、別の9%が10秒未満で、別の1%が1〜2分で完了しました。



もちろん、ERPは収集されたデータに関するレポートであるだけでなく、たとえばデータ入力管理など、他にも多くのものがありますが、ここでも独自のスキルがあります。 各店舗で商品が独自の方法でデータベースに入力される場合、15店舗のデータを1つのデータベースに結合する方法は? 彼らの名前、時には彼ら自身のバーコード、彼ら自身の「フォルダ」、それらの価格さえ。 これを行うには、システムは商品を可能な同一商品のリストに自動的にマージし、オペレーターがリストを変更し、データの一部を編集し、これらの関連付けを1つの製品として記録する方法を学習する必要がありました。 当然、これはシステムの観点からだけでなく、オペレーター自身がそれを正しく管理できなければならず、システムはこれらのエラーをキャッチして修正できるようにする必要があります(そして、このために異なるロジックを実行できる異なる機能で特別なコントロールパネルが作成されなければなりません)システム内のすべてのデータのすぐ上-いくつかのパラメーターを設定し、キーを押して、問題が発生する可能性があるファイルを吐き出すまで数分待ちます。 同時に、あなたはすでに製品を作成して正しく分類できる必要があります、私はそれを掘り下げたくはありませんが、特に分類方法とその階層に関して、この種の他のシステムには存在しないいくつかの解決策がここに現れました。



もちろん、ERPでは、機能が多ければ多いほど良いです。 収集したデータは、システムにオファーや広告を送信するためのコンポーネントを追加するのに十分であり、その後、配布前後の顧客の購入に関するデータを分析するためのコンポーネントを追加しました。 顧客は誕生日のあいさつを受け取り始めました(そして、一部の人は自動あいさつに応答します。これは非常に楽しいです)。 サプライヤをネットワークに統合するために別の優れたコンポーネントが開発されましたが、最初はサプライヤはそのようなアプローチの考え方にも非常に抵抗していましたが、一部は説得されて新しい配信方法に切り替えられ、システムにグラフィカルなレポートが表示されたため、特性ごとに売上を比較することができます(たとえば、同じチャートで、期間および店舗ごとにブランド別およびサプライヤ別の商品グループの売上を比較できます)。 彼らはデータを見ただけでシステムに切り替えました、そしてあなたは申し立てとは異なり、データと議論することはできません。 サプライヤーの場合、ユーザー数は4倍に増加しましたが、速度の変化は見られず、さらに次の段落で行われたことが速度の向上に役立ちました。



取得したデータの収集と管理から、すべての店舗で一度に適用できるより一般的な製品への多くの製品の関連付けまで、次の質問は、店舗の既存の管理システムを削除し、独自の統合を設定して、各店舗と完全に連携し、完全な記録を維持できるようにする時間ですすべての文書と商品。 最初から、1年の約3分の1で、システムは通常2倍になります。サーバー/クライアント、サーバーはメインプラットフォームのAPIを介して統合され、ドキュメントはすべての方向に流れ、ファイルはなくなり、時が来て、プライマリファイル交換をオフにすることができました。 一般に、40時間ですべての店舗は新しい管理システムに移行されましたが、GNU / Linux(Ubuntu)への切り替えも含まれていました。一般に、ライセンスの費用をいくらか節約できますが、さらに重要なことは、ウイルス。 システムは自動的に中央プラットフォームとキャッシュデスク/価格テスターと通信し、手動での配線は不要になり、いわゆるzレポートは以前のソリューションのように2時間近くかかっていません。これは過去のものです。 これはすべて、システム内の速度に良い影響を与えました。なぜなら、ロジックをコード内の主要なロジック(多くの店舗があるという原則に基づいて動作するロジックから切り替えることができるようになったからです。共通のシステムに関連付けられ、これらの関連付けはストアにフォールバックしませんでした)、2番目のバージョンのロジック-ネットワーク全体が1つの共通ベースで動作し、これにより、すべての要件、使用されるメモリ、データベースクエリの複雑さ、クエリの数が削減されます



プラットフォーム内のドキュメントフロー全体の出現により、会計をなだめることが可能になりました。 それ以前は、手動モードでしたが、非常に残念でした。 もちろん、彼らは必要な会計プログラムとネットワーク上の銀行を通じて支払いを許可するプログラムを持っていましたが、ほぼ半年間、彼らは彼らのプログラムにデータをロードすることに苦しみました。 彼らは、必要なデータを必要な形式で自動的にアップロードできることを本当に嬉しく思い、後で彼らの気分はサプライヤーへの支払いに関するレポートを提起しました。



ちなみに、これはすべての期間に商品の残高があるレポートを表示するにはまだ十分ではありませんでした-これは最初に考えることではありません。 しかし、後で、1種類のレポートのみのために特別に収集する必要がある情報があることがわかります。そうでなければ、外出中にそのような何かを計算しようとすると、特に苦しみます。



まだやることがたくさんあり、この種の一般的なプログラムでは終わりがありません。最後の点を言うことはできません。すべて、これは最大で、ここでやることはありません。 しかし、このプロジェクトに2年間携わった後、誰かが私に尋ねたら-ゼロからたくさんの未知のもので、あなた自身の大きな何かを書く価値はありますか? あなたが書く必要があるものに答えると思います。



質問があれば、コメントを書いて、答えます。



All Articles