Build The Seam On Day One

ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಡೇಟಾಕ್ಕಾಗಿ (high-volume data) ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು ಒಂದು ನಿರ್ಧಾರವನ್ನು ತೆಗೆದುಕೊಳ್ಳುವಂತೆ ಮಾಡುತ್ತದೆ.

ದೀರ್ಘಾವಧಿಯ ಸಂಗ್ರಹಣೆಗಾಗಿ (long-term storage) ನಿಮಗೆ ವೇಗವಾದ ಡೇಟಾಬೇಸ್ ಬೇಕಾಗುತ್ತದೆ. ಆದರೆ ಮೊದಲ ದಿನವೇ ಸಂಕೀರ್ಣವಾದ ವ್ಯವಸ್ಥೆಯನ್ನು (complex system) ಸ್ಥಾಪಿಸುವುದು ಕಷ್ಟ. ನಿಮ್ಮ ಡೇಟಾ ಮಾದರಿಗಳು (data patterns) ಇನ್ನೂ ನಿಮಗೆ ತಿಳಿದಿಲ್ಲದಿರಬಹುದು. ನೀವು ಈಗಾಗಲೇ ಬಳಸುತ್ತಿರುವ ಸಾಮಾನ್ಯ ರಿಲೇಶನಲ್ ಡೇಟಾಬೇಸ್ (relational database) ಅತ್ಯಂತ ಸುರಕ್ಷಿತ ಆಯ್ಕೆಯಾಗಿದೆ.

ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ನೇರವಾಗಿ ಆ ಮೊದಲ ಡೇಟಾಬೇಸ್‌ಗೆ ಜೋಡಿಸುವುದು ದೊಡ್ಡ ತಪ್ಪು. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನ ಪ್ರತಿಯೊಂದು ಭಾಗವು ನೇರವಾಗಿ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಕರೆಯುತ್ತಿದ್ದರೆ, ನೀವು ಒಂದು ಬಲೆಗೆ ಬೀಳುತ್ತೀರಿ. ನಂತರ ಉತ್ತಮ ಡೇಟಾಬೇಸ್‌ಗೆ ಬದಲಾಯಿಸಬೇಕೆಂದರೆ ನೀವು ದೊಡ್ಡ ಮಟ್ಟದ ರಿಫ್ಯಾಕ್ಟರ್ (refactor) ಮಾಡಬೇಕಾಗುತ್ತದೆ.

ಸರಿಯಾದ ಕ್ರಮವೆಂದರೆ ಒಂದು ಸೀಮ್ (seam) ಅನ್ನು ನಿರ್ಮಿಸುವುದು.

ಸೀಮ್ ಎಂಬುದು ಒಂದು ಒಪ್ಪಂದ (contract) ಇದ್ದಂತೆ. ಅದು ವ್ಯವಸ್ಥೆಯು 'ಏನು ಮಾಡುತ್ತದೆ' ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಆದರೆ ಅದನ್ನು 'ಹೇಗೆ ಮಾಡುತ್ತದೆ' ಎಂಬುದನ್ನು ಹೇಳುವುದಿಲ್ಲ.

  • ಕಾರ್ಯಕ್ಕಾಗಿ ಒಂದು ಇಂಟರ್ಫೇಸ್ (interface) ಅನ್ನು ರಚಿಸಿ.
  • ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಡೇಟಾಬೇಸ್ ಬಳಸಿ ಒಂದು ಮೂಲಭೂತ ಡ್ರೈವರ್ (driver) ಅನ್ನು ಬರೆಯಿರಿ.
  • ಆ ಡ್ರೈವರ್ ಅನ್ನು ಇಂಟರ್ಫೇಸ್‌ಗೆ ಜೋಡಿಸಿ.

ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನ ಉಳಿದ ಎಲ್ಲಾ ಭಾಗಗಳು ಇಂಟರ್ಫೇಸ್ ಜೊತೆ ಮಾತ್ರ ಸಂವಹನ ನಡೆಸುತ್ತವೆ. ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಯಾವ ಡೇಟಾಬೇಸ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂಬುದು ಯಾರಿಗೂ ತಿಳಿಯುವುದಿಲ್ಲ.

ನಿಮ್ಮ ಡೇಟಾ ಬೆಳೆದಾಗ ಮತ್ತು ನಿಮಗೆ ವೇಗವಾದ ವ್ಯವಸ್ಥೆಯ ಅಗತ್ಯವಿರುವಾಗ, ಕೆಲಸವು ಸರಳವಾಗಿರುತ್ತದೆ. ನೀವು ಹೊಸ ಡ್ರೈವರ್ ಅನ್ನು ಬರೆಯುತ್ತೀರಿ, ಕೇವಲ ಒಂದು ಸಾಲಿನ ಕೋಡ್ ಬದಲಾಯಿಸುತ್ತೀರಿ ಮತ್ತು ಅದನ್ನು ಬಿಡುಗಡೆ ಮಾಡುತ್ತೀರಿ. ಯಾವುದೇ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗಳು (dashboards) ಹಾಳಾಗುವುದಿಲ್ಲ ಅಥವಾ ಯಾವುದೇ ಪೈಪ್‌ಲೈನ್‌ಗಳು (pipelines) ನಿಲ್ಲುವುದಿಲ್ಲ.

ಕೆಲವರು ಇದನ್ನು 'ಅಪೂರ್ಣ ಅಮೂರ್ತತೆ' (premature abstraction) ಎಂದು ಕರೆಯುತ್ತಾರೆ. ನಿಮಗೆ ಇದು ಇನ್ನೂ ಅಗತ್ಯವಿಲ್ಲ ಎಂದು ಅವರು ಹೇಳುತ್ತಾರೆ.

ನಾನು ಇದನ್ನು ಒಪ್ಪುವುದಿಲ್ಲ. ಒಂದು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಬಳಸುವುದರಿಂದ ನಿಮಗೆ ಕೇವಲ ಒಂದು ಹೆಚ್ಚುವರಿ ಫೈಲ್‌ನ ವೆಚ್ಚವಾಗುತ್ತದೆ. ಅದನ್ನು ಬಿಟ್ಟುಬಿಡುವುದರಿಂದ ವೆಚ್ಚವು ಕೇವಲ ಮುಂದಿನ ದಿನಕ್ಕೆ ಮುಂದೂಡಲ್ಪಡುತ್ತದೆ. ನೀವು ಅಂತಿಮವಾಗಿ ಬದಲಾವಣೆ ಮಾಡಬೇಕಾದಾಗ, ಒತ್ತಡದ ನಡುವೆ ನೂರಾರು ಫೈಲ್‌ಗಳನ್ನು ಸರಿಪಡಿಸಬೇಕಾಗುತ್ತದೆ. ಇಂಟರ್ಫೇಸ್ ಎಂಬುದು ಒಂದು ಅಗ್ಗದ ವಿಮೆ (cheap insurance) ಇದ್ದಂತೆ.

ನಿಮ್ಮ ಸೀಮ್‌ಗಳನ್ನು ಬಲಪಡಿಸಲು ಈ ಮೂರು ಅಭ