I am planning to use wordpress as the base for my next web application. Earlier I have used RoR, Laravel etc. for web application and wordpress mainly for blogging.
The web application will define a seperate PRODUCT table (other than the default wordpress tables), and based on the url structure the data for a a particular product will be fetched.
e.g. http://webapp.com/product/dummy
http://webapp.com/product/pummy
dummy, pummy is the seo friendly name of the specific product. Under a particular url the data for the product is to shown. The legacy data (about 15000 products) will be imported into the product table.
Most of the frameworks like RoR, Laravel etc support routing, where in you can read the url and fetch the data from the database and display. So using a function in your controller you can fetch the data and display it using views.
I want to understand the best practices and how this can be implemented in wordpress. In case product is a custom post, do we create one post per product (15000 posts in this case) etc.
You can implement it in wordpress by creating custom post types
and creating one post per product.
In your above stated example :
http://webapp.com/product/pummy
Custom Post Type will be product and pummy will be slug of custom post.
You can use above url structure by changing wordpress Permalink Settings to Post name.
You can handle this product page by creating single-product.php file in your theme. for more information about this file , see this page.
In this file just call built in functions of wordpress to display data of that particular product and wordpress will manage querying database and retrieving data for you.
Example functions : the_title(); the_content(); the_excerpt();