హలో! మేము "హోస్టింగ్ టెక్నాలజీస్" మరియు 5 సంవత్సరాల క్రితం ప్రారంభించాము
ISPsystem నుండి సాఫ్ట్వేర్ కూల్ సర్వీస్కి వెళ్లే మార్గంలో మన చేతులను కట్టే తాడుగా మారింది. మూడు సంవత్సరాల క్రితం, మేము Billmanager బిల్లింగ్ మరియు VMmanager సర్వర్ నియంత్రణ ప్యానెల్ని ఉపయోగించాము మరియు మా స్వంత నియంత్రణ ప్యానెల్ లేకుండా మంచి సేవను అందించడం దాదాపు అసాధ్యం అని త్వరగా గ్రహించాము.
ISP సిస్టమ్ సౌలభ్యాన్ని ఎలా చంపింది
బగ్స్
బగ్ను మనమే సరిదిద్దుకోలేకపోయాము - ప్రతిసారీ మేము మరొకరి మద్దతు కోసం వ్రాసి వేచి ఉండవలసి ఉంటుంది. ఏదైనా సమస్య పరిష్కారానికి థర్డ్-పార్టీ కంపెనీ ప్రతిస్పందన అవసరం.
ISPsystem మద్దతు సాధారణంగా ప్రతిస్పందిస్తుంది, అయితే కొన్ని విడుదలల తర్వాత మాత్రమే పరిష్కారాలు వచ్చాయి, ఆపై ఎల్లప్పుడూ కాదు మరియు అన్నీ కాదు. కొన్నిసార్లు క్లిష్టమైన దోషాలు చాలా వారాల పాటు సరిదిద్దబడ్డాయి. మేము కస్టమర్లకు భరోసా ఇవ్వాలి, క్షమాపణలు చెప్పాలి మరియు బగ్ను పరిష్కరించే ISPసిస్టమ్ కోసం వేచి ఉండాలి.
డౌన్టైమ్ థ్రెట్
అప్డేట్లు కొత్త లోపాలను రేకెత్తించే అనూహ్య సమయాలను సృష్టించగలవు.
ప్రతి అప్డేట్ లాటరీ: నేను బిల్లింగ్ను కవర్ చేసి, అప్డేట్ల దేవుళ్లకు త్యాగం చేయాల్సి వచ్చింది - రెండు సార్లు అప్డేట్ చేయడం వల్ల 10-15 నిమిషాల పాటు పనికిరాని సమయం వచ్చింది. ఈ సమయంలో మా అడ్మిన్లు వారి దృష్టిలో కూర్చున్నారు - పనికిరాని సమయం ఎంతకాలం ఉంటుందో మాకు ఎప్పటికీ తెలియదు మరియు ISPసిస్టమ్ ఎప్పుడు కొత్త అప్డేట్ను విడుదల చేస్తుందో అంచనా వేయలేకపోయాము.
ఐదవ తరంలో, Billmanager మెరుగైంది, కానీ అవసరమైన లక్షణాలకు ప్రాప్యత పొందడానికి, నేను బీటాను ఇన్స్టాల్ చేయాల్సి వచ్చింది, ఇది ఇప్పటికే ప్రతి వారం నవీకరించబడింది. ఏదైనా విరిగిపోయినట్లయితే, నేను ఇతర డెవలపర్లకు యాక్సెస్ ఇవ్వవలసి ఉంటుంది, తద్వారా వారు ఏదైనా పరిష్కరించగలరు.
అసౌకర్య ప్యానెల్ ఇంటర్ఫేస్
ప్రతిదీ వేర్వేరు ప్యానెల్లుగా విభజించబడింది మరియు వివిధ ప్రదేశాల నుండి నియంత్రించబడింది. ఉదాహరణకు, క్లయింట్లు Billmanager ద్వారా చెల్లించారు మరియు వారు VMManagerలో VDSని రీబూట్ చేయాలి లేదా మళ్లీ ఇన్స్టాల్ చేయాలి. క్లయింట్కి సహాయం చేయడానికి, అతని సర్వర్లో లోడ్ని తనిఖీ చేయడానికి లేదా అతను ఏ OSని ఉపయోగిస్తున్నాడో చూడటానికి మా సిబ్బంది విండోల మధ్య మారవలసి ఉంటుంది.
అటువంటి ఇంటర్ఫేస్కు సమయం పడుతుంది - మాది మరియు మా క్లయింట్లు రెండూ. అటువంటి పరిస్థితిలో డిజిటల్ ఓషన్ వంటి సౌలభ్యం గురించి ప్రశ్నే లేదు.
తరచుగా API అప్డేట్లతో చిన్న జీవితచక్రాలు
మేము మా స్వంత ప్లగిన్లను వ్రాసాము - ఉదాహరణకు, VMManagerలో లేని అదనపు చెల్లింపు పద్ధతులతో కూడిన ప్లగ్ఇన్.
ఇటీవలి సంవత్సరాలలో, VMManager సాపేక్షంగా తక్కువ జీవిత చక్రాన్ని కలిగి ఉంది మరియు కొత్త సంస్కరణల్లో, APIలోని వేరియబుల్స్ లేదా ఫంక్షన్ల పేర్లు ఏకపక్షంగా మారవచ్చు - ఇది మా ప్లగిన్లను విచ్ఛిన్నం చేసింది. పాత సంస్కరణలకు మద్దతు త్వరగా తొలగించబడింది మరియు నవీకరించబడాలి.
సవరించడం సాధ్యం కాదు
మరింత ఖచ్చితంగా, ఇది సాధ్యమే, కానీ చాలా అసమర్థమైనది. లైసెన్స్ పరిమితులు సోర్స్ కోడ్లో మార్పులు చేయడానికి మిమ్మల్ని అనుమతించవు, మీరు ప్లగిన్లను మాత్రమే వ్రాయగలరు. గరిష్ట ప్లగిన్లు - కొన్ని మెను అంశాలు, దశల వారీ విజార్డ్. ISPసిస్టమ్ బహుముఖ ప్రజ్ఞ కోసం రూపొందించబడింది, కానీ మాకు ప్రత్యేక పరిష్కారాలు అవసరం.
కాబట్టి నా స్వంత ప్యానెల్ రాయాలనే నిర్ణయం పక్వానికి వచ్చింది. మేము లక్ష్యాలను నిర్దేశించుకున్నాము:
- లోపాలు, బగ్లకు త్వరగా ప్రతిస్పందించండి మరియు క్లయింట్ వేచి ఉండకుండా వాటిని మీరే పరిష్కరించుకోగలరు.
- వర్క్ఫ్లోలు మరియు క్లయింట్ అవసరాల కోసం ఇంటర్ఫేస్ను ఉచితంగా సవరించండి.
- శుభ్రమైన మరియు అర్థమయ్యే డిజైన్తో వినియోగాన్ని పెంచండి.
మరియు మేము అభివృద్ధిని ప్రారంభించాము.
కొత్త ప్యానెల్ ఆర్కిటెక్చర్
మాకు స్వయం సమృద్ధి గల అభివృద్ధి బృందం ఉంది, కాబట్టి మేము ప్యానెల్ను స్వయంగా వ్రాసాము.
ప్రధాన పనిని ముగ్గురు ఇంజనీర్లు చేశారు - టెక్నికల్ డైరెక్టర్ సెర్గీ ఆర్కిటెక్చర్తో ముందుకు వచ్చి సర్వర్ ఏజెంట్ను వ్రాశాడు, అలెక్సీ బిల్లింగ్ చేసాడు మరియు ఫ్రంట్ ఎండ్ మా ఫ్రంట్ ఎండర్ ఆర్టిష్ చేత అసెంబుల్ చేయబడింది.
దశ 1: సర్వర్ ఏజెంట్
సర్వర్ ఏజెంట్ అనేది లైబ్రరీని నిర్వహించే పైథాన్ వెబ్ సర్వర్
ఏజెంట్ సర్వర్లో అన్ని సేవలను నిర్వహిస్తుంది: libvirt లైబ్రరీ ద్వారా సృష్టించడం, ఆపడం, vds తొలగించడం, ఆపరేటింగ్ సిస్టమ్లను ఇన్స్టాల్ చేయడం, పారామితులను మార్చడం మరియు మొదలైనవి. కథనాన్ని ప్రచురించే సమయంలో, ఇవి నలభై కంటే ఎక్కువ విభిన్న విధులు, వీటిని మేము పని మరియు క్లయింట్ యొక్క అవసరాలను బట్టి అనుబంధిస్తాము.
సిద్ధాంతపరంగా, libvirt నేరుగా బిల్లింగ్ నుండి నియంత్రించబడుతుంది, కానీ దీనికి చాలా అదనపు కోడ్ అవసరం మరియు మేము ఈ ఫంక్షన్లను ఏజెంట్ మరియు బిల్లింగ్ మధ్య వేరు చేయాలని నిర్ణయించుకున్నాము - బిల్లింగ్ కేవలం JSON API ద్వారా ఏజెంట్కి అభ్యర్థనలను చేస్తుంది.
ఏజెంట్ అనేది మేము చేసిన మొదటి పని, దీనికి ఎటువంటి ఇంటర్ఫేస్ అవసరం లేదు మరియు సర్వర్ కన్సోల్ నుండి నేరుగా పరీక్షించడం సాధ్యమవుతుంది.
సర్వర్ ఏజెంట్ మాకు ఏమి ఇచ్చారు: ప్రతి ఒక్కరికీ జీవితాన్ని సులభతరం చేసే పొర కనిపించింది - బిల్లింగ్కు మొత్తం కమాండ్లను పంపాల్సిన అవసరం లేదు, కానీ అభ్యర్థన మాత్రమే చేయండి. మరియు ఏజెంట్ అవసరమైన ప్రతిదాన్ని చేస్తాడు: ఉదాహరణకు, ఇది డిస్క్ స్థలం మరియు RAM ని కేటాయిస్తుంది.
దశ 2. బిల్లింగ్
మా డెవలపర్ అలెక్స్ కోసం, ఇది మొదటి నియంత్రణ ప్యానెల్ కాదు - అలెక్స్ చాలా కాలంగా హోస్టింగ్లో ఉన్నాడు, కాబట్టి అతను సాధారణంగా క్లయింట్కు ఏమి అవసరమో మరియు హోస్టర్కు ఏమి అవసరమో అర్థం చేసుకున్నాడు.
మేము బిల్లింగ్ను మనలో ఒక "నియంత్రణ ప్యానెల్" అని పిలుస్తాము: ఇది డబ్బు మరియు సేవలను మాత్రమే కాకుండా, వాటి నిర్వహణ, కస్టమర్ మద్దతు మరియు మరిన్నింటిని కలిగి ఉంటుంది.
ISPSystem సాఫ్ట్వేర్ నుండి మారడానికి, కస్టమర్ల కోసం మునుపటి కార్యాచరణను పూర్తిగా సంరక్షించడం, పాత బిల్లింగ్ నుండి కొత్తదానికి వినియోగదారుల యొక్క అన్ని ఆర్థిక చర్యలను బదిలీ చేయడం, అలాగే వాటి మధ్య ఉన్న అన్ని సేవలు మరియు కనెక్షన్లు అవసరం. మేము ప్రస్తుత ఉత్పత్తిలో ఉన్న వాటిని అధ్యయనం చేసాము, అప్పుడు పోటీదారుల పరిష్కారాలు, ప్రధానంగా DO మరియు Vultr. మేము నష్టాలు మరియు ప్రయోజనాలను పరిశీలించాము, ISPsystem నుండి పాత ఉత్పత్తులతో పనిచేసిన వ్యక్తుల నుండి అభిప్రాయాన్ని సేకరించాము.
కొత్త బిల్లింగ్ రెండు స్టాక్లను ఉపయోగించింది: క్లాసిక్ PHP, MySQL (మరియు భవిష్యత్తులో ఇది PostgreSQLకి మారాలని ప్రణాళిక చేయబడింది), Yii2 బ్యాకెండ్లో ఫ్రేమ్వర్క్గా మరియు ముందు భాగంలో VueJS. స్టాక్లు ఒకదానికొకటి స్వతంత్రంగా పని చేస్తాయి, విభిన్న వ్యక్తులచే అభివృద్ధి చేయబడతాయి మరియు JSON APIని ఉపయోగించి కమ్యూనికేట్ చేస్తాయి. అభివృద్ధి కోసం అప్పుడు మరియు ఇప్పుడు మేము ఉపయోగిస్తున్నాము
ప్యానెల్ మాడ్యులర్ ప్రాతిపదికన రూపొందించబడింది: చెల్లింపు సిస్టమ్ మాడ్యూల్స్, డొమైన్ రిజిస్ట్రార్ మాడ్యూల్ లేదా, ఉదాహరణకు, ఒక SSL సర్టిఫికేట్ మాడ్యూల్. మీరు సులభంగా కొత్త ఫీచర్ని జోడించవచ్చు లేదా పాతదాన్ని తీసివేయవచ్చు. "హార్డ్వేర్ వైపు" వ్యతిరేక దిశలో సహా నిర్మాణపరంగా విస్తరణకు పునాది వేయబడింది.
మనం ఏమి పొందాము: మనకు పూర్తి నియంత్రణ ఉన్న నియంత్రణ ప్యానెల్. ఇప్పుడు బగ్లు వారాలలో కాకుండా గంటలలో పరిష్కరించబడతాయి మరియు కొత్త ఫీచర్లు కస్టమర్ల అభ్యర్థన మేరకు అమలు చేయబడతాయి మరియు ISPS సిస్టమ్ అభ్యర్థన మేరకు కాదు.
దశ 3 ఇంటర్ఫేస్
ఇంటర్ఫేస్ మా బృందం ఆలోచన.
ముందుగా, ఇంటర్ఫేస్లో ప్రాథమికంగా దేనినీ మార్చకుండా ISPsystem APIపై యాడ్-ఆన్ చేస్తే ఏమి జరుగుతుందో మేము చూశాము. ఇది అలా మారింది మరియు మేము మొదటి నుండి ప్రతిదీ చేయాలని నిర్ణయించుకున్నాము.
క్లీన్ మరియు మినిమలిస్టిక్ డిజైన్తో ఇంటర్ఫేస్ను తార్కికంగా మార్చడం ప్రధాన విషయం అని మేము నమ్ముతున్నాము, ఆపై మేము అందమైన ప్యానెల్ను పొందుతాము. మూలకాల యొక్క స్థానం మెగాప్లాన్లో చర్చించబడింది మరియు వినియోగదారులు ఇప్పుడు నియంత్రణ ప్యానెల్లో చూసే ఇంటర్ఫేస్ క్రమంగా పుడుతుంది.
మేము ఇప్పటికే ISPsystem కోసం చెల్లింపు ప్లగిన్లను రూపొందించాము కాబట్టి, బిల్లింగ్ పేజీ రూపకల్పన మొదట కనిపించింది.
ఫ్రంటెండ్
వారు ప్యానెల్ను SPA అప్లికేషన్గా మార్చాలని నిర్ణయించుకున్నారు - వనరుల పరంగా మరియు వేగవంతమైన డేటా లోడింగ్తో డిమాండ్ లేదు. మా ఫ్రంటండర్ ఆర్తీష్ దీన్ని విూలో రాయాలని నిర్ణయించుకున్నాడు - ఆ సమయంలో విూ ఇప్పుడే కనిపించింది. ఫ్రేమ్వర్క్ రియాక్ట్ లాగా డైనమిక్గా అభివృద్ధి చెందుతుందని మరియు కొంత సమయం తరువాత Vue సంఘం పెరుగుతుందని మరియు లైబ్రరీల సముద్రం కనిపిస్తుంది అని మేము ఊహించాము. మేము Vueని ఎంచుకున్నాము మరియు చింతించలేదు - ఇప్పుడు బ్యాకెండ్లో ఇప్పటికే ప్రోగ్రామ్ చేయబడిన కొత్త ఫంక్షన్లను ఫ్రంట్కి జోడించడానికి తక్కువ సమయం పడుతుంది. ఫ్రంట్-ఎండ్ ప్యానెల్స్ గురించి ప్రత్యేక కథనంలో మేము మీకు మరింత తెలియజేస్తాము.
ఫ్రంటెండ్ని బ్యాకెండ్కి కనెక్ట్ చేస్తోంది
ఫ్రంటెండ్ పుష్ నోటిఫికేషన్ల ద్వారా బ్యాకెండ్కి కనెక్ట్ చేయబడింది. నేను చాలా కష్టపడి నా స్వంత హ్యాండ్లర్ని వ్రాయవలసి వచ్చింది, కానీ ఇప్పుడు పేజీలోని సమాచారం దాదాపు తక్షణమే నవీకరించబడింది.
ఏం జరిగింది: ప్యానెల్ ఇంటర్ఫేస్ సరళంగా మారింది. మేము దీన్ని అనుకూలీకరించాము మరియు వేగవంతమైన లోడ్ చేయడం వలన ప్యానెల్తో పని చేయడానికి ప్రత్యేక అప్లికేషన్ను ఇన్స్టాల్ చేయకుండా, టేకాఫ్కి ముందు చివరి నిమిషాల్లో మొబైల్ ఫోన్ల నుండి కూడా దీన్ని ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది.
దశ 4. టెస్టింగ్ మరియు మైగ్రేషన్ పథకం
ప్రతిదీ ప్రారంభించినప్పుడు మరియు మొదటి పరీక్షలు ఉత్తీర్ణత సాధించినప్పుడు, వలసల ప్రశ్న తలెత్తింది. అన్నింటిలో మొదటిది, మేము బిల్లింగ్ని ఇన్స్టాల్ చేసాము మరియు సర్వర్ ఏజెంట్తో దాని ఆపరేషన్ని పరీక్షించడం ప్రారంభించాము.
అప్పుడు మేము పాత బిల్లింగ్ నుండి కొత్తదానికి డేటాబేస్ను బదిలీ చేసే సాధారణ స్క్రిప్ట్ను వ్రాసాము.
Billmanager, VMmanager మరియు మేనేజర్ యొక్క IPmanager అనే మూడు పాత వాటి నుండి డేటా ఒక కొత్త డేటాబేస్లో విలీనం చేయబడినందున నేను అక్షరాలా ప్రతిదీ పరీక్షించి, మళ్లీ తనిఖీ చేయాల్సి వచ్చింది. కొత్త ప్యానెల్ను అభివృద్ధి చేసే ప్రక్రియలో మేము ఎదుర్కొన్న అత్యంత క్లిష్టమైన విషయం బహుశా పరీక్ష వలసలు.
మళ్లీ తనిఖీ చేసిన తర్వాత, మేము పాత బిల్లింగ్ను మూసివేసాము. చివరి డేటా మైగ్రేషన్ చాలా ఇబ్బందికరమైన క్షణం, కానీ, దేవునికి ధన్యవాదాలు, ఇది కొన్ని నిమిషాల్లో మరియు గుర్తించదగిన సమస్యలు లేకుండా పూర్తయింది. వారంలో మేము పరిష్కరించిన చిన్న బగ్లు ఉన్నాయి. ఎక్కువ సమయం ఏమి జరిగిందో పరీక్షించడానికి గడిపారు.
అప్పుడు మేము కొత్త ప్యానెల్ మరియు బిల్లింగ్ చిరునామాతో క్లయింట్లకు లేఖలు పంపాము మరియు దారి మళ్లించాము.
చివరికి: అది సజీవంగానే ఉంది!
శుభాంతం
మా సాఫ్ట్వేర్ పని చేసిన మొదటి గంటల నుండి, మేము పరివర్తన యొక్క అన్ని ఆనందాలను అనుభవించాము. కోడ్ పూర్తిగా మాది మరియు అనుకూలమైన ఆర్కిటెక్చర్తో ఉంది మరియు ఇంటర్ఫేస్ శుభ్రంగా మరియు తార్కికంగా ఉంది.
కొత్త ప్యానెల్ ప్రారంభించిన తర్వాత మొదటి సమీక్ష
కస్టమర్లకు బదిలీని సులభతరం చేయడానికి లోడ్ తక్కువగా ఉన్న 2017 నూతన సంవత్సరం సందర్భంగా మేము డిసెంబర్లో పరివర్తన ప్రక్రియను ప్రారంభించాము - సెలవుల సందర్భంగా దాదాపు ఎవరూ పని చేయరు.
మా సిస్టమ్కు మారినప్పుడు (సాధారణ విశ్వసనీయత మరియు సౌలభ్యం కాకుండా) మనకు లభించే ప్రధాన విషయం ఏమిటంటే, కీలకమైన కస్టమర్ల కోసం త్వరగా కార్యాచరణను జోడించగల సామర్థ్యం - వారి ముఖంగా, వారి గాడిద కాదు.
తరువాత ఏమిటి?
మేము పెరుగుతున్నాము, డేటా మొత్తం, కస్టమర్లు, కస్టమర్ డేటా పెరుగుతోంది. నేను ఒక Memcached సర్వర్ మరియు విభిన్న టాస్క్లతో ఇద్దరు క్యూ మేనేజర్లను బ్యాకెండ్కి జోడించాల్సి వచ్చింది. ఫ్రంటెండ్లో కాషింగ్ మరియు దాని స్వంత క్యూలు ఉన్నాయి.
వాస్తవానికి, ఉత్పత్తి అభివృద్ధి చెందడం మరియు మరింత సంక్లిష్టంగా మారడంతో మేము ఇంకా సాహసాలను కలిగి ఉన్నాము, ఉదాహరణకు మేము హైలోడ్ని జోడించినప్పుడు.
తదుపరి ఆర్టికల్లో, హాయ్-సిపియు టారిఫ్ ఎలా ప్రారంభించబడిందో మేము మీకు చెప్తాము: హార్డ్వేర్, సాఫ్ట్వేర్, మేము ఏ పనులను పరిష్కరించాము మరియు మేము ఏమి చేసాము.
మూలం: www.habr.com