பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

முதலில், ஒரு சிறிய கோட்பாடு. என்ன நடந்தது பன்னிரெண்டு காரணி பயன்பாடு?

எளிமையான வார்த்தைகளில், இந்த ஆவணம் SaaS பயன்பாடுகளின் வளர்ச்சியை எளிதாக்க வடிவமைக்கப்பட்டுள்ளது, நவீன பயன்பாடுகளின் வளர்ச்சியில் அடிக்கடி எதிர்கொள்ளும் சிக்கல்கள் மற்றும் நடைமுறைகள் குறித்து டெவலப்பர்கள் மற்றும் DevOps பொறியாளர்களுக்குத் தெரிவிக்க உதவுகிறது.

ஹெரோகு இயங்குதளத்தின் டெவலப்பர்களால் இந்த ஆவணம் உருவாக்கப்பட்டது.

பன்னிரண்டு-காரணி பயன்பாட்டை எந்த நிரலாக்க மொழியிலும் எழுதப்பட்ட பயன்பாடுகளுக்குப் பயன்படுத்தலாம் மற்றும் எந்தவொரு ஆதரவு சேவைகளின் (தரவுத்தளங்கள், செய்தி வரிசைகள், தற்காலிக சேமிப்புகள் போன்றவை) பயன்படுத்தப்படலாம்.

இந்த முறையின் அடிப்படையிலான காரணிகளைப் பற்றி சுருக்கமாக:

  1. கோட்பேஸ் - பதிப்புக் கட்டுப்பாட்டில் ஒரு கோட்பேஸ் கண்காணிக்கப்பட்டது - பல வரிசைப்படுத்தல்கள்
  2. சார்புநிலைகள் - சார்புகளை வெளிப்படையாக அறிவிக்கவும் மற்றும் தனிமைப்படுத்தவும்
  3. கட்டமைப்பு - இயக்க நேரத்தில் உள்ளமைவைச் சேமிக்கவும்
  4. ஆதரவு சேவைகள் - ஆதரவு சேவைகளை செருகுநிரல் ஆதாரங்களாகக் கருதுங்கள்
  5. உருவாக்கு, விடுவி, இயக்கு - சட்டசபை மற்றும் செயல்படுத்தும் நிலைகளை கண்டிப்பாக பிரிக்கவும்
  6. செயல்முறைகள் - பயன்பாட்டை ஒன்று அல்லது அதற்கு மேற்பட்ட நிலையற்ற செயல்முறைகளாக இயக்கவும்
  7. துறைமுக பிணைப்பு - போர்ட் பைண்டிங் மூலம் சேவைகளை ஏற்றுமதி செய்யவும்
  8. ஒத்திசைவு - செயல்முறைகளைப் பயன்படுத்தி உங்கள் பயன்பாட்டை அளவிடவும்
  9. செலவழிப்பு - வேகமான தொடக்கம் மற்றும் சுத்தமான பணிநிறுத்தம் மூலம் நம்பகத்தன்மையை அதிகரிக்கவும்
  10. பயன்பாட்டு மேம்பாடு/செயல்பாட்டு சமநிலை - உங்கள் வளர்ச்சி, நிலை மற்றும் உற்பத்தி சூழல்களை முடிந்தவரை ஒரே மாதிரியாக வைத்திருங்கள்
  11. பதிவு செய்தல் - நிகழ்வுகளின் ஸ்ட்ரீமாக பதிவைக் காண்க
  12. நிர்வாக பணிகள் - தற்காலிக செயல்முறைகளைப் பயன்படுத்தி நிர்வாகம்/மேலாண்மை பணிகளைச் செய்யவும்

பின்வரும் ஆதாரங்களில் இருந்து 12 காரணிகளைப் பற்றிய கூடுதல் தகவலைப் பெறலாம்:

நீல-பச்சை வரிசைப்படுத்தல் என்றால் என்ன?

நீல-பச்சை வரிசைப்படுத்தல் என்பது ஒரு விண்ணப்பத்தை வழங்குவதற்கான ஒரு முறையாகும் தயாரிப்பு இறுதி வாடிக்கையாளர் தனது பங்கில் எந்த மாற்றத்தையும் காணாத வகையில். வேறு வார்த்தைகளில் கூறுவதானால், பூஜ்ஜியத்துடன் ஒரு பயன்பாட்டை வரிசைப்படுத்துதல் செயல்படாத நேரத்தின்.

கிளாசிக் BG வரிசைப்படுத்தல் திட்டம் கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது போல் தெரிகிறது.

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

  • தொடக்கத்தில் 2 இயற்பியல் சேவையகங்கள் முற்றிலும் ஒரே குறியீடு, பயன்பாடு, திட்டம் மற்றும் ஒரு திசைவி (பேலன்சர்) உள்ளது.
  • திசைவி ஆரம்பத்தில் அனைத்து கோரிக்கைகளையும் ஒரு சேவையகத்திற்கு அனுப்புகிறது (பச்சை).
  • நீங்கள் மீண்டும் வெளியிட வேண்டிய தருணத்தில், முழு திட்டமும் மற்றொரு சர்வரில் புதுப்பிக்கப்படும் (நீல), இது தற்போது எந்த கோரிக்கையையும் செயல்படுத்தவில்லை.
  • குறியீடு இயக்கப்பட்ட பிறகு நீலம் சேவையகம் முழுமையாக புதுப்பிக்கப்பட்டது, திசைவிக்கு மாறுவதற்கான கட்டளை கொடுக்கப்பட்டுள்ளது பச்சை மீது நீல சர்வர்.
  • இப்போது அனைத்து வாடிக்கையாளர்களும் குறியீட்டுடன் இயங்கும் முடிவைப் பார்க்கிறார்கள் நீல சர்வர்.
  • சில காலம், பச்சை பயன்பாட்டிற்கு தோல்வியுற்றால், சேவையகம் ஒரு காப்பு பிரதியாக செயல்படுகிறது நீல சேவையகம் மற்றும் தோல்வி மற்றும் பிழைகள் ஏற்பட்டால், திசைவி பயனர் ஓட்டத்தை மீண்டும் மாற்றுகிறது பச்சை பழைய நிலையான பதிப்புடன் சேவையகம், புதிய குறியீடு திருத்தம் மற்றும் சோதனைக்கு அனுப்பப்படும்.
  • செயல்முறையின் முடிவில், அது அதே வழியில் புதுப்பிக்கப்படுகிறது பச்சை சர்வர். அதை புதுப்பித்த பிறகு, திசைவி கோரிக்கை ஓட்டத்தை மீண்டும் மாற்றுகிறது பச்சை சர்வர்.

இது மிகவும் அழகாக இருக்கிறது மற்றும் முதல் பார்வையில் எந்த பிரச்சனையும் இருக்கக்கூடாது.
ஆனால் நாம் நவீன உலகில் வசிப்பதால், கிளாசிக்கல் திட்டத்தில் சுட்டிக்காட்டப்பட்ட உடல் மாறுதலுடன் கூடிய விருப்பம் எங்களுக்கு பொருந்தாது. இப்போதைக்கு தகவலை பதிவு செய்யுங்கள், நாங்கள் அதற்கு பிறகு திரும்புவோம்.

மோசமான மற்றும் நல்ல ஆலோசனை

பொறுப்புத் துறப்பு: கீழே உள்ள எடுத்துக்காட்டுகள் நான் பயன்படுத்தும் பயன்பாடுகள்/முறைகளைக் காட்டுகின்றன, நீங்கள் ஒத்த செயல்பாடுகளுடன் எந்த மாற்றுகளையும் பயன்படுத்தலாம்.

பெரும்பாலான எடுத்துக்காட்டுகள் PHP மற்றும் Docker உடன் இணைய மேம்பாட்டுடன் (இது ஒரு ஆச்சரியம்) ஒரு வழியில் அல்லது வேறு வழியில் குறுக்கிடும்.

கீழே உள்ள பத்திகள் குறிப்பிட்ட எடுத்துக்காட்டுகளைப் பயன்படுத்தி காரணிகளின் பயன்பாட்டின் எளிய நடைமுறை விளக்கத்தை வழங்குகின்றன; இந்த தலைப்பில் நீங்கள் மேலும் கோட்பாட்டைப் பெற விரும்பினால், அசல் மூலத்திற்கு மேலே உள்ள இணைப்புகளைப் பின்பற்றவும்.

1. கோட்பேஸ்

FTP மற்றும் FileZilla ஐப் பயன்படுத்தி கோப்புகளை ஒரு நேரத்தில் சேவையகங்களில் பதிவேற்றவும், உற்பத்தி சேவையகத்தைத் தவிர வேறு எங்கும் குறியீட்டைச் சேமிக்க வேண்டாம்.

திட்டமானது எப்போதும் ஒரே குறியீட்டுத் தளத்தைக் கொண்டிருக்க வேண்டும், அதாவது எல்லா குறியீடுகளும் ஒன்றிலிருந்து வருகிறது Git தகவல் களஞ்சியம். சேவையகங்கள் (உற்பத்தி, ஸ்டேஜிங், டெஸ்ட்1, டெஸ்ட்2...) ஒரு பொதுவான களஞ்சியத்தின் கிளைகளிலிருந்து குறியீட்டைப் பயன்படுத்துகின்றன. இந்த வழியில் நாம் குறியீடு நிலைத்தன்மையை அடைகிறோம்.

2. சார்புநிலைகள்

கோப்புறைகளில் உள்ள அனைத்து நூலகங்களையும் திட்டத்தின் மூலத்திற்கு நேரடியாகப் பதிவிறக்கவும். நூலகத்தின் தற்போதைய பதிப்புடன் புதிய குறியீட்டை கோப்புறைக்கு மாற்றுவதன் மூலம் புதுப்பிப்புகளை உருவாக்கவும். மேலும் 20 சேவைகள் இயங்கும் ஹோஸ்ட் சர்வரில் தேவையான அனைத்து பயன்பாடுகளையும் நேரடியாக நிறுவவும்.

ஒரு திட்டம் எப்போதும் தெளிவாக புரிந்துகொள்ளக்கூடிய சார்புகளின் பட்டியலைக் கொண்டிருக்க வேண்டும் (சார்புகளால் நான் சூழலையும் குறிக்கிறேன்). அனைத்து சார்புகளும் வெளிப்படையாக வரையறுக்கப்பட்டு தனிமைப்படுத்தப்பட வேண்டும்.
உதாரணமாக எடுத்துக் கொள்வோம் இசையமைப்பாளர் и கூலியாள்.

இசையமைப்பாளர் — PHP இல் நூலகங்களை நிறுவ உங்களை அனுமதிக்கும் தொகுப்பு மேலாளர். இசையமைப்பாளர் பதிப்புகளை கண்டிப்பாக அல்லது தளர்வாகக் குறிப்பிடவும், அவற்றை வெளிப்படையாக வரையறுக்கவும் உங்களை அனுமதிக்கிறது. சர்வரில் 20 வெவ்வேறு திட்டப்பணிகள் இருக்கலாம் மற்றும் ஒவ்வொன்றும் தனித்தனியாக தொகுப்புகள் மற்றும் நூலகங்களின் தனிப்பட்ட பட்டியல் இருக்கும்.

கூலியாள் - பயன்பாடு இயங்கும் சூழலை வரையறுக்கவும் தனிமைப்படுத்தவும் உங்களை அனுமதிக்கும் ஒரு பயன்பாடு. அதன்படி, இசையமைப்பாளரைப் போலவே, ஆனால் இன்னும் முழுமையாக, பயன்பாடு என்ன வேலை செய்கிறது என்பதை நாம் தீர்மானிக்க முடியும். PHP இன் குறிப்பிட்ட பதிப்பைத் தேர்ந்தெடுத்து, கூடுதல் எதையும் சேர்க்காமல், திட்டப்பணிக்குத் தேவையான தொகுப்புகளை மட்டும் நிறுவவும். மற்றும் மிக முக்கியமாக, ஹோஸ்ட் இயந்திரம் மற்றும் பிற திட்டங்களின் தொகுப்புகள் மற்றும் சூழலில் குறுக்கிடாமல். அதாவது, டோக்கர் மூலம் இயங்கும் சர்வரில் உள்ள அனைத்து திட்டங்களும் முற்றிலும் எந்த தொகுப்பு தொகுப்புகளையும் முற்றிலும் மாறுபட்ட சூழலையும் பயன்படுத்தலாம்.

3. கட்டமைப்பு

குறியீட்டில் நேரடியாக கட்டமைப்புகளை மாறிலிகளாக சேமிக்கவும். சோதனை சேவையகத்திற்கான தனி மாறிலிகள், உற்பத்திக்கு தனி. சுற்றுச்சூழலைப் பொறுத்து பயன்பாட்டின் செயல்பாட்டை நேரடியாக திட்டத்தின் வணிக தர்க்கத்தில் வேறு உருவாக்கினால் பயன்படுத்தவும்.

கொன்ஃபிகுராசி - திட்ட வரிசைப்படுத்தல் வேறுபடும் ஒரே வழி இதுதான். வெறுமனே, கட்டமைப்புகள் சூழல் மாறிகள் (env vars) வழியாக அனுப்பப்பட வேண்டும்.

அதாவது, நீங்கள் பல உள்ளமைவு கோப்புகளை .config.prod .config.local சேமித்து, .config (பயன்பாடு தரவைப் படிக்கும் முக்கிய கட்டமைப்பு) என மறுபெயரிடலாம் - இது சரியான அணுகுமுறையாக இருக்காது. இந்த வழக்கில் உள்ளமைவுகளின் தகவல் அனைத்து பயன்பாட்டு டெவலப்பர்களுக்கும் பொதுவில் கிடைக்கும் மற்றும் உற்பத்தி சேவையகத்திலிருந்து தரவு சமரசம் செய்யப்படும். அனைத்து உள்ளமைவுகளும் நேரடியாக வரிசைப்படுத்தல் அமைப்பில் (CI/CD) சேமிக்கப்பட வேண்டும் மற்றும் வரிசைப்படுத்தலின் போது ஒரு குறிப்பிட்ட சூழலுக்குத் தேவையான வெவ்வேறு மதிப்புகளுடன் வெவ்வேறு சூழல்களுக்கு உருவாக்கப்பட வேண்டும்.

4. மூன்றாம் தரப்பு சேவைகள்

சுற்றுச்சூழலுடன் கண்டிப்பாக இணைந்திருங்கள், சில சூழல்களில் ஒரே சேவைகளுக்கு வெவ்வேறு இணைப்புகளைப் பயன்படுத்தவும்.

உண்மையில், இந்த புள்ளி கட்டமைப்புகள் பற்றிய புள்ளியுடன் வலுவாக ஒன்றுடன் ஒன்று உள்ளது, ஏனெனில் இந்த புள்ளி இல்லாமல், சாதாரண உள்ளமைவு தரவை உருவாக்க முடியாது மற்றும் பொதுவாக, உள்ளமைக்கும் திறன் ஒன்றும் குறையும்.

வரிசை சேவையகங்கள், தரவுத்தளங்கள், கேச்சிங் சேவைகள் போன்ற வெளிப்புற சேவைகளுக்கான அனைத்து இணைப்புகளும் உள்ளூர் சூழல் மற்றும் மூன்றாம் தரப்பு / உற்பத்தி சூழல் ஆகிய இரண்டிற்கும் ஒரே மாதிரியாக இருக்க வேண்டும். வேறு வார்த்தைகளில் கூறுவதானால், எந்த நேரத்திலும், இணைப்பு சரத்தை மாற்றுவதன் மூலம், பயன்பாட்டுக் குறியீட்டை மாற்றாமல், அடிப்படை #1 க்கு அழைப்புகளை அடிப்படை #2 உடன் மாற்றலாம். அல்லது, முன்னோக்கிப் பார்க்கும்போது, ​​எடுத்துக்காட்டாக, சேவையை அளவிடும் போது, ​​கூடுதல் கேச் சேவையகத்திற்கான இணைப்பை நீங்கள் எந்த சிறப்பு வழியிலும் குறிப்பிட வேண்டியதில்லை.

5. Build, release, execute

சேவையகத்தில் குறியீட்டின் இறுதிப் பதிப்பை மட்டும் வைத்திருக்கவும், வெளியீட்டைத் திரும்பப் பெறுவதற்கான வாய்ப்பு இல்லை. வட்டு இடத்தை நிரப்ப தேவையில்லை. ஒரு பிழையுடன் குறியீட்டை உற்பத்தியில் வெளியிட முடியும் என்று நினைக்கும் எவரும் மோசமான புரோகிராமர்!

வரிசைப்படுத்தலின் அனைத்து நிலைகளும் ஒருவருக்கொருவர் பிரிக்கப்பட வேண்டும்.

திரும்பிச் செல்ல ஒரு வாய்ப்பு உள்ளது. விரைவான அணுகலில் சேமிக்கப்பட்ட பயன்பாட்டின் பழைய நகல்களுடன் (ஏற்கனவே கூடியிருந்த மற்றும் போருக்குத் தயாராக) வெளியீடுகளை உருவாக்கவும், இதனால் பிழைகள் ஏற்பட்டால் பழைய பதிப்பை மீட்டெடுக்கலாம். அதாவது, நிபந்தனையுடன் ஒரு கோப்புறை உள்ளது வெளியீடுகளில் மற்றும் கோப்புறை தற்போதைய, மற்றும் கோப்புறையை வெற்றிகரமாக வரிசைப்படுத்தி அசெம்பிளி செய்த பிறகு தற்போதைய உள்ளே இருக்கும் புதிய வெளியீட்டிற்கு குறியீட்டு இணைப்பு மூலம் இணைக்கப்பட்டுள்ளது வெளியீடுகளில் வெளியீட்டு எண்ணின் வழக்கமான பெயருடன்.

இங்குதான் ப்ளூ-கிரீன் வரிசைப்படுத்தலை நாங்கள் நினைவில் கொள்கிறோம், இது குறியீட்டிற்கு இடையில் மாறுவதற்கு மட்டுமல்லாமல், எல்லா வளங்கள் மற்றும் சூழல்களுக்கு இடையில் எல்லாவற்றையும் மாற்றும் திறனுடன் மாற அனுமதிக்கிறது.

6. செயல்முறைகள்

பயன்பாட்டு நிலைத் தரவை நேரடியாக பயன்பாட்டிலேயே சேமிக்கவும். பயன்பாட்டின் ரேமில் அமர்வுகளைப் பயன்படுத்தவும். முடிந்தவரை மூன்றாம் தரப்பு சேவைகளுக்கு இடையே பகிர்வதைப் பயன்படுத்தவும். பயன்பாட்டில் ஒரே ஒரு செயல்முறை மட்டுமே இருக்க முடியும் மற்றும் அளவிடுதலை அனுமதிக்காது என்ற உண்மையை நம்புங்கள்.

அமர்வுகளைப் பொறுத்தவரை, மூன்றாம் தரப்பு சேவைகளால் (memcached, redis) கட்டுப்படுத்தப்படும் தற்காலிக சேமிப்பில் மட்டுமே தரவைச் சேமிக்கவும், எனவே உங்களிடம் 20 பயன்பாட்டு செயல்முறைகள் இயங்கினாலும், அவற்றில் ஏதேனும் தற்காலிக சேமிப்பை அணுகினால், கிளையண்டுடன் தொடர்ந்து பணியாற்ற முடியும். பயனர் மற்றொரு செயல்பாட்டில் பயன்பாட்டுடன் பணிபுரியும் அதே நிலை. இந்த அணுகுமுறையுடன், நீங்கள் மூன்றாம் தரப்பு சேவைகளின் எத்தனை நகல்களைப் பயன்படுத்தினாலும், எல்லாமே சாதாரணமாக மற்றும் தரவை அணுகுவதில் சிக்கல்கள் இல்லாமல் செயல்படும்.

7. துறைமுக பிணைப்பு

மூன்றாம் தரப்பு சேவைகளுடன் எவ்வாறு வேலை செய்வது என்பது இணைய சேவையகத்திற்கு மட்டுமே தெரிந்திருக்க வேண்டும். அல்லது இன்னும் சிறப்பாக, மூன்றாம் தரப்பு சேவைகளை நேரடியாக இணைய சேவையகத்திற்குள் நிறுவவும். எடுத்துக்காட்டாக, அப்பாச்சியில் PHP தொகுதியாக.
உங்கள் அனைத்து சேவைகளும் சில முகவரி மற்றும் போர்ட்டை அணுகுவதன் மூலம் ஒருவருக்கொருவர் அணுகக்கூடியதாக இருக்க வேண்டும் (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), அதாவது, nginx இலிருந்து நான் php-fpm மற்றும் க்கு இரண்டையும் அணுக முடியும் postgres, மற்றும் php-fpm இலிருந்து postgres மற்றும் nginx மற்றும் உண்மையில் ஒவ்வொரு சேவையிலிருந்தும் நான் மற்றொரு சேவையை அணுக முடியும். இந்த வழியில், ஒரு சேவையின் நம்பகத்தன்மை மற்றொரு சேவையின் நம்பகத்தன்மையுடன் பிணைக்கப்படவில்லை.

8. இணைநிலை

ஒரு செயல்முறையுடன் வேலை செய்யுங்கள், இல்லையெனில் பல செயல்முறைகள் ஒன்றோடொன்று இணைக்க முடியாது!

அளவிடுவதற்கு அறையை விடுங்கள். டோக்கர் திரள் இதற்கு சிறந்தது.
டோக்கர் ஸ்வர்ம் என்பது வெவ்வேறு இயந்திரங்கள் மற்றும் ஒரே இயந்திரத்தில் உள்ள கொள்கலன்களின் கூட்டங்களுக்கு இடையே உள்ள கொள்கலன்களின் கொத்துகளை உருவாக்கி நிர்வகிப்பதற்கான ஒரு கருவியாகும்.

ஸ்வார்மைப் பயன்படுத்தி, ஒவ்வொரு செயல்முறைக்கும் எத்தனை ஆதாரங்களை ஒதுக்குவேன் மற்றும் அதே சேவையின் எத்தனை செயல்முறைகளை நான் தொடங்குவேன் என்பதை என்னால் தீர்மானிக்க முடியும், மேலும் கொடுக்கப்பட்ட போர்ட்டில் தரவைப் பெறும் உள் பேலன்சர் தானாகவே செயல்முறைகளுக்கு ப்ராக்ஸி செய்யும். இதனால், சர்வரில் சுமை அதிகரித்துள்ளதைக் கண்டு, நான் கூடுதல் செயல்முறைகளைச் சேர்க்க முடியும், இதனால் சில செயல்முறைகளில் சுமை குறைகிறது.

9. செலவழிப்பு

செயல்முறைகள் மற்றும் தரவுகளுடன் வேலை செய்ய வரிசைகளைப் பயன்படுத்த வேண்டாம். ஒரு செயல்முறையைக் கொல்வது முழு பயன்பாட்டையும் பாதிக்கும். ஒரு சேவை செயலிழந்தால், அனைத்தும் குறையும்.

ஒவ்வொரு செயல்முறையும் சேவையும் எந்த நேரத்திலும் முடக்கப்படலாம், இது மற்ற சேவைகளைப் பாதிக்கக்கூடாது (நிச்சயமாக, இந்த சேவை மற்றொரு சேவைக்கு கிடைக்காது என்று அர்த்தமல்ல, ஆனால் இதற்குப் பிறகு மற்றொரு சேவை முடக்கப்படாது). அனைத்து செயல்முறைகளும் லாவகமாக நிறுத்தப்பட வேண்டும், அதனால் அவை நிறுத்தப்படும் போது, ​​எந்த தரவும் சேதமடையாது, அடுத்த முறை நீங்கள் அதை இயக்கும்போது கணினி சரியாக வேலை செய்யும். அதாவது, அவசரகால நிறுத்தம் ஏற்பட்டாலும், தரவு சேதமடையக்கூடாது (பரிவர்த்தனை பொறிமுறையானது இங்கே பொருத்தமானது, தரவுத்தளத்தில் உள்ள வினவல்கள் குழுக்களாக மட்டுமே செயல்படும், மேலும் குழுவிலிருந்து குறைந்தபட்சம் ஒரு வினவல் தோல்வியுற்றாலோ அல்லது செயல்படுத்தப்பட்டாலோ பிழை, பின்னர் குழுவிலிருந்து வேறு எந்த வினவல்களும் இறுதியில் தோல்வியடையாது).

10. பயன்பாட்டு மேம்பாடு/செயல்பாட்டு சமநிலை

பயன்பாட்டின் உற்பத்தி, நிலை மற்றும் உள்ளூர் பதிப்பு வேறுபட்டதாக இருக்க வேண்டும். தயாரிப்பில் நாங்கள் Yii லைட் கட்டமைப்பைப் பயன்படுத்துகிறோம், மேலும் உள்நாட்டில் Yii ஐப் பயன்படுத்துகிறோம், இதனால் அது உற்பத்தியில் வேகமாகச் செயல்படும்!

உண்மையில், அனைத்து வரிசைப்படுத்தல்களும் குறியீட்டுடன் பணியும் கிட்டத்தட்ட ஒரே மாதிரியான சூழலில் இருக்க வேண்டும் (நாங்கள் இயற்பியல் வன்பொருளைப் பற்றி பேசவில்லை). மேலும், எந்தவொரு மேம்பாட்டு ஊழியரும் தேவைப்பட்டால் உற்பத்திக்கு குறியீட்டைப் பயன்படுத்த முடியும், மேலும் சிறப்புப் பயிற்சி பெற்ற சில டெவொப்ஸ் துறை அல்ல, இது சிறப்பு வலிமைக்கு நன்றி மட்டுமே பயன்பாட்டை உற்பத்திக்கு உயர்த்த முடியும்.

இதற்கு டோக்கரும் எங்களுக்கு உதவுகிறார். முந்தைய அனைத்து புள்ளிகளும் கவனிக்கப்பட்டால், டோக்கரைப் பயன்படுத்துவது, உற்பத்தி மற்றும் உள்ளூர் இயந்திரத்தில் ஒன்று அல்லது இரண்டு கட்டளைகளை உள்ளிடுவதற்கு சூழலை வரிசைப்படுத்தும் செயல்முறையை கொண்டு வரும்.

11. பதிவுகள்

கோப்புகள் மற்றும் தரவுத்தளங்களுக்கு பதிவுகளை எழுதுகிறோம்! பதிவுகளிலிருந்து கோப்புகள் மற்றும் தரவுத்தளங்களை நாங்கள் சுத்தம் செய்வதில்லை. 9000 பெட்டா பைட்டுகள் உள்ள ஹார்ட் டிரைவ் வாங்குவோம், பரவாயில்லை.

அனைத்து பதிவுகளும் நிகழ்வுகளின் ஸ்ட்ரீமாக கருதப்பட வேண்டும். பதிவுகளை செயலாக்குவதில் விண்ணப்பமே ஈடுபடக்கூடாது. பதிவுகள் stdout க்கு வெளியிடப்பட வேண்டும் அல்லது udp போன்ற நெறிமுறை வழியாக அனுப்பப்பட வேண்டும், இதனால் பதிவுகளுடன் பணிபுரிவது பயன்பாட்டிற்கு எந்தச் சிக்கலையும் உருவாக்காது. கிரேலாக் இதற்கு நல்லது. udp வழியாக அனைத்து பதிவுகளையும் பெறும் கிரேலாக் (இந்த நெறிமுறையானது பாக்கெட்டின் வெற்றிகரமான வரவேற்பைப் பற்றிய பதிலுக்காக காத்திருக்க வேண்டிய அவசியமில்லை) பயன்பாட்டில் எந்த வகையிலும் தலையிடாது மற்றும் பதிவுகளை கட்டமைத்தல் மற்றும் செயலாக்குவது ஆகியவற்றை மட்டுமே கையாள்கிறது. அத்தகைய அணுகுமுறைகளுடன் வேலை செய்ய பயன்பாட்டு தர்க்கம் மாறாது.

12. நிர்வாகப் பணிகள்

தரவு, தரவுத்தளங்கள் போன்றவற்றைப் புதுப்பிக்க, API இல் தனித்தனியாக உருவாக்கப்பட்ட இறுதிப்புள்ளியைப் பயன்படுத்தவும், அதை தொடர்ச்சியாக 2 முறை இயக்கினால் அனைத்தும் நகலெடுக்கப்படும். ஆனால் நீங்கள் முட்டாள் இல்லை, நீங்கள் இரண்டு முறை கிளிக் செய்ய மாட்டீர்கள், மேலும் எங்களுக்கு இடம்பெயர்வு தேவையில்லை.

அனைத்து நிர்வாகப் பணிகளும் வெளியீட்டு மட்டத்தில் அனைத்து குறியீடுகளின் அதே சூழலில் செய்யப்பட வேண்டும். அதாவது, தரவுத்தளத்தின் கட்டமைப்பை நாம் மாற்ற வேண்டும் என்றால், நெடுவரிசைகளின் பெயர்களை மாற்றுவதன் மூலமும், சில காட்சி தரவுத்தள மேலாண்மை கருவிகள் மூலம் புதியவற்றைச் சேர்ப்பதன் மூலமும் அதை கைமுறையாக செய்ய மாட்டோம். இதுபோன்ற விஷயங்களுக்காக, நாங்கள் தனித்தனி ஸ்கிரிப்ட்களை உருவாக்குகிறோம் - இடம்பெயர்வுகள், எல்லா இடங்களிலும் எல்லா சூழல்களிலும் பொதுவான மற்றும் புரிந்துகொள்ளக்கூடிய முடிவுடன் ஒரே மாதிரியாக செயல்படுத்தப்படுகின்றன. திட்டப்பணியை தரவு மூலம் நிரப்புவது போன்ற மற்ற அனைத்து பணிகளுக்கும், இதே போன்ற வழிமுறைகள் பயன்படுத்தப்பட வேண்டும்.

PHP, Laravel, Laradock, Docker-Compose இல் எடுத்துக்காட்டு செயல்படுத்தல்

PS அனைத்து எடுத்துக்காட்டுகளும் MacOS இல் செய்யப்பட்டன. அவற்றில் பெரும்பாலானவை லினக்ஸுக்கும் ஏற்றவை. விண்டோஸ் பயனர்களே, என்னை மன்னியுங்கள், ஆனால் நான் நீண்ட காலமாக விண்டோஸில் வேலை செய்யவில்லை.

எங்கள் கணினியில் PHP இன் எந்தப் பதிப்பும் நிறுவப்படாத மற்றும் எதுவும் இல்லாத ஒரு சூழ்நிலையை கற்பனை செய்யலாம்.
டோக்கர் மற்றும் டோக்கர்-கம்போஸ் ஆகியவற்றின் சமீபத்திய பதிப்புகளை நிறுவவும். (இதை இணையத்தில் காணலாம்)

docker -v && 
docker-compose -v

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

1. நாங்கள் வைத்தோம் லாராடாக்

git clone https://github.com/Laradock/laradock.git && 
ls

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

லாராடாக்கைப் பொறுத்தவரை, இது மிகவும் அருமையான விஷயம் என்று நான் கூறுவேன், இதில் நிறைய கொள்கலன்கள் மற்றும் துணை பொருட்கள் உள்ளன. ஆனால் அதன் பணிநீக்கம் காரணமாக உற்பத்தியில் மாற்றங்கள் இல்லாமல் Laradock ஐப் பயன்படுத்த நான் பரிந்துரைக்க மாட்டேன். லாராடாக்கில் உள்ள எடுத்துக்காட்டுகளின் அடிப்படையில் உங்கள் சொந்த கொள்கலன்களை உருவாக்குவது நல்லது, இது மிகவும் உகந்ததாக இருக்கும், ஏனென்றால் யாருக்கும் ஒரே நேரத்தில் இருக்கும் அனைத்தும் தேவையில்லை.

2. எங்கள் பயன்பாட்டை இயக்க Laradock ஐ உள்ளமைக்கவும்.

cd laradock && 
cp env-example .env

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

2.1 சில எடிட்டரில் ஹாப்ர் கோப்பகத்தைத் திறக்கவும் (லாராடாக் குளோன் செய்யப்பட்ட பெற்றோர் கோப்புறை). (எனது PHPS புயல் வழக்கில்)

இந்த கட்டத்தில் நாங்கள் திட்டத்திற்கு ஒரு பெயரை மட்டுமே தருகிறோம்.

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

2.2 பணியிட படத்தை இயக்கவும். (உங்கள் விஷயத்தில், படங்கள் உருவாக்க சிறிது நேரம் எடுக்கும்)
பணியிடம் என்பது டெவலப்பர் சார்பாக கட்டமைப்புடன் பணிபுரிவதற்காக சிறப்பாக தயாரிக்கப்பட்ட படமாகும்.

பயன்படுத்தி கொள்கலனுக்குள் செல்கிறோம்

docker-compose up -d workspace && 
docker-compose exec workspace bash

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

2.3 Laravel ஐ நிறுவுகிறது

composer create-project --prefer-dist laravel/laravel application

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

2.4 நிறுவிய பின், ப்ராஜெக்ட் கொண்ட கோப்பகம் உருவாக்கப்பட்டதா என்பதைச் சரிபார்த்து, கில் கம்போஸ் செய்கிறோம்.

ls
exit
docker-compose down

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

2.5 PHPStorm க்குச் சென்று .env கோப்பில் நமது laravel பயன்பாட்டிற்கான சரியான பாதையை அமைப்போம்.

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

3. அனைத்து குறியீடுகளையும் Git இல் சேர்க்கவும்.

இதைச் செய்ய, Github இல் (அல்லது வேறு எங்கும்) ஒரு களஞ்சியத்தை உருவாக்குவோம். டெர்மினலில் உள்ள habr கோப்பகத்திற்குச் சென்று பின்வரும் குறியீட்டை இயக்குவோம்.

echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:nzulfigarov/habr-12factor.git # здесь будет ссылка на ваш репо
git push -u origin master
git status

எல்லாம் ஒழுங்காக இருக்கிறதா என்று பார்ப்போம்.

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

வசதிக்காக, Git க்கு சில காட்சி இடைமுகத்தைப் பயன்படுத்த பரிந்துரைக்கிறேன், என் விஷயத்தில் அது GitKraken. (இங்கே ஒரு பரிந்துரை இணைப்பு உள்ளது)

4. தொடங்குவோம்!

தொடங்குவதற்கு முன், 80 மற்றும் 443 போர்ட்களில் எதுவும் தொங்கவில்லை என்பதை உறுதிப்படுத்தவும்.

docker-compose up -d nginx php-fpm

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

எனவே, எங்கள் திட்டம் 3 தனித்தனி சேவைகளைக் கொண்டுள்ளது:

  • nginx - இணைய சேவையகம்
  • php-fpm - இணைய சேவையகத்திலிருந்து கோரிக்கைகளைப் பெறுவதற்கான php
  • பணியிடம் - டெவலப்பர்களுக்கான php

இந்த நேரத்தில், 4 இல் 12 புள்ளிகளைப் பூர்த்தி செய்யும் ஒரு பயன்பாட்டை நாங்கள் உருவாக்கியுள்ளோம், அதாவது:

1. கோட்பேஸ் — அனைத்து குறியீடுகளும் ஒரே களஞ்சியத்தில் உள்ளன (சிறிய குறிப்பு: லாராவெல் திட்டத்தில் டோக்கரைச் சேர்ப்பது சரியாக இருக்கலாம், ஆனால் இது முக்கியமல்ல).

2. சார்புநிலைகள் - எங்கள் சார்புகள் அனைத்தும் application/composer.json மற்றும் ஒவ்வொரு கொள்கலனின் ஒவ்வொரு Dockerfile இல் வெளிப்படையாக எழுதப்பட்டுள்ளன.

3. ஆதரவு சேவைகள் - ஒவ்வொரு சேவையும் (php-fom, nignx, பணியிடம்) அதன் சொந்த வாழ்க்கையை வாழ்கிறது மற்றும் வெளியில் இருந்து இணைக்கப்பட்டுள்ளது மற்றும் ஒரு சேவையுடன் பணிபுரியும் போது, ​​மற்றொன்று பாதிக்கப்படாது.

4. செயல்முறைகள் - ஒவ்வொரு சேவையும் ஒரு செயல்முறை. ஒவ்வொரு சேவையும் உள் நிலையை பராமரிக்காது.

5. துறைமுக பிணைப்பு

docker ps

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

நாம் பார்க்க முடியும் என, ஒவ்வொரு சேவையும் அதன் சொந்த போர்ட்டில் இயங்குகிறது மற்றும் மற்ற எல்லா சேவைகளுக்கும் அணுகக்கூடியது.

6. ஒத்திசைவு

டோக்கர் ஒரே சேவைகளின் பல செயல்முறைகளை தானாக சுமை சமநிலையுடன் உருவாக்க அனுமதிக்கிறது.

கொள்கலன்களை நிறுத்தி கொடி வழியாக இயக்குவோம் --அளவு

docker-compose down && 
docker-compose up -d --scale php-fpm=3 nginx php-fpm

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

நாம் பார்க்க முடியும் என, php-fpm கொள்கலனின் பிரதிகள் உருவாக்கப்பட்டுள்ளன. இந்த கொள்கலனில் வேலை செய்வதில் நாம் எதையும் மாற்ற வேண்டியதில்லை. நாங்கள் அதை போர்ட் 9000 இல் தொடர்ந்து அணுகுகிறோம், மேலும் டோக்கர் எங்களுக்கான கொள்கலன்களுக்கு இடையிலான சுமையை ஒழுங்குபடுத்துகிறது.

7. செலவழிப்பு - ஒவ்வொரு கொள்கலனும் மற்றொன்றுக்கு தீங்கு விளைவிக்காமல் கொல்லப்படலாம். கொள்கலனை நிறுத்துவது அல்லது மறுதொடக்கம் செய்வது, அடுத்தடுத்த துவக்கங்களின் போது பயன்பாட்டின் செயல்பாட்டை பாதிக்காது. ஒவ்வொரு கொள்கலனையும் எந்த நேரத்திலும் தூக்கலாம்.

8. பயன்பாட்டு மேம்பாடு/செயல்பாட்டு சமநிலை - நமது சூழல்கள் அனைத்தும் ஒரே மாதிரியானவை. உற்பத்தியில் உள்ள சர்வரில் கணினியை இயக்குவதன் மூலம், உங்கள் கட்டளைகளில் எதையும் மாற்ற வேண்டியதில்லை. எல்லாமே டோக்கரை ஒரே மாதிரியாக அடிப்படையாகக் கொண்டிருக்கும்.

9. பதிவு செய்தல் — இந்த கொள்கலன்களில் உள்ள அனைத்து பதிவுகளும் ஸ்ட்ரீமிற்குச் சென்று டோக்கர் கன்சோலில் தெரியும். (இந்த விஷயத்தில், உண்மையில், மற்ற வீட்டில் தயாரிக்கப்பட்ட கொள்கலன்களில், நீங்கள் அதை கவனித்துக்கொள்ளாவிட்டால் இது நடக்காது)

 docker-compose logs -f

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

ஆனால் PHP மற்றும் Nginx இல் உள்ள இயல்புநிலை மதிப்புகளும் ஒரு கோப்பில் பதிவுகளை எழுதுவதில் ஒரு பிடிப்பு உள்ளது. 12 காரணிகளை சந்திக்க, அது அவசியம் அணைக்க ஒவ்வொரு கொள்கலனின் உள்ளமைவுகளிலும் தனித்தனியாக ஒரு கோப்பில் பதிவுகளை எழுதுதல்.

Docker stdout க்கு மட்டும் பதிவுகளை அனுப்பும் திறனையும் வழங்குகிறது, ஆனால் நான் மேலே குறிப்பிட்ட graylog போன்ற விஷயங்களுக்கும். கிரேலாக் உள்ளே, நாம் விரும்பியபடி பதிவுகளை இயக்கலாம் மற்றும் எங்கள் பயன்பாடு இதை எந்த வகையிலும் கவனிக்காது.

10. நிர்வாக பணிகள் — அனைத்து நிர்வாகப் பணிகளும் 12 காரணி பயன்பாட்டை உருவாக்கியவர்கள் விரும்பும் வகையில் கைவினைஞர் கருவியின் மூலம் லாராவெல் மூலம் தீர்க்கப்படுகின்றன.

உதாரணமாக, சில கட்டளைகள் எவ்வாறு செயல்படுத்தப்படுகின்றன என்பதைக் காண்பிப்பேன்.
நாங்கள் கொள்கலனுக்குள் செல்கிறோம்.

 
docker-compose exec workspace bash
php artisan list

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

இப்போது நாம் எந்த கட்டளையையும் பயன்படுத்தலாம். (நாங்கள் தரவுத்தளம் மற்றும் தற்காலிக சேமிப்பை உள்ளமைக்கவில்லை என்பதை நினைவில் கொள்க, எனவே பாதி கட்டளைகள் சரியாக செயல்படுத்தப்படாது, ஏனெனில் அவை தற்காலிக சேமிப்பு மற்றும் தரவுத்தளத்துடன் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளன).

பயன்பாட்டு மேம்பாடு மற்றும் நீல-பச்சை வரிசைப்படுத்தல், php மற்றும் டோக்கரில் உள்ள எடுத்துக்காட்டுகளுடன் பன்னிரண்டு-காரணி பயன்பாட்டு முறையின் அடிப்படையில்

11. கொன்ஃபிகுராசி மற்றும் 12. உருவாக்கு, விடுவி, இயக்கு

நான் இந்த பகுதியை நீல-பச்சை வரிசைப்படுத்தலுக்கு அர்ப்பணிக்க விரும்பினேன், ஆனால் அது இந்த கட்டுரைக்கு மிகவும் விரிவானதாக மாறியது. இதைப் பற்றி தனி கட்டுரை எழுதுகிறேன்.

சுருக்கமாக, கருத்து CI/CD அமைப்புகளை அடிப்படையாகக் கொண்டது ஜென்கின்ஸ் и கிட்லாப் சிஐ. இரண்டிலும், குறிப்பிட்ட சூழலுடன் தொடர்புடைய சூழல் மாறிகளை அமைக்கலாம். அதன்படி, இந்த சூழ்நிலையில், புள்ளி c பூர்த்தி செய்யப்படும் கட்டமைப்புகள்.

மற்றும் பற்றிய புள்ளி உருவாக்கு, விடுவி, இயக்கு பெயருடன் உள்ளமைக்கப்பட்ட செயல்பாடுகளால் தீர்க்கப்படுகிறது பைப்லைன்.

பைப்லைன் வரிசைப்படுத்தல் செயல்முறையை பல நிலைகளாகப் பிரிக்க உங்களை அனுமதிக்கிறது, அசெம்பிளி, வெளியீடு மற்றும் செயலாக்கத்தின் நிலைகளை முன்னிலைப்படுத்துகிறது. பைப்லைனில், நீங்கள் காப்புப்பிரதிகளை உருவாக்கலாம், உண்மையில் எதையும். இது வரம்பற்ற திறன் கொண்ட ஒரு கருவி.

விண்ணப்பக் குறியீடு இங்கே உள்ளது கிட்ஹப்.
இந்த களஞ்சியத்தை குளோனிங் செய்யும் போது துணை தொகுதியை துவக்க மறக்காதீர்கள்.

PS: இந்த அணுகுமுறைகள் அனைத்தும் பிற பயன்பாடுகள் மற்றும் நிரலாக்க மொழிகளுடன் பயன்படுத்தப்படலாம். முக்கிய விஷயம் என்னவென்றால், சாரம் வேறுபடுவதில்லை.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்