𝗦𝘁𝗼𝗽 𝗥𝗲𝗶𝗻𝘃𝗲𝗻𝘁𝗶𝗻𝗴 𝗕𝗼𝗶𝗹𝗲𝗿𝗽𝗹𝗮𝘁𝗲: 𝗠𝗼𝗱𝗲𝗿𝗻 𝗪𝗲𝗯 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 𝗜𝘀 𝗔𝗯𝗼𝘂𝘁 𝗢𝗿𝗰𝗵𝗲𝘀𝘁𝗿𝗮𝘁𝗶𝗼𝗻
பல டெவலப்பர்கள் அனைத்தையும் ஆரம்பத்திலிருந்து (from scratch) உருவாக்குவதை ஒரு பழக்கமாகக் கொண்டுள்ளனர்.
அவர்கள் தனிப்பயனாக்கப்பட்ட (custom) அட்மின் பேனல்களை உருவாக்குகிறார்கள். தனிப்பயனாக்கப்பட்ட அங்கீகார முறைகளை (authentication) எழுதுகிறார்கள். தனிப்பயனாக்கப்பட்ட வரிசைப்படுத்தல் ஸ்கிரிப்ட்களை (deployment scripts) உருவாக்குகிறார்கள். தனிப்பயனாக்கப்பட்ட லாகிங் (logging) முறைகளை உருவாக்குகிறார்கள்.
இது பொறியியல் செய்வது போன்ற உணர்வையும், கட்டுப்பாட்டில் இருப்பது போன்ற உணர்வையும் தருகிறது.
ஆனால் இந்த அணுகுமுறை சிக்கல்களை உருவாக்குகிறது.
நீங்கள் சொந்தமாக ஒரு அடிப்படை கட்டமைப்பை (boilerplate) எழுதும்போது, அதன் முதல் பதிப்பு நன்றாகத் தோன்றும். ஆறு மாதங்களுக்குப் பிறகு, நீங்கள் ஏன் அதை அந்த முறையில் வடிவமைத்தீர்கள் என்பதை யாரும் நினைவில் வைத்திருக்க மாட்டார்கள். ஒரு வருடத்திற்குப் பிறகு, அந்தத் திட்டத்தில் யாரும் தொட விரும்பாத விதிவிலக்கான நிலைகள் (edge cases) உருவாகும். மூன்று ஆண்டுகளுக்குப் பிறகு, அந்த அமைப்பு ஒரு பழைய மரபுவழி அமைப்பாக (legacy system) மாறிவிடும். அதை மாற்றுவது கடினமாகிவிடும்.
நவீன இணைய மேம்பாடு என்பது ஒவ்வொரு பகுதியையும் ஆரம்பத்திலிருந்து எழுதுவதைப் பற்றியது அல்ல. அது ஏற்கனவே உள்ள அமைப்புகளைத் தேர்ந்தெடுத்து அவற்றை ஒருங்கிணைப்பதைப் பற்றியது.
• அங்கீகாரத்திற்காக (authentication) முதிர்ச்சியடைந்த சேவை வழங்குநர்களைப் பயன்படுத்துங்கள். • பணப் பரிவர்த்தனைகளுக்கு Stripe அல்லது Paddle ஆகியவற்றைப் பயன்படுத்துங்கள். • மின்னஞ்சல் விநியோகம் மற்றும் பகுப்பாய்வு (analytics) பணிகளைப் பிறரிடம் ஒப்படையுங்கள். • தேடல், கோப்பு சேமிப்பு மற்றும் பிழை கண்காணிப்பு (error tracking) ஆகியவற்றிற்கு ஏற்கனவே உள்ள கருவிகளைப் பயன்படுத்துங்கள்.
உங்கள் பணி மாறிக்கொண்டிருக்கிறது. நீங்கள் இனி வெறும் குறியீடுகளை (code) மட்டும் எழுதுவதில்லை. நீங்கள்:
- சரியான கூறுகளைத் (components) தேர்ந்தெடுத்தல்.
- சமரசம் செய்தல் (trade-offs) குறித்த புரிதல்.
- தெளிவான எல்லைகளை வடிவமைத்தல்.
- அமைப்பை மாற்றக்கூடிய நிலையில் வைத்திருத்தல்.
- முடிவுகளை ஆவணப்படுத்துதல்.
நீங்கள் உருவாக்கும் ஒவ்வொரு வரியும் நீங்கள் பிழைதிருத்தம் (debug), சோதனை (test), பாதுகாத்தல் (secure) மற்றும் விளக்க வேண்டிய ஒரு வரியாகும். தேவையற்ற குறியீடு என்பது செலவு அதிகம் கொண்டது. முதிர்ச்சியடைந்த ஒரு வெளிப்புறத் தீர்வைப் பயன்படுத்துவது, உங்கள் குழு பொதுவான உள்கட்டமைப்பிற்குப் பதிலாக உங்கள் குறிப்பிட்ட வணிகச் சிக்கல்களில் கவனம் செலுத்த அனுமதிக்கிறது.
நிச்சயமாக, இதில் அபாயங்களும் உள்ளன. சார்ந்திருப்பு (Dependencies) என்பது விற்பனையாளர் சார்ந்த பிணைப்பு (vendor lock-in), விலை மாற்றங்கள் மற்றும் பாதுகாப்புப் பிரச்சனைகளைக் கொண்டு வரலாம்.
இலக்கு என்பது திட்டமிட்டுச் செயல்படுவதாகும். இயல்பாகவே அனைத்தையும் உருவாக்காதீர்கள். இயல்பாகவே அனைத்தையும் நிறுவாதீர்கள். உங்களிடமே கேட்டுக்கொள்ளுங்கள்: இந்த குறியீடு நமது உண்மையான பலத்தின் ஒரு பகுதியா, அல்லது ஏற்கனவே உள்ள உள்கட்டமைப்பை நாம் மீண்டும் உருவாக்குகிறோமா?
வடிவமைப்பிற்காகவோ (formatting) அல்லது இடைவெளிகளுக்காகவோ (indents) மனிதர்களின் நேரத்தை வீணாக்குவதை நிறுத்துங்கள். Linters மற்றும் தானியங்கி CI சோதனைகளைப் பயன்படுத்துங்கள். உயர்நிலை கேள்விகளுக்காக மனித கவனத்தைச் சேமித்து வையுங்கள்:
- இந்த வடிவமைப்பு பராமரிக்கக்கூடியதா?
- எல்லை தெளிவா?
- இது விரிவடையுமா (scale)?
- ஆறு மாதங்களில் மற்றொரு டெவலப்பரால் இதை புரிந்துகொள்ள முடியுமா?
சில நேரங்களில் சிறந்த குறியீடு என்பது நீங்கள் எழுத வேண்டாம் என்று முடிவு செய்யும் குறியீடே ஆகும்.
அதிகப்படியான அடிப்படை கட்டமைப்புகளை (boilerplate) எழுதுபவர் மிகச்சிறந்த டெவலப்பர் அல்ல. குறியீட்டுத் தொகுப்பில் (codebase) எது இருக்க வேண்டும், எது இருக்கக்கூடாது என்பதைத் தெரிந்தவரே மிக மதிப்புமிக்க டெவலப்பர்.
மென்பொருள் என்பது அதன் முதல் பதிவினால் செலவு மிக்கது அல்ல, மாறாக அதன் நீண்டகாலப் பராமரிப்பினால் (maintenance) செலவு மிக்கது.
Boilerplate-ஐ மீண்டும் உருவாக்குவதை நிறுத்துங்கள்: நவீன இணைய மேம்பாடு என்பது ஒருங்கிணைப்பைப் (orchestration) பற்றியது
அனைத்தையும் பூஜ்ஜியத்திலிருந்து (from scratch) உருவாக்கும் காலம் முடிந்துவிட்டது. ஒவ்வொரு அம்சத்திற்கும் ஒவ்வொரு வரியாகக் குறியீட்டை (code) எழுத வேண்டிய காலம் இப்போது இல்லை.
அதற்குப் பதிலாக, நாம் இப்போது ஒருங்கிணைப்பு (orchestration) காலத்தில்தான் இருக்கிறோம். சிறந்த கருவிகள் (tools), நூலகங்கள் (libraries) மற்றும் கட்டமைப்புகளைத் (frameworks) தேர்ந்தெடுத்து, அவற்றைப் பயன்படுத்தி ஒரு சிறந்த விஷயத்தை உருவாக்குகிறோம்.
பழைய முறை: எல்லாவற்றையும் உருவாக்குதல்
முன்பு, நீங்கள் ஒரு புதிய திட்டத்தைத் தொடங்கும் போது, அதன் அடிப்படை விஷயங்களை அமைப்பதற்கு கணிசமான நேரத்தைச் செலவிட வேண்டியிருந்தது:
- பயனர் அங்கீகாரத்தை (authentication) அமைத்தல்.
- தரவுத்தளத் தொடர்புகளை (database connections) உள்ளமைத்தல்.
- API boilerplate-ஐ எழுதுதல்.
- ரூட்டிங்கை (routing) அமைத்தல்.
இது அதிக நேரத்தை எடுத்துக்கொள்ளும் மற்றும் பெரும்பாலும் மீண்டும் மீண்டும் செய்யப்படும் வேலையாக இருந்தது. நீங்கள் ஒவ்வொரு முறையும் சக்கரத்தை மீண்டும் மீண்டும் கண்டுபிடித்துக் கொண்டிருப்பீர்கள் (reinventing the wheel).
புதிய முறை: ஒருங்கிணைப்பு (Orchestration)
இன்று, சூழல் மாறிவிட்டது. நாம் இனி இவற்றை பூஜ்ஜியத்திலிருந்து உருவாக்குவதில்லை. அதற்குப் பதிலாக, இவற்றைச் சிறப்பாகச் செய்யும் பிரத்யேகக் கருவிகளைப் பயன்படுத்துகிறோம்:
- அங்கீகாரத்திற்கு (authentication), நாம் Clerk அல்லது Auth0 பயன்படுத்துகிறோம்.
- தரவுத்தளங்களுக்கு (databases), நாம் Supabase அல்லது Prisma பயன்படுத்துகிறோம்.
- ஸ்டைலிங்கிற்கு (styling), நாம் Tailwind CSS பயன்படுத்துகிறோம்.
- கட்டமைப்பிற்கு (framework), நாம் Next.js பயன்படுத்துகிறோம்.
அங்கீகாரம் அல்லது தரவுத்தளத் தொடர்புகளுக்கான குறியீட்டை எழுதுவது இனி நமது வேலை அல்ல. இந்தத் கருவிகளை ஒருங்கிணைத்து ஒரு தடையற்ற பயனர் அனுபவத்தை (user experience) உருவாக்குவதே நமது வேலை.
இது ஏன் முக்கியம்?
- சந்தைக்குச் செல்லும் வேகம் (Speed to Market): நீங்கள் முன்னெப்போதையும் விட மிக விரைவாகத் தயாரிப்புகளை உருவாக்கி வெளியிட முடியும்.
- மதிப்பில் கவனம் செலுத்துதல் (Focus on Value): boilerplate பற்றிய கவலைகளைத் தவிர்த்து, உங்கள் தயாரிப்பை மதிப்புமிக்கதாக்கும் தனித்துவமான அம்சங்களில் நீங்கள் கவனம் செலுத்த முடியும்.
- நம்பகத்தன்மை (Reliability): நன்கு சோதிக்கப்பட்ட கருவிகளைப் பயன்படுத்துவதன் மூலம், பிழைகள் (bugs) மற்றும் பாதுகாப்பு குறைபாடுகளின் (security vulnerabilities) அபாயத்தைக் குறைக்கலாம்.
முடிவுரை
நவீன இணைய மேம்பாடு என்பது நீங்கள் எவ்வளவு குறியீட்டை எழுத முடியும் என்பதைப் பற்றியது அல்ல. அது சிறந்த கருவிகளைப் பயன்படுத்தி சிக்கல்களை எவ்வளவு சிறப்பாகத் தீர்க்க முடியும் என்பதைப் பற்றியது. சக்கரத்தை மீண்டும் மீண்டும் கண்டுபிடிப்பதை நிறுத்திவிட்டு, சிறந்தவற்றை ஒருங்கிணைக்கத் தொடங்குங்கள்.