Laravel மூலம் ஒரு Multi-Vendor Marketplace-ஐ உருவாக்குவது எப்படி

ஒரு marketplace-ஐ உருவாக்குவது என்பது ஒரு தரவு (data) சார்ந்த சவாலாகும்.

பெரும்பாலான டெவலப்பர்கள் விற்பனையாளர் டேஷ்போர்டு (seller dashboard) தான் கடினமான பகுதி என்று நினைக்கிறார்கள். அது இல்லை. உண்மையான சவால் 'multi-tenancy' ஆகும். ஒவ்வொரு query-யும் ஒரு கேள்விக்கு விடையளிப்பதை நீங்கள் உறுதி செய்ய வேண்டும்: இந்தத் தரவின் உரிமையாளர் யார்?

நீங்கள் ஒரு சாதாரணக் கடையை உருவாக்கிவிட்டு, பின்னர் விற்பனையாளர்களைச் சேர்க்க முயன்றால், நீங்கள் முழுமையாக மீண்டும் எழுத வேண்டியிருக்கும். ஒவ்வொரு model, ஒவ்வொரு query மற்றும் ஒவ்வொரு cart மூலமாகவும் ஒரு vendor ID-யை நீங்கள் இணைக்க வேண்டியிருக்கும். நீங்கள் ஒரு filter-ஐத் தவறவிட்டால், ஒரு விற்பனையாளர் மற்றொரு விற்பனையாளரின் ஆர்டர்களைப் பார்த்துவிடுவார். அது ஒரு தரவு கசிவு (data leak) ஆகும்.

உங்களிடம் மூன்று தேர்வுகள் உள்ளன:

  • நீங்களே உருவாக்குங்கள்: நீங்கள் ஒவ்வொரு scoping clause-ஐயும் எழுத வேண்டும். இது செலவு மிக்கது மற்றும் ஆபத்தானது.
  • add-ons உடன் ஒரு single-tenant கடையைப் பயன்படுத்துங்கள்: இதற்காக வடிவமைக்கப்படாத ஒரு schema-வில் vendor columns-களை நீங்கள் இணைக்க வேண்டியிருக்கும். தரவுப் பிரிப்பு (Isolation) பலவீனமாகவே இருக்கும்.
  • ஒரு multi-tenant அடித்தளத்தைப் பயன்படுத்துங்கள்: முதல் நாளிலிருந்தே தரவு மாதிரியில் (data model) isolation-ஐக் கட்டமைக்கும் Aimeos போன்ற ஒரு package-ஐப் பயன்படுத்துங்கள்.

Aimeos பயன்படுத்தி ஒரு சாதாரணக் கடையை எவ்வாறு ஒரு marketplace-ஆக மாற்றுவது என்பது இதோ:

1. அடித்தளத்தை நிறுவுங்கள் (Install the foundation)

தொடங்குவதற்கு இந்த command-ஐ இயக்கவும்: composer create-project aimeos/aimeos myshop

2. multi-vendor முறையைச் செயல்படுத்தவும் (Enable multi-vendor mode)

உங்கள் database-ஐ நீங்கள் மீண்டும் எழுதத் தேவையில்லை. உங்கள் .env கோப்பில் ஒரு வரியை மட்டும் மாற்றவும்: SHOP_MULTISHOP=true

இந்த flag தானாகவே ஒவ்வொரு route, API மற்றும் admin panel-ஐயும் ஒரு குறிப்பிட்ட site-க்கு மட்டும் வரையறுக்கும் (scope). தரவுப் பிரிப்பினை (data separation) சிஸ்டமே உங்களுக்காகக் கவனித்துக் கொள்ளும்.

3. சுய-சேவைப் பதிவைச் செயல்படுத்தவும் (Enable self-service onboarding)

வணிகத்தை விரிவுபடுத்த, விற்பனையாளர்களே தாங்களாகவே பதிவு செய்ய அனுமதிக்கவும். உங்கள் .env கோப்பில் இதையும் சேர்க்கவும்: SHOP_REGISTRATION=true

புதிய விற்பனையாளர்கள் தங்களது சொந்த catalog, orders மற்றும் customers ஆகியவற்றை மட்டுமே பார்க்க முடியும். அவர்களால் வேறு எதையும் பார்க்க முடியாது.

இது ஏன் வேலை செய்கிறது:

Aimeos அனைத்தையும் "site"-ஐச் சுற்றியே ஒழுங்கமைக்கிறது. ஒவ்வொரு product, price மற்றும் order-ம் ஒரு site ID-யைக் கொண்டிருக்கும். Data layer இதைத் தானாகவே வடிகட்டும் (filter). நீங்கள் "where site_id = ?" என்று எழுதத் தேவையில்லை, ஏனெனில் சிஸ்டமே அதை உங்களுக்காகச் செய்கிறது.

இந்த அணுகுமுறை மூன்று முக்கியப் பிரச்சினைகளைத் தீர்க்கிறது:

  • பாதுகாப்பு (Security): தரவுப் பிரிப்பு (Data isolation) என்பது database-ன் ஒரு பண்பு, நீங்கள் மறந்துவிடக்கூடிய ஒரு code பகுதி அல்ல.
  • சிக்கல்தன்மை (Complexity): நீங்கள் schema-வை மாற்றாமலேயே, விற்பனையாளர்கள் subscriptions அல்லது bundles போன்ற சிக்கலான தயாரிப்புகளை நிர்வகிக்க முடியும்.
  • கட்டணங்கள் (Payments): கட்டணங்களை உடனடியாகப் பிரிக்க Stripe போன்ற extensions-களைப் பயன்படுத்தலாம். தளம் ஒரு கமிஷனை எடுத்துக்கொண்டு, மீதமுள்ள தொகையை விற்பனையாளருக்கு வழங்கும்.

அடிப்படை கட்டமைப்புகளை (plumbing) உருவாக்குவதை நிறுத்துங்கள். உங்கள் marketplace-ஐ உருவாக்கத் தொடங்குங்கள்.

ஆதாரம்: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a