クラウドベースのレストラン自動化システムの作り方

こんにちは、Habr! 企業ブログの最初のエントリは、百科事典上の重要性を主張するものではないため、厳密に判断しないでください。これは、開発中の企業および製品に関する単なる知識です。



このストーリーは、レストランの自動化システムをどのように開発したかについてです。







どのようにすべてが始まりましたか?



私たちの小さな開発会社は、すべて銀行や処理センターの大手ソフトウェア会社から、配送サービス用のモバイルアプリケーションの注文を受けます。 TORのポイントの1つは、このアプリケーションと顧客機関が使用する自動化システムとの統合です。 仕事をする中で、私たちは最初に対話しなければならないシステムに興味を持ち、そのようなビジネス全般の自動化に興味を持ちました。 「なぜ彼ら全員がこれをしているのか?」というトピックに対するResみ これは不便です!」、「彼らはすべてタッチセンシティブオールインワンを使用します、なぜタブレットではないのですか?」、「インターフェースの設計方法を教えたのは誰ですか」何時間も止まりませんでした。 そして、誰かが言った、「そして、ブラックジャックタブレットと美しい(便利な)を使って、自分でやろう」 2013年3月の素晴らしい年でした...



そのため、コンセプトを決定しました。新しいシステムの重要な機能は、展開、管理の容易さ、最小限の投資と労力で作業を開始し、ビジネスの拡大に合わせてこのシステムから収益を受け取り続けることです。 レストランビジネスのオーナーが「数回クリックするだけで」自動化を行えるなら、それは素晴らしいことです。 しかし、これを達成する方法は? 同様のレベルの展開と運用の容易さを提供するアーキテクチャソリューションはどうあるべきですか?



OK Google、iPadがあり、そこからコンパクトで便利な端末が出てきます。 インターフェイスの最初のプロトタイプを作成し、アプリケーションを構築しました。







そして離れて行く...



iPadにはCOMポートはどこにありますか?



私たちは確かに素晴らしい国に住んでいます。 政府機関が昨日の技術を使用している国では、これを考慮しなければなりません。 現在、中小企業の税務サービスの要件については詳しく説明しませんが、誰かが知らない場合、技術的には次のようになります。すべての売上を追跡し、キャリアに保存するデバイスを使用する必要があります。 。 そして、すべてがうまくいきますが、このデバイスは主にCOMポートで動作し、BT接続の形の革新により応答時間が数倍になります。 では、特別なタイプのサーマルプリンターでiPadを動作させる方法は、ロシアでは誇らしげに会計レジストラと呼ばれています。



通常のコンピューターを自由に使えば、周辺機器を接続できるという考えに再び戻りました。 必要に応じて、サポートされていないデバイス用のドライバーを開発し、その操作性を確保することもできます。 しかし、別個のコンピューターはなく、稲妻ポートを介してiPadに何かを接続することは、少なくともAppleの認定のため、ほとんど不可能です。 理想的なソリューションは、メンテナンスを必要とせず、周辺機器へのインターフェースを提供する一種の「ボックス」です。 もちろん、一部のマイクロコントローラーに基づいて独自のデバイスを開発することも可能ですが、当社にはこのタスクを引き受ける電子専門家がいませんでした。 さらに、このようなデバイスを単独で開発すると、システム全体の可用性が大幅に向上します。 私たちは、システムを構築できる既成のソリューションを探しに行きました。



そして、そのようなソリューションは、みんなのお気に入りのRaspberry Piの形で見つかりました。 「ラズベリー」は、安価でコンパクトで、電力をほとんど消費せず、USBポート経由でデバイスを接続することができます(これは、ほとんど血を流さずにCOMに変換できます)。したがって、ハードウェアレベルで周辺機器を接続する問題はなくなります。 また、重要な利点は、「ラズベリー」がLinuxで実行されることです。つまり、このプラットフォーム用のソフトウェアの開発は、たとえばマイクロコントローラー用よりもはるかに簡単です。 Raspberryのソフトウェアを更新する手順は簡単で簡単です。古いバージョンのSDカードを取り出し、新しいバージョンのメディアを挿入します。 必要に応じて、素人でも満たすことができます。つまり、特別なメンテナンスを必要としないシステムと、これに責任を持つ別のスペシャリストという当初のアイデアを十分に満たすことができます。



これは技術サポートの祝福ではありませんか? 技術的には、必要に応じて、このようなデバイスにリモートから(たとえばSSH経由で)アクセスして、問題を修正できます。 また、レストランのスタッフが「デバイスをネットワークに接続し、特定のボタンを押して、スペシャリストが問題に対処するまで待つ」というレベルのアクションをとる必要があります。



これらすべてを分析した後、Raspberry Piが最終製品として受け取った名前であるQRBoxをシステムに追加しました。 CouchDBを介してピアツーピアネットワーク内の他の端末と対話し、周辺機器との間で情報を送受信します。 彼らはケースを印刷しようとしても、結果は完璧にはほど遠い:







たとえば、小切手を印刷するために、端末は小切手を説明するドキュメントをCouchDBに配置します。 QRBoxはこのドキュメントを受け取り、会計レジストラのデータパケットを形成し、小切手が印刷されていることを確認し、CouchDBに適切なマークを端末に付けます。



結論:プロトタイプと呼ぶことができる解決策があります。 端末は小切手を印刷し、wi-fiを介してローカルマシンとデータを送受信します。 バックオフィスに渡します。



サーバーが必要ですか?



もちろん、自動化システムのコンポーネントの展開と保守に最もコストがかかるのは、他のすべてのデバイスの制御を提供するサーバーです。 サーバーを購入する必要があります。OSをインストールし、必要なサービスをインストールし、ネットワークを構成し、中断のない電源、冷却、バックアップを提供する必要があります。 ハードドライブのスペースが不足しないこと、故障や故障自体の発生時にハードドライブ自体が時間通りに交換されることなどを確認する必要があります。 これには、金融投資だけでなく、人的資源も必要です。 この仕事を引き継ぐシステム管理者、システム管理者が支払う必要がある、彼は最も不適当な瞬間に病気になり、彼はやめることができます...



しかし、サーバーなしで行うとどうなりますか? もちろん、完全にそれなしで行うことは不可能ですが、各レストランチェーンまたは各レストランでの独自のサーバーの可用性がオプションになった場合はどうなりますか? サーバーが、資格のある専門家の慎重な監督の下で、設備の整ったサーバールームのどこか遠くにある場合はどうなりますか? サーバーが最新の方法で「クラウド」内にある場合、クラウドへの道が広くなり、アクセスしやすくなります。なぜですか。



最初は、この考えは奇妙に思えました。 結局のところ、クラウドサービスの作業は、クラウドサービスとの通信の品質に完全に依存していることを誰もが理解しています。 インターネット接続は、「クラウド」からエンドユーザーまでのあらゆるサイトで失われ、レストランは「立ち上がる」ことになります。 インターネットチャネルの予約をお客様に要求しますか? いつでもどこでも可能なわけではなく、比較的小さな資金でも可能です。 また、インターネットチャネルの提供に多額の投資が必要な場合、ローカルサーバーを削除することによる節約はすべて失われます。



しかし、さらに考えが発展しました。 サーバーとの永続的な接続は本当に必要ですか? 端末は、過去数時間または数日で完了した操作に関するデータを保存し、定期的に中央サーバーにデータをアップロードするための独自のメモリを持つことはできませんか? そして、私たちはソリューションから一歩離れていることに気付きました-端末間のピアツーピアピアツーピアネットワーク! 実際、必要なデータがすべて端末自体にあり、それらが相互に交換できる場合、なぜ中央サーバーが必要なのでしょうか?



分析の結果によると、解決策が可能であり、非常に実行可能であることが明らかになりました。 ストレージシステムとして同じCouchDBが選択され、マスターアウトオブボックスモードのノード間のレプリケーションがサポートされています。 このデータベースの実装は、Linux、iOS、Android、Windowsを含む多くのプラットフォームに存在し、これらのプラットフォームのいずれかに端末アプリケーションを移植する可能性を開きました。 その結果、専用サーバーを使用せずに、すべてのタスクを端末とクラウドサービスに割り当てることができるソリューションが実現しました。







スキームで結果のソリューションの一般的なスキームを見ることができます。 メインデータウェアハウスはPostgreSQLデータベースであり、サーバーアプリケーションを介してデータが取得されます。 サーバーアプリケーションは、POSの円滑な運用に必要なデータの一部をCouchDBにアップロードし、そこから特定のPOSの端末データベースに複製します。 たとえば、通信障害の結果としてレプリケーションメカニズムに障害が発生しても、致命的な結果につながることはありません。障害の原因、つまりデータベース間の通信を復元した後、レプリケーションが復元されます。 同時に、作業中の端末は中央サーバーとの通信不足に気づきません。ローカルデータベースは機能しており、ピアツーピアネットワークを形成する他の端末からの新しいデータで補充することもできます。



しかし、もちろん、システム管理者には、システム全体のデータを操作できる独自の職場が必要です。 統計の表示、グローバル設定の変更、新しいターミナルの登録、価格の変更など、さまざまな機能があります。 このようなワークステーションは、REST APIを介してメインサーバーアプリケーションと対話するWebアプリケーションとして実装されます。



Webアプリケーションの開発時には、レスポンシブWebアプリケーションの構築における業界の最新の成果が使用されました。特に、剣道UIコンポーネントとAngularJSフレームワークが基盤として選択されました。 既製のコンポーネントを使用すると、ユーザーインターフェイスの開発時間が大幅に短縮され、データを管理するための明確で便利で普遍的な方法の提供に集中できます。 その結果、管理者はシステムの個々のオブジェクトに関する詳細なデータを取得する機会と、レポートと集計データの提供を使用して全体像を観察する機会の両方を得ることができます。



次は?



製品はリリースされ、勢いを増しており、私たちがそれを気に入っているだけではないようです:)











機能を徐々に構築し、ポップアップバグを修正しています。 競合他社の出現を監視しています。 一言で言えば、平日のスタートアップ。 しかし、今日、おそらく、すべて-私たちの製品とその開発に関する詳細については、以下の投稿で説明します。 それまでの間、お会いできてうれしく思います。コメント欄でご質問にお答えいたします。



PS登録とSMSなしでバックオフィスを見たい人のために、完成したデモ層があります: test.quickresto.ru (ログイン:テストパスワード:テスト)



All Articles