Laravelతో మల్టీ-వెండర్ మార్కెట్‌ప్లేస్‌ను ఎలా నిర్మించాలి

మార్కెట్‌ప్లేస్‌ను నిర్మించడం అనేది ఒక డేటా సమస్య.

చాలా మంది డెవలపర్లు కష్టమైన భాగం సెల్లర్ డాష్‌బోర్డ్ అని అనుకుంటారు. కానీ అది కాదు. అసలైన సవాలు మల్టీ-టెనెన్సీ (multi-tenancy). ప్రతి క్వెరీ (query) ఒకే ప్రశ్నకి సమాధానం ఇస్తుందని మీరు నిర్ధారించుకోవాలి: ఈ డేటా ఎవరిది?

మీరు ఒక సాధారణ షాప్‌ను నిర్మించి, తర్వాత వెండర్లను జోడించడానికి ప్రయత్నిస్తే, మీరు మళ్ళీ మొదటి నుండి రాయాల్సి వస్తుంది. మీరు ప్రతి మోడల్, ప్రతి క్వెరీ మరియు ప్రతి కార్ట్‌లోకి వెండర్ ఐడిని (vendor ID) అనుసంధానించాల్సి ఉంటుంది. మీరు ఒక ఫిల్టర్‌ను మర్చిపోతే, ఒక సెల్లర్ మరొక సెల్లర్ యొక్క ఆర్డర్‌లను చూసే అవకాశం ఉంటుంది. అది డేటా లీక్ (data leak) అవుతుంది.

మీకు మూడు ఎంపికలు ఉన్నాయి:

  • మీరే స్వయంగా నిర్మించడం: మీరు ప్రతి స్కోపింగ్ క్లాజ్‌ను (scoping clause) స్వయంగా రాయాలి. ఇది ఖర్చుతో కూడుకున్నది మరియు రిస్క్‌తో కూడుకున్నది.
  • యాడ్-ఆన్‌లతో కూడిన సింగిల్-టెనెంట్ షాప్‌ను ఉపయోగించడం: వెండర్ల కోసం డిజైన్ చేయని స్కీమాపై మీరు వెండర్ కాలమ్స్‌ను జోడించాల్సి వస్తుంది. దీనివల్ల డేటా ఐసోలేషన్ (isolation) బలహీనంగా ఉంటుంది.
  • మల్టీ-టెనెంట్ ఫౌండేషన్‌ను ఉపయోగించడం: మొదటి రోజు నుండే డేటా మోడల్‌లో ఐసోలేషన్‌ను నిర్మించే Aimeos వంటి ప్యాకేజీని ఉపయోగించండి.

Aimeos ఉపయోగించి ఒక సాధారణ షాప్‌ను మార్కెట్‌ప్లేస్‌గా ఎలా మార్చాలో ఇక్కడ ఉంది:

  1. ఫౌండేషన్‌ను ఇన్‌స్టాల్ చేయండి ప్రారంభించడానికి ఈ కమాండ్‌ను రన్ చేయండి: composer create-project aimeos/aimeos myshop

  2. మల్టీ-వెండర్ మోడ్‌ను ఎనేబుల్ చేయండి మీరు మీ డేటాబేస్‌ను మళ్ళీ రాయాల్సిన అవసరం లేదు. మీ .env ఫైల్‌లో కేవలం ఒక లైన్ మార్చండి: SHOP_MULTISHOP=true

ఈ ఫ్లాగ్ ప్రతి రూట్ (route), API మరియు అడ్మిన్ ప్యానెల్‌ను ఆటోమేటిక్‌గా ఒక నిర్దిష్ట సైట్‌కు స్కోప్ చేస్తుంది. సిస్టమ్ మీ కోసం డేటా విభజనను (data separation) చూసుకుంటుంది.

  1. సెల్ఫ్-సర్వీస్ ఆన్‌బోర్డింగ్‌ను ఎనేబుల్ చేయండి వ్యాపారాన్ని విస్తరించడానికి, వెండర్లు స్వయంగా సైన్ అప్ చేసుకునేలా అనుమతించండి. మీ .envలో దీనిని జోడించండి: SHOP_REGISTRATION=true

కొత్త సెల్లర్లకు వారి స్వంత క్యాటలాగ్, ఆర్డర్‌లు మరియు కస్టమర్‌లకు మాత్రమే యాక్సెస్ ఉంటుంది. వారు మరే ఇతర సమాచారాన్ని చూడలేరు.

ఇది ఎందుకు పనిచేస్తుంది: Aimeos ప్రతిదీ "సైట్" (site) చుట్టూ నిర్వహిస్తుంది. ప్రతి ఉత్పత్తి, ధర మరియు ఆర్డర్‌కు ఒక సైట్ ఐడి (site ID) ఉంటుంది. డేటా లేయర్ దీనిని ఆటోమేటిక్‌గా ఫిల్టర్ చేస్తుంది. సిస్టమ్ మీ కోసం దీనిని చేస్తుంది కాబట్టి, మీరు "where site_id = ?" అని రాయాల్సిన అవసరం లేదు.

ఈ విధానం మూడు ప్రధాన సమస్యలను పరిష్కరిస్తుంది:

  • సెక్యూరిటీ (Security): డేటా ఐసోలేషన్ అనేది డేటాబేస్ యొక్క లక్షణం, మీరు మర్చిపోయే అవకాశం ఉన్న కోడ్ ముక్క కాదు.
  • సంక్లిష్టత (Complexity): మీరు స్కీమాను మార్చకుండానే వెండర్లు సబ్‌స్క్రిప్షన్లు లేదా బండిల్స్ వంటి సంక్లిష్టమైన ఉత్పత్తులను నిర్వహించగలరు.
  • పేమెంట్స్ (Payments): పేమెంట్లను తక్షణమే విభజించడానికి మీరు Stripe వంటి ఎక్స్‌టెన్షన్‌లను ఉపయోగించవచ్చు. ప్లాట్‌ఫారమ్ కమిషన్‌ను తీసుకుంటుంది మరియు మిగిలినది సెల్లర్‌కు అందుతుంది.

కేవలం పునాదుల (plumbing) మీద మాత్రమే దృష్టి పెట్టడం ఆపండి. మీ మార్కెట్‌ప్లేస్‌ను నిర్మించడం ప్రారంభించండి.

Source: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a