የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

በትንሽ ቲዎሪ እንጀምር። ምን ሆነ የአስራ ሁለቱ ምክንያቶች መተግበሪያ?

በቀላል አነጋገር, ይህ ሰነድ የSaaS አፕሊኬሽኖችን እድገትን ለማቃለል የተነደፈ ነው, ገንቢዎች እና DevOps መሐንዲሶች በዘመናዊ አፕሊኬሽኖች እድገት ውስጥ ብዙ ጊዜ የሚያጋጥሟቸውን ችግሮች እና ልምዶች እንዲያውቁ በማድረግ ይረዳል.

ሰነዱ የተፈጠረው በሄሮኩ መድረክ ገንቢዎች ነው።

የአስራ ሁለት ፋክተር መተግበሪያ ዘዴ በማንኛውም የፕሮግራም አወጣጥ ቋንቋ በተፃፉ እና የሶስተኛ ወገን ድጋፍ አገልግሎቶችን (መረጃ ቋቶችን ፣ የመልእክት ወረፋዎችን ፣ መሸጎጫዎችን ፣ ወዘተ.) በመጠቀም ላይ ሊተገበር ይችላል።

ይህ ዘዴ የተመሰረተባቸው ስለራሳቸው ምክንያቶች በአጭሩ

  1. ኮድ ቤዝ - አንድ ምንጭ የሚከታተል ኮድ ቤዝ - ብዙ ማሰማራት
  2. ጥገኛዎች - ጥገኞችን በግልፅ ያሳውቁ እና ያገለሉ።
  3. ውቅር - በሂደት ጊዜ ውቅረትን ያስቀምጡ
  4. የሶስተኛ ወገን አገልግሎቶች (የመጠባበቂያ አገልግሎቶች) - የድጋፍ አገልግሎቶችን እንደ ተሰኪ ግብዓቶች ይያዙ
  5. ይገንቡ ፣ ይልቀቁ ፣ ያሂዱ - የግንባታ ደረጃዎችን በጥብቅ ይለያዩ እና ያሂዱ
  6. ሂደቶች - አፕሊኬሽኑን እንደ አንድ ወይም ብዙ ሀገር አልባ ሂደቶች ያሂዱ
  7. ወደብ ማሰር - አገልግሎቶችን በወደብ ማሰሪያ በኩል ወደ ውጭ መላክ
  8. ትይዩነት - መተግበሪያዎን በሂደቶች ያስመዝኑት።
  9. ማሰናከል - በፈጣን ጅምር እና በሚያምር መዘጋት አስተማማኝነትን ያሳድጉ
  10. የመተግበሪያ ልማት/ኦፕሬሽን ጥምርታ - የእድገት፣ የዝግጅት እና የምርት አካባቢዎችን በተቻለ መጠን ተመሳሳይ ያድርጉት
  11. መግባት - መዝገቡን እንደ የክስተቶች ጅረት ይያዙት።
  12. የአስተዳደር ተግባራት - በአንድ ጊዜ ሂደቶች የአስተዳደር / የአስተዳደር ስራዎችን ያከናውኑ

በ 12 ቱ ምክንያቶች ላይ የበለጠ መረጃ ለማግኘት የሚከተሉትን ምንጮች ይመልከቱ።

ሰማያዊ-አረንጓዴ ማሰማራት ምንድነው?

ሰማያዊ-አረንጓዴ ማሰማራት ማመልከቻን የማድረስ መንገድ ነው። ምርት የመጨረሻው ደንበኛ በእሱ በኩል ምንም ለውጦችን እንዳያይ በሚያስችል መንገድ. በሌላ አነጋገር ማመልከቻን ከዜሮ ጋር ማሰማራት ነው። የውል ጊዜ.

የሚታወቀው BG Deploy እቅድ ከታች ያለውን ምስል ይመስላል።

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

  • በመነሻው ላይ በትክክል አንድ አይነት ኮድ፣ አፕሊኬሽን፣ ፕሮጀክት ያላቸው 2 አካላዊ አገልጋዮች አሉ እና ራውተር (ሚዛን ሰጪ) አለ።
  • ራውተሩ መጀመሪያ ላይ ሁሉንም ጥያቄዎች ወደ አንዱ አገልጋይ ይመራል (አረንጓዴ).
  • እንደገና መልቀቅ በሚያስፈልግበት ጊዜ፣ ፕሮጀክቱ በሙሉ በሌላ አገልጋይ ላይ ተዘምኗል (ሰማያዊ) በአሁኑ ጊዜ ማንኛውንም ጥያቄዎችን የማያስተናግድ።
  • ለ ኮድ በኋላ ሰማያዊ አገልጋዩ ሙሉ በሙሉ ተዘምኗል ፣ ራውተር ከ ለመቀየር ትእዛዝ ተሰጥቶታል። አረንጓዴ። ላይ ሰማያዊ አገልጋይ.
  • አሁን ሁሉም ደንበኞች የኮዱን ውጤት ከ ጋር ያያሉ። ሰማያዊ አገልጋይ.
  • ለተወሰነ ጊዜ፣ አረንጓዴ አገልጋዩ ያልተሳካለት ሼል ቢፈጠር እንደ ምትኬ ያገለግላል ሰማያዊ አገልጋይ እና ብልሽቶች እና ስህተቶች ካሉ ራውተር የተጠቃሚውን ፍሰት ወደ ኋላ ይለውጠዋል አረንጓዴ አገልጋይ ከአሮጌው የተረጋጋ ስሪት ጋር ፣ እና አዲሱ ኮድ ለክለሳ እና ለሙከራ ይላካል።
  • እና በሂደቱ መጨረሻ ላይ, በተመሳሳይ መንገድ ተዘምኗል አረንጓዴ አገልጋይ. እና ካዘመነው በኋላ ራውተር የጥያቄውን ፍሰት ወደ ኋላ ይለውጠዋል አረንጓዴ አገልጋይ.

ሁሉም ነገር በጣም ጥሩ ይመስላል እና በአንደኛው እይታ ላይ ምንም ችግሮች ሊኖሩበት አይገባም.
ግን የምንኖረው በዘመናዊው ዓለም ውስጥ ስለሆነ ፣ በጥንታዊው እቅድ ውስጥ እንደተገለጸው በአካላዊ መለዋወጥ ያለው አማራጭ ለእኛ አይስማማንም። መረጃውን ለአሁኑ ይመዝገቡ ፣ በኋላ እንመለሳለን።

መጥፎ እና ጥሩ ምክር

ማስተባበያከዚህ በታች ያሉት ምሳሌዎች እኔ የምጠቀምባቸውን መገልገያዎች / ዘዴዎች ያሳያሉ ፣ ተመሳሳይ ተግባር ያላቸውን ማንኛውንም አማራጮች ሙሉ በሙሉ መጠቀም ይችላሉ።

አብዛኛዎቹ ምሳሌዎች ከድር ልማት (ምን የሚያስደንቅ ነገር) ከ PHP እና Docker ጋር ይገናኛሉ።

ከታች ባሉት አንቀጾች ውስጥ በተወሰኑ ምሳሌዎች ላይ የምክንያቶችን አጠቃቀም በተመለከተ ቀላል ተግባራዊ መግለጫ አለ, በዚህ ርዕስ ላይ ተጨማሪ ንድፈ ሃሳብ ለማግኘት ከፈለጉ, ከላይ ያሉትን አገናኞች ወደ ዋናው ምንጭ ይመልከቱ.

1. Codebase

ፋይሎችን ወደ አገልጋዮች አንድ በአንድ ለመስቀል ኤፍቲፒ እና ፋይልዚላ ተጠቀም፣ ከማምረቻ አገልጋይ በስተቀር የትም ቦታ ኮድ አታስቀምጥ።

አንድ ፕሮጀክት ሁል ጊዜ አንድ ነጠላ ኮድ መሠረት ሊኖረው ይገባል ፣ ማለትም ፣ ሁሉም ኮድ ከአንድ የመጣ ነው። Git ማከማቻ. ሰርቨሮች (ምርት፣ ዝግጅት፣ test1፣ test2 ...) ከአንድ የጋራ ማከማቻ ቅርንጫፍ ቅርንጫፍ ኮድ ይጠቀማሉ። ስለዚህ, የኮድ ወጥነት እናሳካለን.

2. ጥገኛዎች

ሁሉንም ቤተ-መጻሕፍት በአቃፊዎች ውስጥ በቀጥታ ወደ ፕሮጀክቱ ሥሩ ያውርዱ። አዲሱን ኮድ አሁን ካለው የቤተ-መጽሐፍት ስሪት ጋር ወደ አቃፊው በማስተላለፍ በቀላሉ ማሻሻያዎችን ያድርጉ። ሌሎች 20 አገልግሎቶች በሚሰሩበት በአስተናጋጅ አገልጋይ ላይ ሁሉንም አስፈላጊ መገልገያዎችን በቀጥታ ያስቀምጡ።

ፕሮጀክቱ ሁል ጊዜ በግልፅ ሊረዳ የሚችል የጥገኞች ዝርዝር ሊኖረው ይገባል (በጥገኞች ፣ እኔ ደግሞ አካባቢን ማለቴ ነው)። ሁሉም ጥገኞች በግልፅ መገለጽ እና መገለል አለባቸው።
እንደ ምሳሌ እንውሰድ የሙዚቃ ደራሲ и Docker.

የሙዚቃ ደራሲ - በ PHP ውስጥ ቤተ-መጽሐፍት እንዲጭኑ የሚያስችልዎ የጥቅል አስተዳዳሪ። አቀናባሪ ስሪቶችን በጥብቅ ወይም በትክክል አለመግለጽ እና በግልጽ እንዲገልጹ ችሎታ ይሰጥዎታል። በአገልጋዩ ላይ 20 የተለያዩ ፕሮጀክቶች ሊኖሩ ይችላሉ፣ እና እያንዳንዳቸው ከሌላው ነጻ የሆኑ ፓኬጆች እና ቤተ-መጻሕፍት የግል ዝርዝር ይኖራቸዋል።

Docker - ማመልከቻው የሚሰራበትን አካባቢ እንዲገልጹ እና እንዲገለሉ የሚያስችልዎ መገልገያ። በዚህ መሠረት, ልክ እንደ አቀናባሪ, ግን የበለጠ በጥልቀት, አፕሊኬሽኑ ምን እንደሚሰራ መወሰን እንችላለን. የተወሰነ የ PHP ስሪት ይምረጡ፣ ምንም ተጨማሪ ነገር ሳይጨምሩ ለፕሮጀክቱ ስራ አስፈላጊ የሆኑትን ፓኬጆች ብቻ ይጫኑ። እና ከሁሉም በላይ, በጥቅሎች እና በአስተናጋጅ ማሽን እና በሌሎች ፕሮጀክቶች አካባቢ ላይ ጣልቃ ሳይገቡ. ማለትም፣ በዶክተር በኩል የሚሰሩ ሁሉም ፕሮጄክቶች ማንኛውንም ጥቅል እና ሙሉ ለሙሉ የተለያዩ አካባቢዎችን መጠቀም ይችላሉ።

3. ማዋቀር

በኮዱ ውስጥ ውቅሮችን እንደ ቋሚዎች ያከማቹ። ለሙከራ አገልጋዩ የተለየ ቋሚዎች ፣ ለምርት የተለዩ። የመተግበሪያውን ስራ በአካባቢው ላይ በመመስረት በፕሮጀክቱ የቢዝነስ ሎጂክ ውስጥ በቀጥታ ከተገነባ.

ውቅረቶች - ይህ በፕሮጀክቱ መዘርጋት (ስምምነት) ውስጥ ሊለያይ የሚገባው ብቸኛው ነገር ነው. በሐሳብ ደረጃ፣ ውቅረቶች በአካባቢ ተለዋዋጮች (env vars) በኩል ማለፍ አለባቸው።

ማለትም ፣ ምንም እንኳን ብዙ የውቅረት ፋይሎችን .config.prod .config.local ቢያከማቹ እና በተሰማሩበት ጊዜ ወደ .config (መተግበሪያው ውሂብ የሚያነብበት ዋናው ውቅረት) እንደገና ቢሰየሙ - ይህ ትክክለኛ አቀራረብ አይሆንም ፣ ምክንያቱም በዚህ አጋጣሚ ከቅንብሮች ውስጥ ያለው መረጃ ለሁሉም የመተግበሪያ ገንቢዎች በይፋ የሚገኝ ሲሆን ከምርት አገልጋዩ የተገኘው መረጃ ይጣሳል። ሁሉም ውቅሮች በቀጥታ በማሰማራት ስርዓት (ሲአይ / ሲዲ) ውስጥ መቀመጥ አለባቸው እና በተሰማሩበት ጊዜ ለአንድ የተወሰነ አካባቢ አስፈላጊ ለሆኑ የተለያዩ እሴቶች ለተለያዩ አካባቢዎች መፈጠር አለባቸው።

4. የሶስተኛ ወገን አገልግሎቶች (የመጠባበቂያ አገልግሎቶች)

አካባቢን አጥብቀው ያስሩ፣ ለተመሳሳይ አገልግሎቶች በተወሰኑ አካባቢዎች የተለያዩ ግንኙነቶችን ይጠቀሙ።

በእውነቱ ይህ ንጥል ስለ ውቅሮች ከንጥሉ ጋር በጥብቅ የተጠላለፈ ነው ፣ ምክንያቱም ይህ ንጥል ከሌለ መደበኛ የውቅር ውሂብ ሊሰራ ስለማይችል እና በአጠቃላይ የማዋቀር እድሉ ይጠፋል።

እንደ ወረፋ አገልጋዮች፣ የውሂብ ጎታዎች፣ መሸጎጫ አገልግሎቶች ካሉ ውጫዊ አገልግሎቶች ጋር ያሉ ሁሉም ግንኙነቶች ለአካባቢው አካባቢ እና ለሶስተኛ ወገን/አምራች አካባቢ አንድ አይነት መሆን አለባቸው። በሌላ አነጋገር በማንኛውም ጊዜ የማመልከቻውን ኮድ ሳልለውጥ ጥሪዎችን ወደ ቤዝ #1 በመሠረት #2 ለመተካት የግንኙነት ገመዱን መለወጥ እችላለሁ። ወይም፣ ወደ ፊት በመመልከት፣ ለምሳሌ፣ አገልግሎቱን በሚለካበት ጊዜ፣ ለተጨማሪ መሸጎጫ አገልጋይ ግንኙነቱን በተወሰነ መንገድ ማመልከት አያስፈልግም።

5. ይገንቡ, ይለቀቁ, ይሮጡ

የመጨረሻውን የኮዱ ስሪት ብቻ በአገልጋዩ ላይ ያስቀምጡ፣ ምንም እድል ሳይኖር ልቀቱን መልሶ ለማንከባለል። የዲስክ ቦታ መሙላት አያስፈልግም. ኮዱን በስህተት ወደ ፕሮዳክሽን አደርጋለሁ ብሎ የሚያስብ ሰው መጥፎ ፕሮግራመር ነው!

ሁሉም የማሰማራት ደረጃዎች እርስ በርስ መነጣጠል አለባቸው.

ወደኋላ የመመለስ እድል ይኑርዎት። ስህተቶች ካሉ የድሮውን ስሪት ወደነበረበት ለመመለስ (ቀድሞውንም ተሰብስቦ ለጦርነት ዝግጁ) የመተግበሪያውን የቆዩ ቅጂዎች በፍጥነት ያግኙ። ማለትም፣ በሁኔታዊ ሁኔታ አቃፊ አለ። ይለቀቃል እና አቃፊ የአሁኑ, እና በተሳካ ሁኔታ ከተሰማሩ እና ከተሰበሰቡ በኋላ, ማህደሩ የአሁኑ በውስጡ ከሚገኘው አዲሱ ልቀት ጋር ካለው ምሳሌያዊ አገናኝ ጋር የተያያዘ ነው። ይለቀቃል ከመልቀቂያው ቁጥር ሁኔታዊ ስም ጋር.

በኮድ መካከል መቀያየርን ብቻ ሳይሆን ሁሉንም ሀብቶች እና አከባቢዎች እንኳን ሳይቀር ሁሉንም ነገር ወደ ኋላ የመመለስ ችሎታ እንዲቀይሩ የሚያስችልዎትን የብሉ-አረንጓዴ ማሰማራትን የምናስታውስበት ቦታ ነው።

6. ሂደቶች

የመተግበሪያ ሁኔታ ውሂብ በቀጥታ በመተግበሪያው ውስጥ ያከማቹ። በመተግበሪያው ራም ውስጥ ክፍለ ጊዜዎችን ተጠቀም። በሶስተኛ ወገን አገልግሎቶች መካከል በተቻለ መጠን የተጋራውን ይጠቀሙ። አፕሊኬሽኑ አንድ ሂደት ብቻ ሊኖረው ስለሚችል ልኬቱን አለመፍቀዱ እውነታ ላይ እሰሩት።

ክፍለ-ጊዜዎችን በተመለከተ መረጃን በሶስተኛ ወገን አገልግሎቶች በሚቆጣጠረው መሸጎጫ ውስጥ ብቻ (memcached, redis) ያከማቹ ስለዚህ 20 አፕሊኬሽን ሂደቶች ቢሰሩም ማንኛቸውም መሸጎጫውን የሚደርሱት በተመሳሳይ ሁኔታ ከደንበኛው ጋር መስራታቸውን ሊቀጥሉ ይችላሉ. ተጠቃሚው በሌላ ሂደት ውስጥ ከመተግበሪያው ጋር ሲሰራ የነበረው። በዚህ አቀራረብ ፣ ምንም ያህል የሶስተኛ ወገን አገልግሎቶች ቅጂዎች ቢጠቀሙ ፣ ሁሉም ነገር በትክክል እና በመረጃ ተደራሽነት ላይ ችግር ሳይኖር እንደሚሰራ ተገለጠ።

7. ወደብ ማሰር

ከሶስተኛ ወገን አገልግሎቶች ጋር እንዴት እንደሚሰራ ማወቅ ያለበት የድር አገልጋይ ብቻ ነው። እና በአጠቃላይ የሶስተኛ ወገን አገልግሎቶችን በድር አገልጋይ ውስጥ ማሳደግ የተሻለ ነው። ለምሳሌ, በ Apache ውስጥ እንደ ፒኤችፒ ሞጁል.
ወደ አንዳንድ አድራሻ እና ወደብ (localgost: 5432, localhost: 3000, nginx: 80, php-fpm: 9000) በመደወል ሁሉም አገልግሎቶችዎ እርስ በርሳቸው ተደራሽ መሆን አለባቸው, ማለትም ከ nginx ሁለቱንም php-fpm እና ማግኘት እችላለሁ. postgres, እና ከ php-fpm ወደ postgres እና nginx, እና ከእያንዳንዱ አገልግሎት እራሱ, ሌላ አገልግሎት ማግኘት እችላለሁ. ስለዚህ የአንድ አገልግሎት ጤና ከሌላ አገልግሎት ጤና ጋር የተቆራኘ አይደለም።

8. ትይዩነት

ከአንድ ሂደት ጋር ይስሩ, እና በድንገት ብዙ ሂደቶች እርስ በርስ መግባባት አይችሉም!

ለመመዘን አማራጩን ይተዉት። የዶከር መንጋ ለዚህ በጣም ጥሩ ነው.
ዶከር ስዋርም በተለያዩ ማሽኖች እና በአንድ ማሽን ላይ ያሉ የእቃ መያዢያ መያዣዎችን ዘለላዎችን ለመፍጠር እና ለማስተዳደር መሳሪያ ነው።

መንጋን በመጠቀም ለእያንዳንዱ ሂደት ምን ያህል ሀብቶችን እንደምመድብ እና ተመሳሳይ አገልግሎት ምን ያህል ሂደቶችን እንደምሰራ መወሰን እችላለሁ ፣ እና የውስጥ ሚዛኑ ፣ በተሰጠው ወደብ ላይ መረጃን የሚቀበል ፣ ለሂደቶች ወዲያውኑ ይተወዋል። ስለዚህ, በአገልጋዩ ላይ ያለው ጭነት እንደጨመረ, ተጨማሪ ሂደቶችን መጨመር እችላለሁ, በዚህም በተወሰኑ ሂደቶች ላይ ያለውን ጭነት ይቀንሳል.

9. አለመቻል

ከሂደቶች እና ውሂብ ጋር ለመስራት ወረፋዎችን አይጠቀሙ። አንድ ሂደትን መግደል የጠቅላላው መተግበሪያ አሠራር ላይ ተጽእኖ ሊኖረው ይገባል. አንድ አገልግሎት ቢቀንስ, ሁሉም ነገር ይቀንሳል.

እያንዳንዱ ሂደት እና አገልግሎት በማንኛውም ጊዜ ሊጠፋ ይችላል እና ይህ በሌሎች አገልግሎቶች ላይ ተጽዕኖ ማሳደር የለበትም (በእርግጥ ይህ አገልግሎቱ ለሌላ አገልግሎት የማይደረስበት እውነታ አይደለም ፣ ግን ከዚህ በኋላ ሌላ አገልግሎት አይጠፋም) . ሁሉም ሂደቶች በቀስታ መቋረጥ አለባቸው, ስለዚህ ሲቋረጡ, ውሂብ አይነካም እና በሚቀጥለው ጊዜ ሲበራ ስርዓቱ በትክክል ይሰራል. ማለትም ፣ ፅንስ ማስወረድ በሚከሰትበት ጊዜ እንኳን መረጃው ላይ ተጽዕኖ ማሳደር የለበትም (የግብይት ዘዴው እዚህ ተስማሚ ነው ፣ የውሂብ ጎታው ጥያቄዎች በቡድን ውስጥ ብቻ ይሰራሉ ​​​​እና ቢያንስ አንድ የቡድኑ ጥያቄ ካልተሳካ ወይም በስህተት ከተፈጸመ) , ከዚያ የቡድኑ ሌላ ጥያቄ በመጨረሻ በተግባር ላይ አይውልም).

10. የመተግበሪያ ልማት / ኦፕሬሽን ፓሪቲ

የመተግበሪያው ምርት፣ ዝግጅት እና አካባቢያዊ ስሪት የተለየ መሆን አለበት። በምርት ውስጥ፣ በምርት ውስጥ በፍጥነት እንዲሠራ የ Yii Lite ማዕቀፍ እና በአገር ውስጥ ዪ አለን!

እንደ እውነቱ ከሆነ, ሁሉም ማሰማራቶች እና ከኮድ ጋር የሚሰሩ ስራዎች ከሞላ ጎደል ተመሳሳይ አካባቢ መሆን አለባቸው (እኛ ስለ አካላዊ ሃርድዌር እየተነጋገርን አይደለም). እንዲሁም ማንኛውም የልማት ሰራተኛ አስፈላጊ ከሆነ ኮድን ወደ ምርት ማሰማራት መቻል አለበት, እና አንዳንድ ልዩ የሰለጠነ ዲፖፕስ ዲፓርትመንት አይደለም, ይህም በልዩ ጥንካሬ ምክንያት ማመልከቻውን በምርት ውስጥ ብቻ ከፍ ሊያደርግ ይችላል.

ዶከርም በዚህ ይረዳናል። በቀደሙት ነጥቦች ሁሉ፣ ዶከርን በመጠቀም አካባቢን በምርት ላይም ሆነ በአካባቢው ማሽን ላይ የማሰማራት ሂደት አንድ ወይም ሁለት ትዕዛዞችን ያስገኛል።

11. የምዝግብ ማስታወሻዎች (ምዝግብ ማስታወሻዎች)

ምዝግብ ማስታወሻዎችን ወደ ፋይሎች እና የውሂብ ጎታ እንጽፋለን! እኛ ፋይሎችን እና የውሂብ ጎታዎችን ከምዝግብ ማስታወሻዎች አናጸዳም። ለ9000 የፔታ ባይት እና ደንቦች ሃርድ ድራይቭን ብቻ እንግዛ።

ሁሉም ምዝግብ ማስታወሻዎች እንደ የክስተቶች ዥረት ሊቆጠሩ ይገባል. አፕሊኬሽኑ ራሱ የምዝግብ ማስታወሻዎችን ማቀናበር የለበትም። አፕሊኬሽኑ በምዝግብ ማስታወሻዎች ላይ ምንም አይነት ችግር እንዳይፈጥር መዝገቦቹ ለ stdout መሰጠት አለባቸው ወይም እንደ udp ባሉ ፕሮቶኮሎች መላክ አለባቸው። ግሬይሎግ ለዚህ ጥሩ ይሰራል። ግሬይሎግ ሁሉንም ምዝግብ ማስታወሻዎች በ udp መቀበል (ይህንን ፕሮቶኮል በመጠቀም ስለ ፓኬቱ ስኬታማ መቀበያ ምላሽ መጠበቅ አያስፈልግም) በምንም መልኩ በመተግበሪያው ውስጥ ጣልቃ አይገባም እና ምዝግብ ማስታወሻዎችን በማዋቀር እና በማቀናበር ላይ ብቻ የተሳተፈ ነው። ከእነዚህ አቀራረቦች ጋር ለመስራት የመተግበሪያው አመክንዮ አይለወጥም.

12. የአስተዳደር ተግባራት

መረጃን ፣ ዳታቤዝ ፣ ወዘተ ለማዘመን ፣ በኤፒአይ ውስጥ በተለየ የተፈጠረ የመጨረሻ ነጥብ ይጠቀሙ ፣ አፈፃፀም በተከታታይ 2 ጊዜ ወደ ሁሉም ነገር ሊባዛ ወደሚችል እውነታ ይመራል። ግን ሞኞች አይደላችሁም, 2 ጊዜ አይጫኑም, እና ስደት አያስፈልገንም.

ሁሉም የአስተዳደር ተግባራት ልክ እንደ ሁሉም ኮድ በተመሳሳይ አካባቢ መከናወን አለባቸው፣ በተለቀቀው ደረጃ። ማለትም የውሂብ ጎታውን መዋቅር መለወጥ ካስፈለገን የአምዶችን ስም በመቀየር እና አዲስ በማከል በአንዳንድ የእይታ የውሂብ ጎታ አስተዳደር መሳሪያዎች አማካኝነት በእጅ አናደርገውም. ለእንደዚህ ዓይነቶቹ ነገሮች ፣የተለያዩ ስክሪፕቶችን እንፈጥራለን - ፍልሰት በሁሉም ቦታ እና በሁሉም አካባቢዎች በተመሳሳይ የተለመደ እና ለመረዳት የሚቻል ውጤት። እንደ ፕሮጀክት በመረጃ መሙላት ላሉ ሌሎች ሥራዎች ሁሉ ተመሳሳይ ዘዴዎች መተግበር አለባቸው።

የትግበራ ምሳሌ በ PHP፣ Laravel፣ Laradock፣ Docker-Compose

PS ሁሉም ምሳሌዎች በ MacOS ላይ ተደርገዋል። አብዛኛዎቹ ለሊኑክስም ይሰራሉ። ይቅርታ፣ የዊንዶውስ ተጠቃሚዎች፣ ግን ከዊንዶው ጋር ለረጅም ጊዜ አልሰራሁም።

በእኛ ፒሲ ላይ ምንም አይነት የ PHP ስሪት የሌለን እና ምንም ነገር የሌለንበትን ሁኔታ አስቡት።
የቅርብ ጊዜውን የዶክተር እና የዶክተር አዘጋጅ ስሪቶችን ይጫኑ። (ይህ በመስመር ላይ ሊገኝ ይችላል)

docker -v && 
docker-compose -v

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

1. አስቀመጥን ላራዶክ

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

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

ላራዶክን በተመለከተ, ይህ በጣም ቀዝቃዛ ነገር ነው እላለሁ, በውስጡ ብዙ መያዣዎች እና ረዳት ነገሮች ይሰበሰባሉ. ነገር ግን ላራዶክ በምርት ውስጥ ያለ ማሻሻያዎችን ለመጠቀም - በድጋሜው ምክንያት አልመክረውም። በላራዶክ ውስጥ ባሉ ምሳሌዎች ላይ በመመርኮዝ የእቃ መያዣዎችዎን መፍጠር የተሻለ ነው, ስለዚህ ብዙ ማመቻቸት ይኖራል, ምክንያቱም ማንም እዚያ ያለውን ነገር ሁሉ በአንድ ጊዜ አያስፈልገውም.

2. ላራዶክን ለመተግበሪያችን እንዲሰራ ማዋቀር።

cd laradock && 
cp env-example .env

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

2.1. በማንኛውም አርታኢ ውስጥ የhabr ማውጫን (ላራዶክ የተከለለበትን የወላጅ አቃፊ) ይክፈቱ። (በእኔ PHPStorm ጉዳይ)

በዚህ ደረጃ, የፕሮጀክቱን ስም ብቻ እናስቀምጣለን.

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

2.2. የስራ ቦታን ምስል እናስጀምራለን. (በእርስዎ ሁኔታ, ምስሎቹ ለተወሰነ ጊዜ ይገነባሉ)
የስራ ቦታ ገንቢውን በመወከል ከማዕቀፉ ጋር አብሮ ለመስራት ልዩ የተዘጋጀ ምስል ነው።

ወደ መያዣው ውስጥ ይግቡ

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

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

2.3. ላራቬል በመጫን ላይ

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

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

2.4. ከተጫነ በኋላ ከፕሮጀክቱ ጋር ያለው ማውጫ መፈጠሩን እናረጋግጣለን እና ገድለን አዘጋጅ።

ls
exit
docker-compose down

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

2.5. ወደ PHPStorm ተመልሰን በ.env ፋይል ውስጥ ወደ ላራቬል መተግበሪያችን ትክክለኛውን መንገድ እናዘጋጃለን።

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

3. ሁሉንም ኮድ ወደ Git ያክሉ።

ይህንን ለማድረግ በ Github (ወይንም ሌላ ቦታ) ​​ላይ ማከማቻ እንፈጥራለን። ወደ ተርሚናል ወደ ሃብር ማውጫ እንሂድና የሚከተለውን ኮድ እንፈጽም።

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 እና docker ምሳሌዎች

ለመመቻቸት ለጂት አንድ ዓይነት የእይታ በይነገጽ እንዲጠቀሙ እመክራለሁ ፣ በእኔ ሁኔታ ይህ ነው። GitKraken. (ማጣቀሻ እዚህ)

4. አስጀምር!

ከመጀመርዎ በፊት በፖርት 80 እና 443 ላይ ምንም የተንጠለጠለ ነገር እንደሌለዎት ያረጋግጡ።

docker-compose up -d nginx php-fpm

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

ስለዚህ የእኛ ፕሮጀክት 3 የተለያዩ አገልግሎቶችን ያቀፈ ነው-

  • nginx - የድር አገልጋይ
  • php-fpm - ከድር አገልጋይ ጥያቄዎችን ለመቀበል php
  • የስራ ቦታ - php ለገንቢ

በአሁኑ ጊዜ ከ 4 12 ነጥቦች ጋር የሚዛመድ አፕሊኬሽን ፈጥረናል ማለትም፡-

1. ኮድ ቤዝ - ሁሉም ኮድ በአንድ ማከማቻ ውስጥ ነው (ትንሽ ማስታወሻ: ወደ ላራቬል ፕሮጀክት ውስጥ ዶከር ማምጣት ትክክል ሊሆን ይችላል, ነገር ግን ይህ አስፈላጊ አይደለም).

2. ጥገኛዎች - ሁሉም የእኛ ጥገኛዎች በመተግበሪያ/አቀናባሪ.json እና በእያንዳንዱ የኮንቴይነር ዶከርፋይል ውስጥ በግልፅ ተጽፈዋል።

3. የሶስተኛ ወገን አገልግሎቶች (የመጠባበቂያ አገልግሎቶች) - እያንዳንዱ አግልግሎት (php-fom, nignx, workspace) የራሱን ህይወት ይኖራል እና ከውጭ የተገናኘ እና ከአንዱ አገልግሎት ጋር ሲሰራ ሌላኛው አይጎዳውም.

4. ሂደቶች እያንዳንዱ አገልግሎት አንድ ሂደት ነው. እያንዳንዱ አገልግሎት ውስጣዊ ሁኔታን አያከማችም.

5. ወደብ ማሰር

docker ps

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

እንደምናየው, እያንዳንዱ አገልግሎት በራሱ ወደብ እየሰራ እና ለሌሎች አገልግሎቶች ሁሉ ይገኛል.

6. ትይዩነት

Docker በመካከላቸው አውቶማቲክ ጭነት ማመጣጠን ያላቸው ተመሳሳይ አገልግሎቶችን በርካታ ሂደቶችን እንድንፈጥር ያስችለናል።

ኮንቴይነሮችን ያቁሙ እና በባንዲራ ይጀምሩ --መጠን

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

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

እንደምናየው, የ php-fpm መያዣ ቅጂዎች አሉት. ከዚህ መያዣ ጋር ለመስራት ምንም ነገር መለወጥ አያስፈልገንም. እኛ ደግሞ ወደብ 9000 ላይ ማግኘት እንቀጥላለን, እና Docker ለእኛ በመያዣዎች መካከል ያለውን ጭነት ይቆጣጠራል.

7. ማሰናከል - እያንዳንዱ መያዣ ሌላውን ሳይጎዳ ሊገደል ይችላል. መያዣውን ማቆም ወይም እንደገና ማስጀመር በቀጣዮቹ ማስጀመሪያዎች ላይ የመተግበሪያውን አሠራር አይጎዳውም. እያንዳንዱ መያዣ በማንኛውም ጊዜ ሊነሳ ይችላል.

8. የመተግበሪያ ልማት/ኦፕሬሽን ጥምርታ ሁሉም አካባቢያችን አንድ ነው። ስርዓቱን በምርት ውስጥ በአገልጋዩ ላይ በማሄድ በትእዛዞችዎ ውስጥ ምንም ነገር መለወጥ የለብዎትም። ሁሉም ነገር በተመሳሳይ መንገድ በ Docker ላይ የተመሰረተ ይሆናል.

9. መግባት - በእነዚህ ኮንቴይነሮች ውስጥ ያሉት ሁሉም ምዝግብ ማስታወሻዎች ወደ ዥረቱ ይሂዱ እና በ Docker ኮንሶል ውስጥ ይታያሉ። (በዚህ ጉዳይ ላይ, በእውነቱ, ከሌሎች የቤት እቃዎች ጋር, ካልተንከባከቡት ላይሆን ይችላል)

 docker-compose logs -f

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

ነገር ግን በPHP እና Nginx ውስጥ ያሉት ነባሪ እሴቶች እንዲሁ ምዝግብ ማስታወሻዎችን ወደ ፋይል መፃፍ መቻላቸው ነው። 12 ምክንያቶችን ለማሟላት, ያስፈልግዎታል አቦዝን በእያንዳንዱ ኮንቴይነር ውቅሮች ውስጥ ምዝግብ ማስታወሻዎችን ወደ ፋይል መፃፍ።

ዶከር ምዝግብ ማስታወሻዎችን ለመዝጋት ብቻ ሳይሆን ከላይ ለጠቀስኳቸው እንደ ግራጫ ላሉ ነገሮችም የመላክ ችሎታን ይሰጣል። እና በግሬይሎግ ውስጥ እንደፈለግን በምዝግብ ማስታወሻዎች እንሰራለን እና መተግበሪያችን በምንም መልኩ አያስተውለውም።

10. የአስተዳደር ተግባራት - ሁሉም የአስተዳደር ስራዎች የ12 ፋክተር አፕሊኬሽን ፈጣሪዎች እንደሚፈልጉ ለአርቲስቱ መሳሪያ ምስጋና ይግባውና በላራቬል ተፈተዋል።

እንደ ምሳሌ, አንዳንድ ትዕዛዞች እንዴት እንደሚፈጸሙ አሳያለሁ.
ወደ መያዣው ውስጥ እንገባለን.

 
docker-compose exec workspace bash
php artisan list

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

አሁን ማንኛውንም ትዕዛዝ መጠቀም እንችላለን. (እባክዎ የውሂብ ጎታውን እና መሸጎጫውን አላዘጋጀንም, ስለዚህ ግማሹ ትዕዛዞች በትክክል አይፈጸሙም, ምክንያቱም ከመሸጎጫ እና የውሂብ ጎታ ጋር ለመስራት የተነደፉ ናቸው).

የመተግበሪያ ልማት እና ሰማያዊ-አረንጓዴ ማሰማራት በአስራ ሁለት-ፋክተር መተግበሪያ ዘዴ በphp እና docker ምሳሌዎች

11. ውቅረቶች እና 12. ይገንቡ ፣ ይልቀቁ ፣ ያሂዱ

ይህንን ክፍል ለሰማያዊ-አረንጓዴ ማሰማራት መወሰን ፈልጌ ነበር, ነገር ግን ለዚህ ጽሑፍ በጣም ዝርዝር ሆኖ ተገኝቷል. ስለዚህ ጉዳይ የተለየ ጽሑፍ እጽፋለሁ.

በአጭሩ ፣ ጽንሰ-ሀሳቡ በሲአይ / ሲዲ ስርዓቶች ላይ የተመሠረተ ነው። ጄንከንዝ и Gitlab CI. በሁለቱም ውስጥ, ከአንድ የተወሰነ አካባቢ ጋር የተያያዙ የአካባቢ ተለዋዋጮችን ማዘጋጀት ይችላሉ. በዚህ መሠረት፣ በዚህ ሁኔታ፣ ንጥል ሐ ውቅረቶች.

እና ስለ ነጥቡ ይገንቡ ፣ ይልቀቁ ፣ ያሂዱ በተጠሩት በሁለቱም መገልገያዎች ውስጥ አብሮ በተሰራው ተግባራት ተፈትቷል ቧንቧው.

ቧንቧው የመሰብሰብ, የመልቀቂያ እና የአፈፃፀም ደረጃዎችን በማጉላት የማሰማራት ሂደቱን ወደ ብዙ ደረጃዎች ለመከፋፈል ያስችልዎታል. እንዲሁም በፔፕፐሊንሊን ውስጥ, ምትኬዎችን መፍጠር ይችላሉ, እና በእርግጥ ማንኛውንም ነገር. ይህ መሳሪያ ገደብ የለሽ አቅም አለው.

የማመልከቻው ኮድ በርቷል። የፊልሙ.
ይህንን ማከማቻ በሚዘጉበት ጊዜ ንዑስ ሞጁሉን ማስጀመርዎን አይርሱ።

PS: እነዚህ ሁሉ አቀራረቦች ከማንኛውም ሌሎች መገልገያዎች እና የፕሮግራም ቋንቋዎች ጋር መጠቀም ይችላሉ። ዋናው ነገር ዋናው ነገር አይለያይም.

ምንጭ: hab.com

አስተያየት ያክሉ