views:

275

answers:

5

Hi there,

We currently have an inventory management system that was built in-house. It works great, and we are constantly innovating it.

This past Fall, we began selling products directly on one of our websites via a Shopping Cart checkout.

Our inventory management system runs off a server in the office, while the three websites we currently have (only one actually sells things) runs off an outside source, obviously.

See my problem here? Basically, I am trying to think of ways I can create a central inventory control system that allows both the internal software and external websites to communicate so that inventory is always up to date and we are not selling something we don't have.

Our internal inventory tracking works great and flows well, but I have no idea on how I would implement a solid tracking system that can communicate between the two.

The software is all written in Python, but it does not matter as I am mostly looking for ideas and methods on how would this be implemented.

Thanks in advance for any answers, and I hope that made sense .. I can elaborate.

+1  A: 

One possibility would be to expose a web service interface on your inventory management system that allows the transactions used by the web shopfront to be accessed remotely. With a reasonably secure VPN link or ssh tunnel type arrangement, the web shopfront could get stock levels, place orders or execute searches against the inventory system.

Notes:

  1. You would still have to add a reasonable security layer to the inventory service in case the web shopfront was compromised.

  2. You would have to make sure your inventory management application and server was big enough to handle the load, or could be reasonably easily scaled so it could do so.

Your SLA for the inventory application would need to be good enough to support the web shopfront. This probably means some sort of hot failover arrangement.

ConcernedOfTunbridgeWells
A: 

I don't see the problem... You have an application running on one server that manages your database locally. There's no reason a remote server can't also talk to that database.

Of course, if you don't have a database and are instead using a homegrown app to act as some sort of faux-database, I recommend that you refactor to use something sort of actual DB sooner rather than later.

Jorenko
A: 

@NXC - Thanks for your reply. I was figuring the idea of running some sort of low level web service to talk between all the sites would work well, and keep things clean. I will look into more detail what you described

@Jorenko - Of course we are using a database. The only reason I wouldn't want our websites talking to the local server directly, on-the-fly is that our internal server is running off our basic connection here and I would not say it's reliable. Additionally, we currently cannot expand our infrastructure (in terms of our connection) so I have to make do.

Thanks both, I like the idea of running some form of service on the external server that collects data from our internal one and serves it to our websites, which seems like the most reliable and quickest way to do things.

Bartek
Is this clarification on your question? If so, please update your question with these additional facts.
S.Lott
A: 

I'm not sure if there is any one really good solution for your problem. I think the way you are doing it now works fine, but if you don't agree then I don't know what to tell you.

A: 

I know you wanted to find a solution that works with your existing code, but have you considered a third party multi channel manager system? As your business grows and the scale of your orders increase, it may become easier to use a multi channel manager system such as Mailware. As an inventory control software, it handles a large number of orders for multiple locations and manages your inventory levels at the multiple locations. This software also integrates with shopping cart software to give your customers accurate levels of inventory to prevent back orders. Best of luck to you.