ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിനെക്കുറിച്ചുള്ള ഒരു വിശദമായ ഗൈഡ്. സങ്കീർണ്ണമായ ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റങ്ങളിലെ റിക്വസ്റ്റ് ഫ്ലോകൾ വിശകലനം ചെയ്യുന്നതിനുള്ള ഇതിന്റെ പ്രയോജനങ്ങൾ, നടപ്പാക്കൽ, ഉപയോഗങ്ങൾ എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു.
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ്: ആധുനിക ആപ്ലിക്കേഷനുകൾക്കായുള്ള റിക്വസ്റ്റ് ഫ്ലോ അനാലിസിസ്
ഇന്നത്തെ സങ്കീർണ്ണവും ഡിസ്ട്രിബ്യൂട്ടഡ് ആയതുമായ ആപ്ലിക്കേഷൻ ആർക്കിടെക്ചറുകളിൽ, ഒന്നിലധികം സർവീസുകളിലുടനീളമുള്ള അഭ്യർത്ഥനകളുടെ (requests) ഒഴുക്ക് മനസ്സിലാക്കുന്നത് പ്രകടനം, വിശ്വാസ്യത, കാര്യക്ഷമമായ ഡീബഗ്ഗിംഗ് എന്നിവ ഉറപ്പാക്കുന്നതിന് നിർണായകമാണ്. ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ്, അഭ്യർത്ഥനകൾ വിവിധ സർവീസുകളിലൂടെ കടന്നുപോകുമ്പോൾ അവയെ ട്രാക്ക് ചെയ്ത് ആവശ്യമായ ഉൾക്കാഴ്ചകൾ നൽകുന്നു. ഇത് പ്രകടനം കുറയുന്നതിനുള്ള കാരണങ്ങൾ കണ്ടെത്താനും, ആശ്രിതത്വങ്ങൾ (dependencies) തിരിച്ചറിയാനും, പ്രശ്നങ്ങൾ വേഗത്തിൽ പരിഹരിക്കാനും ഡെവലപ്പർമാരെയും ഓപ്പറേഷൻ ടീമുകളെയും സഹായിക്കുന്നു. ഈ ഗൈഡ് ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിൻ്റെ ആശയം, അതിൻ്റെ പ്രയോജനങ്ങൾ, നടപ്പാക്കാനുള്ള വഴികൾ, പ്രായോഗിക ഉപയോഗങ്ങൾ എന്നിവയെക്കുറിച്ച് വിശദമായി പ്രതിപാദിക്കുന്നു.
എന്താണ് ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ്?
ഒരു ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റത്തിലൂടെ കടന്നുപോകുമ്പോൾ അഭ്യർത്ഥനകളെ നിരീക്ഷിക്കാനും പ്രൊഫൈൽ ചെയ്യാനും ഉപയോഗിക്കുന്ന ഒരു സാങ്കേതികതയാണ് ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ്. ഇത് ഒരു അഭ്യർത്ഥനയുടെ ജീവിതചക്രത്തിൻ്റെ സമഗ്രമായ കാഴ്ച നൽകുന്നു, അതായത് അഭ്യർത്ഥനയുടെ പ്രാരംഭ ഘട്ടം മുതൽ അന്തിമ പ്രതികരണം വരെയുള്ള പാത കാണിക്കുന്നു. ഒരു പ്രത്യേക അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നതിൽ ഏതൊക്കെ സർവീസുകൾ ഉൾപ്പെട്ടിട്ടുണ്ടെന്നും, ഓരോ സർവീസും ഉണ്ടാക്കുന്ന ലേറ്റൻസി എത്രയാണെന്നും, വഴിയിൽ സംഭവിക്കുന്ന പിശകുകൾ എന്തെല്ലാമാണെന്നും തിരിച്ചറിയാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.
പരമ്പരാഗത നിരീക്ഷണ ടൂളുകൾ ഡിസ്ട്രിബ്യൂട്ടഡ് എൻവയോൺമെൻ്റുകളിൽ പലപ്പോഴും പരാജയപ്പെടാറുണ്ട്, കാരണം അവ ഓരോ സർവീസുകളെയും ഒറ്റപ്പെട്ട രീതിയിലാണ് നിരീക്ഷിക്കുന്നത്. ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് ഈ വിടവ് നികത്തുന്നു, സിസ്റ്റത്തിൻ്റെ മൊത്തത്തിലുള്ള ഒരു ഏകീകൃത കാഴ്ച നൽകിക്കൊണ്ട് ഒന്നിലധികം സർവീസുകളിലെ സംഭവങ്ങളെ പരസ്പരം ബന്ധിപ്പിക്കാനും അവ തമ്മിലുള്ള ബന്ധം മനസ്സിലാക്കാനും നിങ്ങളെ സഹായിക്കുന്നു.
പ്രധാന ആശയങ്ങൾ
- സ്പാൻ (Span): ഒരു ട്രെയ്സിനുള്ളിലെ ഒരു യൂണിറ്റ് ജോലിയെ പ്രതിനിധീകരിക്കുന്നതാണ് സ്പാൻ. ഇത് സാധാരണയായി ഒരു സർവീസിനുള്ളിലെ ഒരു പ്രത്യേക പ്രവർത്തനത്തെയോ ഫംഗ്ഷൻ കോളിനെയോ സൂചിപ്പിക്കുന്നു. സ്പാനുകളിൽ ആരംഭ, അവസാന സമയങ്ങൾ, പ്രവർത്തനത്തിൻ്റെ പേര്, സർവീസിൻ്റെ പേര്, ടാഗുകൾ തുടങ്ങിയ മെറ്റാഡാറ്റ അടങ്ങിയിരിക്കുന്നു.
- ട്രെയ്സ് (Trace): ഒരു ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റത്തിലൂടെ ഒരു അഭ്യർത്ഥന സഞ്ചരിക്കുന്ന പൂർണ്ണമായ പാതയെയാണ് ട്രെയ്സ് പ്രതിനിധീകരിക്കുന്നത്. ഇത് സ്പാനുകളുടെ ഒരു ട്രീ (tree) ഘടനയാണ്, ഇതിലെ റൂട്ട് സ്പാൻ അഭ്യർത്ഥനയുടെ പ്രാരംഭ ഘട്ടത്തെ പ്രതിനിധീകരിക്കുന്നു.
- ട്രെയ്സ് ഐഡി (Trace ID): ഒരു ട്രെയ്സിന് നൽകുന്ന സവിശേഷമായ ഐഡി. ഒരേ അഭ്യർത്ഥനയുടെ ഭാഗമായ എല്ലാ സ്പാനുകളെയും ബന്ധിപ്പിക്കാൻ ഇത് സഹായിക്കുന്നു.
- സ്പാൻ ഐഡി (Span ID): ഒരു ട്രെയ്സിനുള്ളിലെ ഒരു സ്പാനിന് നൽകുന്ന സവിശേഷമായ ഐഡി.
- പാരൻ്റ് ഐഡി (Parent ID): പാരൻ്റ് സ്പാനിൻ്റെ സ്പാൻ ഐഡി. ഇത് ഒരു ട്രെയ്സിലെ സ്പാനുകൾ തമ്മിലുള്ള കാര്യകാരണബന്ധം സ്ഥാപിക്കുന്നു.
- കോൺടെക്സ്റ്റ് പ്രൊപ്പഗേഷൻ (Context Propagation): ഒരു അഭ്യർത്ഥന സിസ്റ്റത്തിലൂടെ കടന്നുപോകുമ്പോൾ ട്രെയ്സ് ഐഡികൾ, സ്പാൻ ഐഡികൾ, മറ്റ് ട്രെയ്സിംഗ് മെറ്റാഡാറ്റ എന്നിവ സർവീസുകൾക്കിടയിൽ കൈമാറുന്ന സംവിധാനമാണിത്. സാധാരണയായി HTTP ഹെഡറുകളിലേക്കോ മറ്റ് മെസേജിംഗ് പ്രോട്ടോക്കോളുകളിലേക്കോ ട്രെയ്സിംഗ് കോൺടെക്സ്റ്റ് ഇൻജെക്റ്റ് ചെയ്താണ് ഇത് ചെയ്യുന്നത്.
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിൻ്റെ പ്രയോജനങ്ങൾ
സങ്കീർണ്ണമായ ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന സ്ഥാപനങ്ങൾക്ക് ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് നടപ്പിലാക്കുന്നത് നിരവധി പ്രധാന നേട്ടങ്ങൾ നൽകുന്നു:
- മെച്ചപ്പെട്ട പ്രകടന നിരീക്ഷണം: സർവീസുകളിലുടനീളമുള്ള പ്രകടനത്തിലെ തടസ്സങ്ങളും ലേറ്റൻസി പ്രശ്നങ്ങളും തിരിച്ചറിയുക. ഇത് വേഗത്തിൽ മൂലകാരണം കണ്ടെത്താനും ഒപ്റ്റിമൈസ് ചെയ്യാനും സഹായിക്കുന്നു.
- മെച്ചപ്പെട്ട ഡീബഗ്ഗിംഗ്: അഭ്യർത്ഥനകളുടെ ഒഴുക്കിനെക്കുറിച്ച് സമഗ്രമായ ധാരണ നേടുക. ഇത് ഒന്നിലധികം സർവീസുകളിൽ വ്യാപിച്ചുകിടക്കുന്ന പിശകുകൾ കണ്ടെത്താനും പരിഹരിക്കാനും എളുപ്പമാക്കുന്നു.
- പ്രശ്നപരിഹാരത്തിനുള്ള ശരാശരി സമയം (MTTR) കുറയ്ക്കുന്നു: പ്രശ്നങ്ങളുടെ ഉറവിടം വേഗത്തിൽ കണ്ടെത്തുക, ഡൗൺടൈം കുറയ്ക്കുകയും സിസ്റ്റത്തിൻ്റെ മൊത്തത്തിലുള്ള വിശ്വാസ്യത മെച്ചപ്പെടുത്തുകയും ചെയ്യുന്നു.
- ആശ്രിതത്വങ്ങളെക്കുറിച്ച് മികച്ച ധാരണ: സർവീസുകൾ തമ്മിലുള്ള ബന്ധം ദൃശ്യവൽക്കരിക്കുക. ഇത് മറഞ്ഞിരിക്കുന്ന ആശ്രിതത്വങ്ങളും പരാജയപ്പെടാൻ സാധ്യതയുള്ള പോയിൻ്റുകളും വെളിപ്പെടുത്തുന്നു.
- വിഭവ വിനിയോഗം ഒപ്റ്റിമൈസ് ചെയ്യൽ: വേണ്ടത്ര ഉപയോഗിക്കാത്തതോ അമിതഭാരമുള്ളതോ ആയ സർവീസുകൾ തിരിച്ചറിയുക. ഇത് കൂടുതൽ കാര്യക്ഷമമായ വിഭവ വിനിയോഗത്തിനും കപ്പാസിറ്റി പ്ലാനിംഗിനും സഹായിക്കുന്നു.
- മെച്ചപ്പെട്ട ഒബ്സെർവബിലിറ്റി: സിസ്റ്റത്തിൻ്റെ പ്രവർത്തനത്തെക്കുറിച്ച് ആഴത്തിലുള്ള ധാരണ നേടുക. ഇത് ഉപയോക്താക്കളെ ബാധിക്കുന്നതിനുമുമ്പ് സാധ്യതയുള്ള പ്രശ്നങ്ങൾ മുൻകൂട്ടി തിരിച്ചറിയാനും പരിഹരിക്കാനും നിങ്ങളെ സഹായിക്കുന്നു.
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് നടപ്പിലാക്കൽ
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് നടപ്പിലാക്കുന്നതിന് ഒരു ട്രെയ്സിംഗ് ബാക്കെൻഡ് തിരഞ്ഞെടുക്കുക, നിങ്ങളുടെ കോഡ് ഇൻസ്ട്രുമെൻ്റ് ചെയ്യുക, കോൺടെക്സ്റ്റ് പ്രൊപ്പഗേഷൻ കോൺഫിഗർ ചെയ്യുക എന്നിങ്ങനെ നിരവധി ഘട്ടങ്ങൾ ഉൾപ്പെടുന്നു.
1. ഒരു ട്രെയ്സിംഗ് ബാക്കെൻഡ് തിരഞ്ഞെടുക്കൽ
നിരവധി ഓപ്പൺ സോഴ്സ്, വാണിജ്യപരമായ ട്രെയ്സിംഗ് ബാക്കെൻഡുകൾ ലഭ്യമാണ്, ഓരോന്നിനും അതിൻ്റേതായ ഗുണങ്ങളും ദോഷങ്ങളുമുണ്ട്. ചില ജനപ്രിയ ഓപ്ഷനുകൾ താഴെ പറയുന്നവയാണ്:
- യേഗർ (Jaeger): ഊബർ (Uber) വികസിപ്പിച്ചെടുത്ത ഒരു ഓപ്പൺ സോഴ്സ് ട്രെയ്സിംഗ് സിസ്റ്റം. ഇത് മൈക്രോസർവീസ് ആർക്കിടെക്ചറുകൾക്ക് അനുയോജ്യമാണ്. ട്രെയ്സുകൾ ദൃശ്യവൽക്കരിക്കുന്നതിന് ഉപയോക്തൃ-സൗഹൃദ വെബ് യുഐ നൽകുന്നു.
- സിപ്കിൻ (Zipkin): ട്വിറ്റർ (Twitter) വികസിപ്പിച്ചെടുത്ത ഒരു ഓപ്പൺ സോഴ്സ് ട്രെയ്സിംഗ് സിസ്റ്റം. ഇത് സ്കേലബിലിറ്റിക്കും വിവിധ സ്റ്റോറേജ് ബാക്കെൻഡുകളെ പിന്തുണയ്ക്കുന്നതിനും പേരുകേട്ടതാണ്.
- ഓപ്പൺടെലിമെട്രി (OpenTelemetry): നിങ്ങളുടെ കോഡ് ഇൻസ്ട്രുമെൻ്റ് ചെയ്യാനും ടെലിമെട്രി ഡാറ്റ ശേഖരിക്കാനും ഒരു വെൻഡർ-ന്യൂട്രൽ എപിഐ നൽകുന്ന ഒരു ഓപ്പൺ സോഴ്സ് ഒബ്സെർവബിലിറ്റി ഫ്രെയിംവർക്ക്. ഇത് യേഗർ, സിപ്കിൻ, കൂടാതെ മറ്റ് പല ട്രെയ്സിംഗ് ബാക്കെൻഡുകളെയും പിന്തുണയ്ക്കുന്നു. ഓപ്പൺടെലിമെട്രി ഈ രംഗത്തെ ഒരു മാനദണ്ഡമായി മാറിക്കൊണ്ടിരിക്കുന്നു.
- വാണിജ്യപരമായ പരിഹാരങ്ങൾ: ഡാറ്റാഡോഗ് (Datadog), ന്യൂ റെലിക് (New Relic), ഡൈനാട്രേസ് (Dynatrace), മറ്റ് വാണിജ്യപരമായ നിരീക്ഷണ പ്ലാറ്റ്ഫോമുകളും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് കഴിവുകൾ വാഗ്ദാനം ചെയ്യുന്നു. ഈ പരിഹാരങ്ങൾ പലപ്പോഴും ലോഗ് അഗ്രഗേഷൻ, മെട്രിക്സ് മോണിറ്ററിംഗ്, അലേർട്ടിംഗ് തുടങ്ങിയ അധിക സവിശേഷതകൾ നൽകുന്നു.
ഒരു ട്രെയ്സിംഗ് ബാക്കെൻഡ് തിരഞ്ഞെടുക്കുമ്പോൾ, സ്കേലബിലിറ്റി, പ്രകടനം, ഉപയോഗിക്കാനുള്ള എളുപ്പം, നിങ്ങളുടെ നിലവിലുള്ള ഇൻഫ്രാസ്ട്രക്ചറുമായുള്ള സംയോജനം, ചെലവ് തുടങ്ങിയ ഘടകങ്ങൾ പരിഗണിക്കുക.
2. നിങ്ങളുടെ കോഡ് ഇൻസ്ട്രുമെൻ്റ് ചെയ്യൽ
നിങ്ങളുടെ കോഡ് ഇൻസ്ട്രുമെൻ്റ് ചെയ്യുന്നതിൽ സ്പാനുകൾ സൃഷ്ടിക്കുന്നതിനും ട്രെയ്സിംഗ് കോൺടെക്സ്റ്റ് പ്രൊപ്പഗേറ്റ് ചെയ്യുന്നതിനും കോഡ് ചേർക്കുന്നത് ഉൾപ്പെടുന്നു. ഇത് ഒരു ട്രെയ്സിംഗ് ലൈബ്രറി ഉപയോഗിച്ച് നേരിട്ടോ അല്ലെങ്കിൽ ഒരു ഇൻസ്ട്രുമെൻ്റേഷൻ ഏജൻ്റ് ഉപയോഗിച്ച് ഓട്ടോമാറ്റിക്കായോ ചെയ്യാം. ഓട്ടോ-ഇൻസ്ട്രുമെൻ്റേഷൻ കൂടുതൽ പ്രചാരം നേടുന്നു, കാരണം ഇതിന് കുറഞ്ഞ കോഡ് മാറ്റങ്ങൾ ആവശ്യമാണ്, കൂടാതെ പരിപാലിക്കാൻ എളുപ്പമാണ്.
മാനുവൽ ഇൻസ്ട്രുമെൻ്റേഷൻ: നിങ്ങൾ ട്രെയ്സ് ചെയ്യാൻ ആഗ്രഹിക്കുന്ന ഓരോ ഓപ്പറേഷൻ്റെയും തുടക്കത്തിലും അവസാനത്തിലും സ്പാനുകൾ സൃഷ്ടിക്കാൻ ഒരു ട്രെയ്സിംഗ് ലൈബ്രറി ഉപയോഗിക്കുന്നത് ഇതിൽ ഉൾപ്പെടുന്നു. സർവീസുകൾക്കിടയിൽ ട്രെയ്സിംഗ് കോൺടെക്സ്റ്റ് നേരിട്ട് പ്രൊപ്പഗേറ്റ് ചെയ്യേണ്ടതും ആവശ്യമാണ്. പൈത്തണിൽ ഓപ്പൺടെലിമെട്രി ഉപയോഗിക്കുന്നതിനുള്ള ഒരു അടിസ്ഥാന ഉദാഹരണം ഇതാ:
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.sdk.trace.export import ConsoleSpanExporter
# ട്രെയ്സർ പ്രൊവൈഡർ കോൺഫിഗർ ചെയ്യുക
tracer_provider = TracerProvider()
processor = BatchSpanProcessor(ConsoleSpanExporter())
tracer_provider.add_span_processor(processor)
trace.set_tracer_provider(tracer_provider)
# ട്രെയ്സർ നേടുക
tracer = trace.get_tracer(__name__)
# ഒരു സ്പാൻ ഉണ്ടാക്കുക
with tracer.start_as_current_span("my_operation") as span:
span.set_attribute("key", "value")
# പ്രവർത്തനം നടത്തുക
print("Performing my operation")
ഓട്ടോമാറ്റിക് ഇൻസ്ട്രുമെൻ്റേഷൻ: പല ട്രെയ്സിംഗ് ലൈബ്രറികളും നിങ്ങളുടെ കോഡിൽ നേരിട്ട് മാറ്റങ്ങൾ വരുത്താതെ തന്നെ ഓട്ടോമാറ്റിക്കായി ഇൻസ്ട്രുമെൻ്റ് ചെയ്യാൻ കഴിയുന്ന ഏജൻ്റുകൾ നൽകുന്നു. ഈ ഏജൻ്റുകൾ സാധാരണയായി ബൈറ്റ്കോഡ് മാനിപ്പുലേഷൻ അല്ലെങ്കിൽ മറ്റ് സാങ്കേതിക വിദ്യകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ ആപ്ലിക്കേഷനിലേക്ക് റൺടൈമിൽ ട്രെയ്സിംഗ് കോഡ് ചേർക്കുന്നു. ട്രെയ്സിംഗ് നടപ്പിലാക്കാനുള്ള വളരെ കാര്യക്ഷമവും തടസ്സങ്ങൾ കുറഞ്ഞതുമായ ഒരു മാർഗമാണിത്.
3. കോൺടെക്സ്റ്റ് പ്രൊപ്പഗേഷൻ കോൺഫിഗർ ചെയ്യൽ
സർവീസുകൾക്കിടയിൽ ട്രെയ്സിംഗ് മെറ്റാഡാറ്റ കൈമാറുന്ന സംവിധാനമാണ് കോൺടെക്സ്റ്റ് പ്രൊപ്പഗേഷൻ. HTTP ഹെഡറുകളിലേക്കോ മറ്റ് മെസേജിംഗ് പ്രോട്ടോക്കോളുകളിലേക്കോ ട്രെയ്സിംഗ് കോൺടെക്സ്റ്റ് ചേർക്കുക എന്നതാണ് ഏറ്റവും സാധാരണമായ രീതി. കോൺടെക്സ്റ്റ് പ്രൊപ്പഗേഷനായി ഉപയോഗിക്കുന്ന പ്രത്യേക ഹെഡറുകൾ നിങ്ങൾ ഉപയോഗിക്കുന്ന ട്രെയ്സിംഗ് ബാക്കെൻഡിനെ ആശ്രയിച്ചിരിക്കുന്നു. ഓപ്പൺടെലിമെട്രി, വ്യത്യസ്ത ട്രെയ്സിംഗ് സിസ്റ്റങ്ങൾ തമ്മിലുള്ള പരസ്പര പ്രവർത്തനം പ്രോത്സാഹിപ്പിക്കുന്നതിന് സ്റ്റാൻഡേർഡ് ഹെഡറുകൾ (ഉദാ. `traceparent`, `tracestate`) നിർവചിക്കുന്നു.
ഉദാഹരണത്തിന്, യേഗർ ഉപയോഗിക്കുമ്പോൾ, നിങ്ങൾ `uber-trace-id` എന്ന ഹെഡർ HTTP അഭ്യർത്ഥനകളിലേക്ക് ചേർത്തേക്കാം. സ്വീകരിക്കുന്ന സർവീസ് ഈ ഹെഡറിൽ നിന്ന് ട്രെയ്സ് ഐഡിയും സ്പാൻ ഐഡിയും എക്സ്ട്രാക്റ്റുചെയ്ത് ഒരു ചൈൽഡ് സ്പാൻ ഉണ്ടാക്കും. ഇസ്റ്റിയോ (Istio) അല്ലെങ്കിൽ ലിങ്കർഡ് (Linkerd) പോലുള്ള ഒരു സർവീസ് മെഷ് ഉപയോഗിക്കുന്നതും കോൺടെക്സ്റ്റ് പ്രൊപ്പഗേഷൻ ഓട്ടോമാറ്റിക്കായി കൈകാര്യം ചെയ്യാൻ സഹായിക്കും.
4. ഡാറ്റ സംഭരണവും വിശകലനവും
ട്രെയ്സ് ഡാറ്റ ശേഖരിച്ച ശേഷം, അത് സംഭരിക്കുകയും വിശകലനം ചെയ്യുകയും വേണം. ട്രെയ്സിംഗ് ബാക്കെൻഡുകൾ സാധാരണയായി ട്രെയ്സ് ഡാറ്റ സംഭരിക്കുന്നതിനുള്ള ഒരു സ്റ്റോറേജ് ഘടകവും ട്രെയ്സുകൾ വീണ്ടെടുക്കുന്നതിനും വിശകലനം ചെയ്യുന്നതിനുമുള്ള ഒരു ക്വറി ഇൻ്റർഫേസും നൽകുന്നു. ഉദാഹരണത്തിന്, യേഗറിന് ഡാറ്റ കസാൻഡ്ര, ഇലാസ്റ്റിക് സെർച്ച്, അല്ലെങ്കിൽ മെമ്മറിയിൽ സംഭരിക്കാൻ കഴിയും. സിപ്കിൻ ഇലാസ്റ്റിക് സെർച്ച്, MySQL, മറ്റ് സ്റ്റോറേജ് ഓപ്ഷനുകൾ എന്നിവയെ പിന്തുണയ്ക്കുന്നു. ഓപ്പൺടെലിമെട്രി വിവിധ ബാക്കെൻഡുകളിലേക്ക് ഡാറ്റ അയക്കാൻ കഴിയുന്ന എക്സ്പോർട്ടറുകൾ നൽകുന്നു.
വിശകലന ടൂളുകൾ പലപ്പോഴും ഇനിപ്പറയുന്നതുപോലുള്ള സവിശേഷതകൾ നൽകുന്നു:
- ട്രെയ്സ് ദൃശ്യവൽക്കരണം: ഓരോ സ്പാനിൻ്റെയും ദൈർഘ്യവും അവ തമ്മിലുള്ള ബന്ധവും കാണിക്കുന്ന ഒരു വെള്ളച്ചാട്ട ചാർട്ടായി ട്രെയ്സുകൾ പ്രദർശിപ്പിക്കുന്നു.
- സർവീസ് ഡിപൻഡൻസി ഗ്രാഫുകൾ: ട്രെയ്സ് ഡാറ്റയെ അടിസ്ഥാനമാക്കി സർവീസുകൾ തമ്മിലുള്ള ആശ്രിതത്വങ്ങൾ ദൃശ്യവൽക്കരിക്കുന്നു.
- റൂട്ട് കോസ് അനാലിസിസ്: ട്രെയ്സ് ഡാറ്റ വിശകലനം ചെയ്തുകൊണ്ട് പ്രകടനത്തിലെ തടസ്സങ്ങളുടെയോ പിശകുകളുടെയോ മൂലകാരണം കണ്ടെത്തുന്നു.
- അലേർട്ടിംഗ്: ലേറ്റൻസി ത്രെഷോൾഡുകൾ അല്ലെങ്കിൽ പിശകുകളുടെ നിരക്ക് പോലുള്ള ട്രെയ്സ് ഡാറ്റയെ അടിസ്ഥാനമാക്കി അലേർട്ടുകൾ കോൺഫിഗർ ചെയ്യുന്നു.
പ്രായോഗിക ഉപയോഗങ്ങൾ
ആധുനിക ആപ്ലിക്കേഷൻ ആർക്കിടെക്ചറുകളിൽ ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് വിപുലമായ ഉപയോഗങ്ങൾക്കായി പ്രയോഗിക്കാവുന്നതാണ്:
- മൈക്രോസർവീസസ് ആർക്കിടെക്ചർ: മൈക്രോസർവീസ് എൻവയോൺമെൻ്റുകളിൽ, അഭ്യർത്ഥനകൾ പലപ്പോഴും ഒന്നിലധികം സർവീസുകളിലൂടെ കടന്നുപോകുന്നു. സർവീസുകൾക്കിടയിലുള്ള അഭ്യർത്ഥനകളുടെ ഒഴുക്ക് മനസ്സിലാക്കാനും പ്രകടനത്തിലെ തടസ്സങ്ങൾ കണ്ടെത്താനും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് നിങ്ങളെ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ഇ-കൊമേഴ്സ് ആപ്ലിക്കേഷൻ ഓർഡർ സർവീസ്, പേയ്മെൻ്റ് സർവീസ്, ഷിപ്പിംഗ് സർവീസ് എന്നിവയിലൂടെയുള്ള അഭ്യർത്ഥനകൾ ട്രാക്ക് ചെയ്യാൻ ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് ഉപയോഗിക്കാം.
- ക്ലൗഡ്-നേറ്റീവ് ആപ്ലിക്കേഷനുകൾ: ക്ലൗഡ്-നേറ്റീവ് ആപ്ലിക്കേഷനുകൾ പലപ്പോഴും ഒന്നിലധികം കണ്ടെയ്നറുകളിലും വെർച്വൽ മെഷീനുകളിലുമായി വിന്യസിക്കപ്പെടുന്നു. ഈ ആപ്ലിക്കേഷനുകളുടെ പ്രകടനം നിരീക്ഷിക്കാനും നെറ്റ്വർക്കിംഗ് അല്ലെങ്കിൽ റിസോഴ്സ് അലോക്കേഷനുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങൾ തിരിച്ചറിയാനും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് നിങ്ങളെ സഹായിക്കുന്നു.
- സെർവർലെസ് ഫംഗ്ഷനുകൾ: സെർവർലെസ് ഫംഗ്ഷനുകൾ ഹ്രസ്വകാലത്തേക്കുള്ളതും പലപ്പോഴും സ്റ്റേറ്റ്ലെസ്സ് ആയതുമാണ്. ഈ ഫംഗ്ഷനുകളുടെ പ്രവർത്തനം ട്രാക്ക് ചെയ്യാനും പ്രകടന പ്രശ്നങ്ങളോ പിശകുകളോ കണ്ടെത്താനും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് നിങ്ങളെ സഹായിക്കും. ഒരു സെർവർലെസ് ഇമേജ് പ്രോസസ്സിംഗ് ആപ്ലിക്കേഷൻ സങ്കൽപ്പിക്കുക; ട്രെയ്സിംഗ് വിവിധ പ്രോസസ്സിംഗ് ഘട്ടങ്ങളിലെ തടസ്സങ്ങൾ വെളിപ്പെടുത്തും.
- മൊബൈൽ ആപ്ലിക്കേഷനുകൾ: മൊബൈൽ ആപ്ലിക്കേഷനുകളുടെ പ്രകടനം നിരീക്ഷിക്കാനും നെറ്റ്വർക്ക് കണക്റ്റിവിറ്റി അല്ലെങ്കിൽ ബാക്കെൻഡ് സർവീസുകളുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങൾ തിരിച്ചറിയാനും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് ഉപയോഗിക്കാം. മൊബൈൽ ഉപകരണങ്ങളിൽ നിന്നുള്ള ഡാറ്റ ബാക്കെൻഡ് ട്രെയ്സുകളുമായി ബന്ധിപ്പിച്ച് ഒരു പൂർണ്ണമായ ചിത്രം നൽകാൻ കഴിയും.
- ലെഗസി ആപ്ലിക്കേഷനുകൾ: മോണോലിത്തിക് ആപ്ലിക്കേഷനുകളിൽ പോലും, സങ്കീർണ്ണമായ കോഡ് പാതകൾ മനസ്സിലാക്കുന്നതിനും പ്രകടനത്തിലെ തടസ്സങ്ങൾ കണ്ടെത്തുന്നതിനും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് വിലപ്പെട്ടതാണ്. നിർണായകമായ ഇടപാടുകൾക്ക് വേണ്ടി മാത്രം ട്രെയ്സിംഗ് പ്രവർത്തനക്ഷമമാക്കാം.
ഉദാഹരണ സാഹചര്യം: ഇ-കൊമേഴ്സ് ആപ്ലിക്കേഷൻ
ഒരു മൈക്രോസർവീസ് ആർക്കിടെക്ചർ ഉപയോഗിച്ച് നിർമ്മിച്ച ഒരു ഇ-കൊമേഴ്സ് ആപ്ലിക്കേഷൻ പരിഗണിക്കുക. ആപ്ലിക്കേഷനിൽ നിരവധി സർവീസുകൾ അടങ്ങിയിരിക്കുന്നു, അവയിൽ ചിലത്:
- ഫ്രണ്ടെൻഡ് സർവീസ്: ഉപയോക്താക്കളുടെ അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യുകയും യൂസർ ഇൻ്റർഫേസ് റെൻഡർ ചെയ്യുകയും ചെയ്യുന്നു.
- പ്രൊഡക്റ്റ് സർവീസ്: ഉൽപ്പന്ന കാറ്റലോഗ് നിയന്ത്രിക്കുകയും ഉൽപ്പന്ന വിവരങ്ങൾ വീണ്ടെടുക്കുകയും ചെയ്യുന്നു.
- ഓർഡർ സർവീസ്: ഉപഭോക്താക്കളുടെ ഓർഡറുകൾ ഉണ്ടാക്കുകയും നിയന്ത്രിക്കുകയും ചെയ്യുന്നു.
- പേയ്മെൻ്റ് സർവീസ്: പേയ്മെൻ്റുകൾ പ്രോസസ്സ് ചെയ്യുകയും ഇടപാടുകൾ കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നു.
- ഷിപ്പിംഗ് സർവീസ്: ഓർഡറുകൾ ഷിപ്പ് ചെയ്യുന്നതിനുള്ള ക്രമീകരണങ്ങൾ ചെയ്യുന്നു.
ഒരു ഉപയോക്താവ് ഒരു ഓർഡർ നൽകുമ്പോൾ, ഫ്രണ്ടെൻഡ് സർവീസ് ഓർഡർ സർവീസിനെ വിളിക്കുന്നു, അത് പിന്നീട് പ്രൊഡക്റ്റ് സർവീസ്, പേയ്മെൻ്റ് സർവീസ്, ഷിപ്പിംഗ് സർവീസ് എന്നിവയെ വിളിക്കുന്നു. ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് ഇല്ലെങ്കിൽ, ഈ സങ്കീർണ്ണമായ സിസ്റ്റത്തിൽ അഭ്യർത്ഥനകളുടെ ഒഴുക്ക് മനസ്സിലാക്കാനും പ്രകടനത്തിലെ തടസ്സങ്ങൾ കണ്ടെത്താനും പ്രയാസമായിരിക്കും.
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് ഉപയോഗിച്ച്, ഓരോ സർവീസിലൂടെയും അഭ്യർത്ഥന കടന്നുപോകുമ്പോൾ അത് ട്രാക്ക് ചെയ്യാനും ഓരോ സർവീസും ഉണ്ടാക്കുന്ന ലേറ്റൻസി ദൃശ്യവൽക്കരിക്കാനും കഴിയും. ഇത് ഏത് സർവീസാണ് തടസ്സത്തിന് കാരണമാകുന്നതെന്ന് തിരിച്ചറിയാനും തിരുത്തൽ നടപടികൾ സ്വീകരിക്കാനും നിങ്ങളെ അനുവദിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ഡാറ്റാബേസ് ക്വറിക്ക് കൂടുതൽ സമയമെടുക്കുന്നതിനാൽ പേയ്മെൻ്റ് സർവീസ് വേഗത കുറഞ്ഞതാണെന്ന് നിങ്ങൾ കണ്ടെത്തിയേക്കാം. തുടർന്ന് നിങ്ങൾക്ക് ആ ക്വറി ഒപ്റ്റിമൈസ് ചെയ്യുകയോ പ്രകടനം മെച്ചപ്പെടുത്താൻ കാഷിംഗ് ചേർക്കുകയോ ചെയ്യാം.
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിനുള്ള മികച്ച രീതികൾ
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിൽ നിന്ന് പരമാവധി പ്രയോജനം നേടാൻ, ഈ മികച്ച രീതികൾ പിന്തുടരുക:
- ഏറ്റവും നിർണായകമായ സർവീസുകളിൽ നിന്ന് ആരംഭിക്കുക: നിങ്ങളുടെ ബിസിനസ്സിന് ഏറ്റവും നിർണായകമായതോ പ്രശ്നക്കാരാണെന്ന് അറിയപ്പെടുന്നതോ ആയ സർവീസുകൾ ഇൻസ്ട്രുമെൻ്റ് ചെയ്യുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുക.
- സ്ഥിരമായ പേരിടൽ രീതികൾ ഉപയോഗിക്കുക: ട്രെയ്സ് ഡാറ്റ വിശകലനം ചെയ്യുന്നത് എളുപ്പമാക്കുന്നതിന് സ്പാനുകൾക്കും ടാഗുകൾക്കും സ്ഥിരമായ പേരിടൽ രീതികൾ ഉപയോഗിക്കുക.
- അർത്ഥവത്തായ ടാഗുകൾ ചേർക്കുക: ചെയ്യുന്ന പ്രവർത്തനത്തെക്കുറിച്ച് കൂടുതൽ വിവരങ്ങൾ നൽകുന്നതിന് സ്പാനുകളിൽ ടാഗുകൾ ചേർക്കുക. ഉദാഹരണത്തിന്, HTTP മെത്തേഡ്, URL, അല്ലെങ്കിൽ യൂസർ ഐഡി എന്നിവയ്ക്കായി നിങ്ങൾക്ക് ടാഗുകൾ ചേർക്കാം.
- ട്രെയ്സുകൾ സാമ്പിൾ ചെയ്യുക: ഉയർന്ന ട്രാഫിക്കുള്ള എൻവയോൺമെൻ്റുകളിൽ, ശേഖരിക്കുന്ന ഡാറ്റയുടെ അളവ് കുറയ്ക്കുന്നതിന് നിങ്ങൾ ട്രെയ്സുകൾ സാമ്പിൾ ചെയ്യേണ്ടതായി വന്നേക്കാം. നിങ്ങളുടെ ഫലങ്ങളെ ബാധിക്കാത്ത രീതിയിലാണ് നിങ്ങൾ ട്രെയ്സുകൾ സാമ്പിൾ ചെയ്യുന്നതെന്ന് ഉറപ്പാക്കുക. ഹെഡ്-ബേസ്ഡ് അല്ലെങ്കിൽ ടെയിൽ-ബേസ്ഡ് സാമ്പിളിംഗ് പോലുള്ള തന്ത്രങ്ങൾ നിലവിലുണ്ട്; പിശക് വിശകലനത്തിന് ടെയിൽ-ബേസ്ഡ് സാമ്പിളിംഗ് കൂടുതൽ കൃത്യമായ ഡാറ്റ നൽകുന്നു.
- നിങ്ങളുടെ ട്രെയ്സിംഗ് ഇൻഫ്രാസ്ട്രക്ചർ നിരീക്ഷിക്കുക: നിങ്ങളുടെ ട്രെയ്സിംഗ് ബാക്കെൻഡിൻ്റെ പ്രകടനം നിരീക്ഷിക്കുകയും അത് ഒരു തടസ്സമായി മാറുന്നില്ലെന്ന് ഉറപ്പാക്കുകയും ചെയ്യുക.
- ഇൻസ്ട്രുമെൻ്റേഷൻ ഓട്ടോമേറ്റ് ചെയ്യുക: നിങ്ങളുടെ കോഡ് ഇൻസ്ട്രുമെൻ്റ് ചെയ്യുന്നതിനുള്ള പ്രയത്നം കുറയ്ക്കുന്നതിന് സാധ്യമാകുമ്പോഴെല്ലാം ഓട്ടോമാറ്റിക് ഇൻസ്ട്രുമെൻ്റേഷൻ ഏജൻ്റുകൾ ഉപയോഗിക്കുക.
- മറ്റ് ഒബ്സെർവബിലിറ്റി ടൂളുകളുമായി സംയോജിപ്പിക്കുക: നിങ്ങളുടെ സിസ്റ്റത്തിൻ്റെ കൂടുതൽ പൂർണ്ണമായ കാഴ്ച നൽകുന്നതിന് ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിനെ ലോഗ് അഗ്രഗേഷൻ, മെട്രിക്സ് മോണിറ്ററിംഗ് തുടങ്ങിയ മറ്റ് ഒബ്സെർവബിലിറ്റി ടൂളുകളുമായി സംയോജിപ്പിക്കുക.
- നിങ്ങളുടെ ടീമിനെ ബോധവൽക്കരിക്കുക: ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിൻ്റെ പ്രയോജനങ്ങളെക്കുറിച്ചും ടൂളുകൾ ഫലപ്രദമായി എങ്ങനെ ഉപയോഗിക്കണമെന്നും നിങ്ങളുടെ ടീമിന് മനസ്സിലായെന്ന് ഉറപ്പാക്കുക.
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിൻ്റെ ഭാവി
ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് അതിവേഗം വികസിച്ചുകൊണ്ടിരിക്കുകയാണ്, പുതിയ ടൂളുകളും സാങ്കേതിക വിദ്യകളും എപ്പോഴും ഉയർന്നുവരുന്നു. ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിലെ ചില പ്രധാന പ്രവണതകൾ ഇവയാണ്:
- ഓപ്പൺടെലിമെട്രി (OpenTelemetry): ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിനുള്ള വ്യവസായ മാനദണ്ഡമായി ഓപ്പൺടെലിമെട്രി മാറിക്കൊണ്ടിരിക്കുന്നു, ഇത് നിങ്ങളുടെ കോഡ് ഇൻസ്ട്രുമെൻ്റ് ചെയ്യുന്നതിനും ടെലിമെട്രി ഡാറ്റ ശേഖരിക്കുന്നതിനും ഒരു വെൻഡർ-ന്യൂട്രൽ എപിഐ നൽകുന്നു. ഇതിൻ്റെ വ്യാപകമായ സ്വീകാര്യത വിവിധ സിസ്റ്റങ്ങളിലുടനീളം സംയോജനം ലളിതമാക്കുന്നു.
- eBPF: എക്സ്റ്റെൻഡഡ് ബെർക്ക്ലി പാക്കറ്റ് ഫിൽട്ടർ (eBPF) എന്നത് ലിനക്സ് കേർണലിൽ സാൻഡ്ബോക്സ് ചെയ്ത പ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു സാങ്കേതികവിദ്യയാണ്. കോഡിൽ മാറ്റങ്ങളൊന്നും വരുത്താതെ ആപ്ലിക്കേഷനുകൾ ഓട്ടോമാറ്റിക്കായി ഇൻസ്ട്രുമെൻ്റ് ചെയ്യാനും ട്രെയ്സിംഗ് ഡാറ്റ ശേഖരിക്കാനും eBPF ഉപയോഗിക്കാം.
- AI-പവർഡ് അനാലിസിസ്: ട്രെയ്സ് ഡാറ്റ വിശകലനം ചെയ്യാനും അപാകതകൾ ഓട്ടോമാറ്റിക്കായി കണ്ടെത്താനും പ്രകടന പ്രശ്നങ്ങൾ പ്രവചിക്കാനും ഒപ്റ്റിമൈസേഷനുകൾ ശുപാർശ ചെയ്യാനും മെഷീൻ ലേണിംഗ് അൽഗോരിതങ്ങൾ ഉപയോഗിക്കുന്നു.
- സർവീസ് മെഷ് ഇൻ്റഗ്രേഷൻ: ഇസ്റ്റിയോ (Istio), ലിങ്കർഡ് (Linkerd) പോലുള്ള സർവീസ് മെഷുകൾ ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗിന് ബിൽറ്റ്-ഇൻ പിന്തുണ നൽകുന്നു, ഇത് മൈക്രോസർവീസ് ആപ്ലിക്കേഷനുകൾ ഇൻസ്ട്രുമെൻ്റ് ചെയ്യുന്നതും നിരീക്ഷിക്കുന്നതും എളുപ്പമാക്കുന്നു.
ഉപസംഹാരം
സങ്കീർണ്ണമായ ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റങ്ങളെ മനസ്സിലാക്കുന്നതിനും നിയന്ത്രിക്കുന്നതിനും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് ഒരു അത്യന്താപേക്ഷിതമായ ഉപകരണമാണ്. അഭ്യർത്ഥനകളുടെ ഒഴുക്കിൻ്റെ സമഗ്രമായ കാഴ്ച നൽകുന്നതിലൂടെ, പ്രകടനത്തിലെ തടസ്സങ്ങൾ കണ്ടെത്താനും പിശകുകൾ ഡീബഗ് ചെയ്യാനും വിഭവ വിനിയോഗം ഒപ്റ്റിമൈസ് ചെയ്യാനും ഇത് നിങ്ങളെ പ്രാപ്തരാക്കുന്നു. ആപ്ലിക്കേഷൻ ആർക്കിടെക്ചറുകൾ കൂടുതൽ സങ്കീർണ്ണമാകുമ്പോൾ, ആധുനിക ആപ്ലിക്കേഷനുകളുടെ പ്രകടനം, വിശ്വാസ്യത, ഒബ്സെർവബിലിറ്റി എന്നിവ ഉറപ്പാക്കുന്നതിൽ ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് കൂടുതൽ നിർണായകമാകും.
പ്രധാന ആശയങ്ങൾ മനസ്സിലാക്കുകയും, മികച്ച രീതികൾ നടപ്പിലാക്കുകയും, ശരിയായ ഉപകരണങ്ങൾ തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്നതിലൂടെ, സ്ഥാപനങ്ങൾക്ക് അവരുടെ സിസ്റ്റങ്ങളെക്കുറിച്ച് വിലയേറിയ ഉൾക്കാഴ്ചകൾ നേടാനും മികച്ച ഉപയോക്തൃ അനുഭവങ്ങൾ നൽകാനും ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് പ്രയോജനപ്പെടുത്താം. ഓപ്പൺടെലിമെട്രി സ്റ്റാൻഡേർഡൈസേഷനിലേക്കുള്ള പാതയിൽ മുന്നേറുന്നു, ഇത് ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് മുമ്പത്തേക്കാൾ കൂടുതൽ പ്രാപ്യമാക്കുന്നു. നിങ്ങളുടെ ആധുനിക ആപ്ലിക്കേഷനുകളുടെ മുഴുവൻ കഴിവുകളും അൺലോക്ക് ചെയ്യാൻ ഡിസ്ട്രിബ്യൂട്ടഡ് ട്രെയ്സിംഗ് സ്വീകരിക്കുക.