Laravel ಬಳಸಿ ಮಲ್ಟಿ-ವೆಂಡರ್ ಮಾರ್ಕೆಟ್‌ಪ್ಲೇಸ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು

ಮಾರ್ಕೆಟ್‌ಪ್ಲೇಸ್ ನಿರ್ಮಿಸುವುದು ಒಂದು ಡೇಟಾ ಸಮಸ್ಯೆ.

ಹೆಚ್ಚಿನ ડેವಲಪರ್‌ಗಳು ಕಷ್ಟದ ಭಾಗ ಸೆಲ್ಲರ್ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಎಂದು ಭಾವಿಸುತ್ತಾರೆ. ಅದು ಅಲ್ಲ. ನಿಜವಾದ ಸವಾಲು ಮಲ್ಟಿ-ಟೆನೆನ್ಸಿ (multi-tenancy). ಪ್ರತಿಯೊಂದು ಕ್ವೇರಿ (query) ಒಂದು ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸುವುದನ್ನು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು: ಈ ಡೇಟಾ ಯಾರಿಗೆ ಸೇರಿದ್ದು?

ನೀವು ಒಂದು ಸಾಮಾನ್ಯ ಅಂಗಡಿಯನ್ನು ನಿರ್ಮಿಸಿ ನಂತರ ವೆಂಡರ್‌ಗಳನ್ನು ಸೇರಿಸಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ನೀವು ಇಡೀ ಕೋಡ್ ಅನ್ನು ಮತ್ತೆ ಬರೆಯಬೇಕಾಗುತ್ತದೆ. ನೀವು ಪ್ರತಿಯೊಂದು ಮಾಡೆಲ್, ಪ್ರತಿಯೊಂದು ಕ್ವೇರಿ ಮತ್ತು ಪ್ರತಿಯೊಂದು ಕಾರ್ಟ್ ಮೂಲಕ ವೆಂಡರ್ ಐಡಿಯನ್ನು (vendor ID) ಕೊಂಡೊಯ್ಯಬೇಕಾಗುತ್ತದೆ. ನೀವು ಒಂದು ಫಿಲ್ಟರ್ ಅನ್ನು ಮರೆತರೂ ಸಹ, ಒಬ್ಬ ಸೆಲ್ಲರ್ ಇನ್ನೊಬ್ಬ ಸೆಲ್ಲರ್‌ನ ಆರ್ಡರ್‌ಗಳನ್ನು ನೋಡಬಹುದು. ಅದು ಡೇಟಾ ಸೋರಿಕೆ (data leak) ಆಗುತ್ತದೆ.

ನಿಮ್ಮ ಮುಂದೆ ಮೂರು ಆಯ್ಕೆಗಳಿವೆ:

  • ನೀವೇ ಸ್ವತಃ ನಿರ್ಮಿಸಿ: ನೀವು ಪ್ರತಿಯೊಂದು ಸ್ಕೋಪಿಂಗ್ ಕ್ಲಾಸ್ ಅನ್ನು ಬರೆಯಬೇಕಾಗುತ್ತದೆ. ಇದು ದುಬಾರಿ ಮತ್ತು ಅಪಾಯಕಾರಿ.
  • ಅಡಾನ್ಸ್‌ಗಳೊಂದಿಗೆ ಸಿಂಗಲ್-ಟೆನೆಂಟ್ ಶಾಪ್ ಬಳಸಿ: ವೆಂಡರ್‌ಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸದ ಸ್ಕೀಮಾದ ಮೇಲೆ ನೀವು ವೆಂಡರ್ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ. ಇದರಿಂದ ಡೇಟಾ ಪ್ರತ್ಯೇಕತೆ (isolation) ದುರ್ಬಲವಾಗಿರುತ್ತದೆ.
  • ಮಲ್ಟಿ-ಟೆನೆಂಟ್ ಫೌಂಡೇಶನ್ ಬಳಸಿ: ಮೊದಲ ದಿನದಿಂದಲೇ ಡೇಟಾ ಮಾಡೆಲ್‌ನಲ್ಲಿ ಪ್ರತ್ಯೇಕತೆಯನ್ನು ನಿರ್ಮಿಸುವ Aimeos ನಂತಹ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಬಳಸಿ.

Aimeos ಬಳಸಿ ಏಕೈಕ ಅಂಗಡಿಯನ್ನು ಮಾರ್ಕೆಟ್‌ಪ್ಲೇಸ್ ಆಗಿ ಪರಿವರ್ತಿಸುವುದು ಹೇಗೆ ಎಂಬುದು ಇಲ್ಲಿದೆ:

1. ಫೌಂಡೇಶನ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ

ಪ್ರಾರಂಭಿಸಲು ಈ ಕಮಾಂಡ್ ಅನ್ನು ರನ್ ಮಾಡಿ: composer create-project aimeos/aimeos myshop

2. ಮಲ್ಟಿ-ವೆಂಡರ್ ಮೋಡ್ ಅನ್ನು ಎನೇಬಲ್ ಮಾಡಿ

ನೀವು ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮತ್ತೆ ಬರೆಯುವ ಅಗತ್ಯವಿಲ್ಲ. ನಿಮ್ಮ .env ಫೈಲ್‌ನಲ್ಲಿ ಕೇವಲ ಒಂದು ಸಾಲನ್ನು ಬದಲಾಯಿಸಿ: SHOP_MULTISHOP=true

ಈ ಫ್ಲಾಗ್ (flag) ಪ್ರತಿಯೊಂದು ರೂಟ್, API ಮತ್ತು ಅಡ್ಮಿನ್ ಪ್ಯಾನಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಸೈಟ್‌ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಕೋಪ್ ಮಾಡುತ್ತದೆ. ಸಿಸ್ಟಮ್ ನಿಮಗಾಗಿ ಡೇಟಾ ಪ್ರತ್ಯೇಕತೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.

3. ಸೆಲ್ಫ್-ಸರ್ವಿಸ್ ಆನ್‌ಬೋರ್ಡಿಂಗ್ ಅನ್ನು ಎನೇಬಲ್ ಮಾಡಿ

ವ್ಯಾಪಾರವನ್ನು ವಿಸ್ತರಿಸಲು, ವೆಂಡರ್‌ಗಳೇ ಸ್ವತಃ ಸೈನ್ ಅಪ್ ಮಾಡಲು ಬಿಡಿ. ನಿಮ್ಮ .env ಗೆ ಇದನ್ನು ಸೇರಿಸಿ: SHOP_REGISTRATION=true

ಹೊಸ ಸೆಲ್ಲರ್‌ಗಳು ತಮ್ಮದೇ ಆದ ಕ್ಯಾಟಲಾಗ್, ಆರ್ಡರ್‌ಗಳು ಮತ್ತು ಗ್ರಾಹಕರಿಗೆ ಮಾತ್ರ ಪ್ರವೇಶ ಪಡೆಯುತ್ತಾರೆ. ಅವರು ಬೇರೇನನ್ನೂ ನೋಡಲು ಸಾಧ್ಯವಿಲ್ಲ.

ಇದು ಏಕೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ: Aimeos ಎಲ್ಲವನ್ನೂ "ಸೈಟ್" (site) ಸುತ್ತ ಸಂಘಟಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಉತ್ಪನ್ನ, ಬೆಲೆ ಮತ್ತು ಆರ್ಡರ್ ಒಂದು ಸೈಟ್ ಐಡಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಡೇಟಾ ಲೇಯರ್ ಇದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಫಿಲ್ಟರ್ ಮಾಡುತ್ತದೆ. ನೀವು where site_id = ? ಎಂದು ಬರೆಯುವ ಅಗತ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಸಿಸ್ಟಮ್ ಇದನ್ನು ನಿಮಗಾಗಿ ಮಾಡುತ್ತದೆ.

ಈ ವಿಧಾನವು ಮೂರು ಪ್ರಮುಖ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ:

  • ಭದ್ರತೆ (Security): ಡೇಟಾ ಪ್ರತ್ಯೇಕತೆಯು ಡೇಟಾಬೇಸ್‌ನ ಒಂದು ಗುಣಲಕ್ಷಣವಾಗಿದೆ, ಇದು ನೀವು ಮರೆಯಬಹುದಾದ ಕೋಡ್‌ನ ಭಾಗವಲ್ಲ.
  • ಸಂಕೀರ್ಣತೆ (Complexity): ನೀವು ಸ್ಕೀಮಾವನ್ನು ಬದಲಾಯಿಸದೆಯೇ ವೆಂಡರ್‌ಗಳು ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್‌ಗಳು ಅಥವಾ ಬಂಡಲ್‌ಗಳಂತಹ ಸಂಕೀರ್ಣ ಉತ್ಪನ್ನಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು.
  • ಪಾವತಿಗಳು (Payments): ಪಾವತಿಗಳನ್ನು ತಕ್ಷಣವೇ ವಿಭಜಿಸಲು ನೀವು Stripe ನಂತಹ ಎಕ್ಸ್‌ಟೆನ್ಶನ್‌ಗಳನ್ನು ಬಳಸಬಹುದು. ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಕಮಿಷನ್ ಪಡೆಯುತ್ತದೆ ಮತ್ತು ಉಳಿದ ಹಣವನ್ನು ಸೆಲ್ಲರ್ ಪಡೆಯುತ್ತಾರೆ.

ಪ್ಲಂಬಿಂಗ್ (plumbing) ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ನಿಮ್ಮ ಮಾರ್ಕೆಟ್‌ಪ್ಲೇಸ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸಿ.

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