గత సంవత్సరం నుండి, మా కంపెనీ హ్యాకథాన్లను నిర్వహించడం ప్రారంభించింది. అటువంటి మొదటి పోటీ చాలా విజయవంతమైంది, మేము దాని గురించి వ్రాసాము
దాని అమలు కోసం సాంకేతిక స్టాక్ను ఎంచుకోవడంలో పాల్గొనేవారికి పూర్తి స్వేచ్ఛతో కాకుండా ఆసక్తికరమైన పనిని అందించారు. అప్లికేషన్ల వేగవంతమైన ప్రవాహంతో పని చేయగల, భారీ లోడ్లను తట్టుకోగలిగే కస్టమర్ స్కోరింగ్ ఫంక్షన్ల అనుకూలమైన విస్తరణ కోసం నిర్ణయాత్మక ప్లాట్ఫారమ్ను అమలు చేయడం అవసరం మరియు సిస్టమ్ కూడా సులభంగా కొలవగలిగేది.
పని అల్పమైనది కాదు మరియు అనేక విధాలుగా పరిష్కరించవచ్చు, పాల్గొనేవారి ప్రాజెక్ట్ల యొక్క తుది ప్రదర్శనల ప్రదర్శన సమయంలో మేము ఒప్పించాము. హ్యాకథాన్లో 6 మంది వ్యక్తులతో కూడిన 5 బృందాలు ఉన్నాయి, పాల్గొనే వారందరికీ మంచి ప్రాజెక్ట్లు ఉన్నాయి, కానీ మా ప్లాట్ఫారమ్ అత్యంత పోటీగా మారింది. మాకు చాలా ఆసక్తికరమైన ప్రాజెక్ట్ ఉంది, ఈ వ్యాసంలో నేను మాట్లాడాలనుకుంటున్నాను.
మా పరిష్కారం Kubernetes లోపల సర్వర్లెస్ ఆర్కిటెక్చర్ ఆధారంగా ఒక ప్లాట్ఫారమ్, ఇది ఉత్పత్తికి కొత్త ఫీచర్లను తీసుకురావడానికి పట్టే సమయాన్ని తగ్గిస్తుంది. ఇది విశ్లేషకులు తమకు అనుకూలమైన వాతావరణంలో కోడ్ను వ్రాయడానికి మరియు ఇంజనీర్లు మరియు డెవలపర్ల భాగస్వామ్యం లేకుండా ఉత్పత్తిలో అమలు చేయడానికి అనుమతిస్తుంది.
స్కోరింగ్ అంటే ఏమిటి
Tinkoff.ru, అనేక ఆధునిక కంపెనీల వలె, కస్టమర్ స్కోరింగ్ను కలిగి ఉంది. స్కోరింగ్ అనేది డేటా విశ్లేషణ యొక్క గణాంక పద్ధతుల ఆధారంగా కస్టమర్ అసెస్మెంట్ సిస్టమ్.
ఉదాహరణకు, ఒక క్లయింట్ తనకు రుణం ఇవ్వమని లేదా మాతో వ్యక్తిగత వ్యవస్థాపక ఖాతాను తెరవమని అభ్యర్థనతో మా వైపుకు తిరుగుతాడు. మేము అతనికి రుణం ఇవ్వాలని ప్లాన్ చేస్తే, మేము అతని సాల్వెన్సీని అంచనా వేయాలి మరియు ఖాతా వ్యక్తిగత వ్యవస్థాపకుడు అయితే, క్లయింట్ మోసపూరిత లావాదేవీలను నిర్వహించరని మేము నిర్ధారించుకోవాలి.
అప్లికేషన్ నుండి డేటా మరియు మా నిల్వ నుండి డేటా రెండింటినీ విశ్లేషించే గణిత నమూనాలు అటువంటి నిర్ణయాలు తీసుకోవడానికి ఆధారం. స్కోరింగ్తో పాటు, మా క్లయింట్ల కోసం కొత్త ఉత్పత్తుల కోసం వ్యక్తిగత సిఫార్సులను రూపొందించే సేవలో ఇలాంటి గణాంక పద్ధతులను కూడా ఉపయోగించవచ్చు.
అటువంటి మూల్యాంకనం యొక్క పద్ధతి వివిధ రకాల ఇన్పుట్ డేటాను ఆమోదించగలదు. మరియు ఏదో ఒక సమయంలో మేము ఇన్పుట్కు కొత్త పరామితిని జోడించవచ్చు, ఇది చారిత్రక డేటాపై విశ్లేషణ ఫలితాల ఆధారంగా, సేవను ఉపయోగించడం యొక్క మార్పిడిని పెంచుతుంది.
మేము కస్టమర్ సంబంధాల గురించి డేటా సంపదను కలిగి ఉన్నాము మరియు ఈ సమాచారం యొక్క పరిమాణం నిరంతరం పెరుగుతూ ఉంటుంది. స్కోరింగ్ పని చేయడానికి, డేటా ప్రాసెసింగ్కు నియమాలు (లేదా గణిత నమూనాలు) కూడా అవసరం, ఇది అప్లికేషన్ను ఎవరు ఆమోదించాలి, ఎవరు తిరస్కరించాలి మరియు మరికొన్ని ఉత్పత్తులను ఎవరు అందించాలి, వారి సంభావ్య ఆసక్తిని అంచనా వేయడానికి త్వరగా నిర్ణయించడానికి మిమ్మల్ని అనుమతిస్తుంది.
చేతిలో ఉన్న పని కోసం, మేము ఇప్పటికే ప్రత్యేకమైన నిర్ణయాధికార వ్యవస్థను ఉపయోగిస్తున్నాము
మార్కెట్లో చాలా రెడీమేడ్ సొల్యూషన్స్ ఉన్నాయి, స్కోరింగ్ మోడల్స్ మరియు డెసిషన్ మేకింగ్ సిస్టమ్స్ రెండూ. మేము మా కంపెనీలో ఈ సిస్టమ్లలో ఒకదాన్ని ఉపయోగిస్తాము. కానీ వ్యాపారం పెరుగుతోంది, వైవిధ్యభరితంగా ఉంటుంది, క్లయింట్ల సంఖ్య మరియు అందించే ఉత్పత్తుల సంఖ్య రెండూ పెరుగుతున్నాయి మరియు దీనితో పాటు, ఇప్పటికే ఉన్న నిర్ణయాత్మక ప్రక్రియను ఎలా మెరుగుపరచాలనే దానిపై ఆలోచనలు వెలువడుతున్నాయి. ఇప్పటికే ఉన్న సిస్టమ్తో పనిచేసే వ్యక్తులు దీన్ని ఎలా సరళంగా, మెరుగ్గా, మరింత సౌకర్యవంతంగా మార్చాలనే దానిపై చాలా ఆలోచనలు కలిగి ఉంటారు, అయితే కొన్నిసార్లు బయటి నుండి వచ్చే ఆలోచనలు ఉపయోగకరంగా ఉంటాయి. మంచి ఆలోచనలను సేకరించే లక్ష్యంతో న్యూ హ్యాకథాన్ నిర్వహించబడింది.
టాస్క్
ఫిబ్రవరి 23న హ్యాకథాన్ జరిగింది. పాల్గొనేవారికి పోరాట విధిని అందించారు: అనేక షరతులను తీర్చగల నిర్ణయాత్మక వ్యవస్థను అభివృద్ధి చేయడం.
ఇప్పటికే ఉన్న సిస్టమ్ ఎలా పనిచేస్తుందో మరియు దాని ఆపరేషన్ సమయంలో ఎలాంటి ఇబ్బందులు తలెత్తుతాయి, అలాగే అభివృద్ధి చెందిన ప్లాట్ఫారమ్ ఏ వ్యాపార లక్ష్యాలను అనుసరించాలో మాకు చెప్పబడింది. సిస్టమ్ నిబంధనలను అభివృద్ధి చేయడానికి వేగవంతమైన మార్కెట్ను కలిగి ఉండాలి, తద్వారా విశ్లేషకుల వర్కింగ్ కోడ్ వీలైనంత త్వరగా ఉత్పత్తిలోకి వస్తుంది. మరియు దరఖాస్తుల ఇన్కమింగ్ ఫ్లో కోసం, నిర్ణయం తీసుకునే సమయం కనిష్టంగా ఉండాలి. అలాగే, క్లయింట్కు ఇతర కంపెనీ ఉత్పత్తులను మేము ఆమోదించినట్లయితే మరియు క్లయింట్ నుండి సంభావ్య ఆసక్తిని కలిగి ఉంటే వాటిని కొనుగోలు చేసే అవకాశాన్ని అందించడానికి అభివృద్ధి చేయబడుతున్న సిస్టమ్ క్రాస్-సెల్ సామర్థ్యాలను కలిగి ఉండాలి.
రాత్రిపూట విడుదలకు సిద్ధంగా ఉన్న ప్రాజెక్ట్ను వ్రాయడం అసాధ్యం అని స్పష్టంగా ఉంది, అది ఖచ్చితంగా ఉత్పత్తికి వెళుతుంది మరియు మొత్తం సిస్టమ్ను కవర్ చేయడం చాలా కష్టం, కాబట్టి దానిలో కొంత భాగాన్ని అయినా అమలు చేయమని మేము కోరాము. ప్రోటోటైప్ తప్పనిసరిగా సంతృప్తి పరచడానికి అనేక అవసరాలు స్థాపించబడ్డాయి. అన్ని అవసరాలను పూర్తిగా కవర్ చేయడానికి మరియు అభివృద్ధి చేయబడుతున్న ప్లాట్ఫారమ్లోని వ్యక్తిగత విభాగాలపై వివరంగా పని చేయడానికి రెండింటినీ ప్రయత్నించడం సాధ్యమైంది.
సాంకేతికత విషయానికొస్తే, పాల్గొనే వారందరికీ ఎంపిక చేసుకునే పూర్తి స్వేచ్ఛ ఇవ్వబడింది. ఏదైనా కాన్సెప్ట్లు మరియు టెక్నాలజీలను ఉపయోగించడం సాధ్యమైంది: డేటా స్ట్రీమింగ్, మెషిన్ లెర్నింగ్, ఈవెంట్ సోర్సింగ్, బిగ్ డేటా మరియు ఇతరాలు.
మా పరిష్కారం
కొంచెం కలవరపరిచిన తర్వాత, పనిని పూర్తి చేయడానికి FaaS పరిష్కారం అనువైనదని మేము నిర్ణయించుకున్నాము.
ఈ పరిష్కారం కోసం, డెవలప్ చేయబడుతున్న నిర్ణయాత్మక వ్యవస్థ యొక్క నియమాలను అమలు చేయడానికి తగిన సర్వర్లెస్ ఫ్రేమ్వర్క్ను కనుగొనడం అవసరం. టింకాఫ్ ఇన్ఫ్రాస్ట్రక్చర్ మేనేజ్మెంట్ కోసం కుబెర్నెట్లను చురుకుగా ఉపయోగిస్తున్నందున, మేము దాని ఆధారంగా అనేక రెడీమేడ్ సొల్యూషన్లను చూశాము; దాని గురించి నేను మీకు తర్వాత చెబుతాను.
అత్యంత ప్రభావవంతమైన పరిష్కారాన్ని కనుగొనడానికి, మేము దాని వినియోగదారుల దృష్టిలో అభివృద్ధి చేయబడుతున్న ఉత్పత్తిని చూశాము. మా సిస్టమ్ యొక్క ప్రధాన వినియోగదారులు రూల్ డెవలప్మెంట్లో పాల్గొన్న విశ్లేషకులు. నియమాలు తప్పనిసరిగా సర్వర్కు అమలు చేయబడాలి లేదా, మా విషయంలో వలె, తదుపరి నిర్ణయాధికారం కోసం క్లౌడ్లో అమలు చేయబడాలి. విశ్లేషకుల దృక్కోణం నుండి, వర్క్ఫ్లో ఇలా కనిపిస్తుంది:
- విశ్లేషకుడు గిడ్డంగి నుండి డేటా ఆధారంగా స్క్రిప్ట్, రూల్ లేదా ML మోడల్ను వ్రాస్తాడు. హ్యాకథాన్లో భాగంగా, మేము Mongodbని ఉపయోగించాలని నిర్ణయించుకున్నాము, అయితే డేటా నిల్వ సిస్టమ్ ఎంపిక ఇక్కడ ముఖ్యమైనది కాదు.
- చారిత్రక డేటాపై అభివృద్ధి చేసిన నియమాలను పరీక్షించిన తర్వాత, విశ్లేషకుడు తన కోడ్ను నిర్వాహక ప్యానెల్కు అప్లోడ్ చేస్తాడు.
- సంస్కరణను నిర్ధారించడానికి, మొత్తం కోడ్ Git రిపోజిటరీలకు వెళుతుంది.
- నిర్వాహక పానెల్ ద్వారా క్లౌడ్లో కోడ్ను ప్రత్యేక ఫంక్షనల్ సర్వర్లెస్ మాడ్యూల్గా అమలు చేయడం సాధ్యమవుతుంది.
క్లయింట్ల నుండి ప్రారంభ డేటా తప్పనిసరిగా వేర్హౌస్ నుండి డేటాతో ప్రారంభ అభ్యర్థనను మెరుగుపరచడానికి రూపొందించబడిన ప్రత్యేక ఎన్రిచ్మెంట్ సేవ ద్వారా తప్పనిసరిగా పాస్ చేయాలి. ఏకీకృత డేటా నిర్మాణాన్ని నిర్వహించడానికి ఒకే రిపోజిటరీతో (నిబంధనలను అభివృద్ధి చేస్తున్నప్పుడు విశ్లేషకుడు డేటాను తీసుకుంటాడు) పని చేసే విధంగా ఈ సేవను అమలు చేయడం చాలా ముఖ్యం.
హ్యాకథాన్కు ముందే, మేము ఉపయోగించే సర్వర్లెస్ ఫ్రేమ్వర్క్ని మేము నిర్ణయించుకున్నాము. నేడు, ఈ విధానాన్ని అమలు చేయడానికి మార్కెట్లో చాలా సాంకేతికతలు ఉన్నాయి. కుబెర్నెట్స్ ఆర్కిటెక్చర్లో అత్యంత ప్రజాదరణ పొందిన పరిష్కారాలు విచ్ఛిత్తి, ఓపెన్ ఫాస్ మరియు కుబెలెస్. కూడా ఉన్నాయి
అన్ని లాభాలు మరియు నష్టాలను తూకం వేసిన తరువాత, మేము ఎంచుకున్నాము
విచ్ఛిత్తితో పనిచేయడానికి, మీరు రెండు ప్రాథమిక అంశాలను అర్థం చేసుకోవాలి: ఫంక్షన్ మరియు పర్యావరణం. ఫంక్షన్ అనేది విచ్ఛిత్తి వాతావరణం ఉన్న భాషలలో ఒకదానిలో వ్రాయబడిన కోడ్ ముక్క.
విచ్ఛిత్తి అనేక ఫైల్లుగా విభజించి, ఆర్కైవ్లో ముందే ప్యాక్ చేయబడిన విధులను కూడా చేయగలదు. కుబెర్నెట్స్ క్లస్టర్లో విచ్ఛిత్తి యొక్క ఆపరేషన్ ప్రత్యేకమైన పాడ్ల ద్వారా నిర్ధారిస్తుంది, ఇవి ఫ్రేమ్వర్క్ ద్వారా నిర్వహించబడతాయి. క్లస్టర్ పాడ్లతో పరస్పర చర్య చేయడానికి, ప్రతి ఫంక్షన్ తప్పనిసరిగా దాని స్వంత మార్గాన్ని కేటాయించాలి మరియు POST అభ్యర్థన విషయంలో మీరు GET పారామితులను పాస్ చేయవచ్చు లేదా శరీరాన్ని అభ్యర్థించవచ్చు.
ఫలితంగా, ఇంజనీర్లు మరియు డెవలపర్ల భాగస్వామ్యం లేకుండా అభివృద్ధి చెందిన రూల్ స్క్రిప్ట్లను అమలు చేయడానికి విశ్లేషకులు అనుమతించే పరిష్కారాన్ని పొందాలని మేము ప్లాన్ చేసాము. వివరించిన విధానం డెవలపర్లు విశ్లేషకుల కోడ్ను మరొక భాషలోకి తిరిగి వ్రాయవలసిన అవసరాన్ని కూడా తొలగిస్తుంది. ఉదాహరణకు, మేము ఉపయోగించే ప్రస్తుత నిర్ణయాత్మక వ్యవస్థ కోసం, మేము అత్యంత ప్రత్యేకమైన సాంకేతికతలు మరియు భాషలలో నియమాలను వ్రాయవలసి ఉంటుంది, దీని పరిధి చాలా పరిమితమైనది మరియు అన్ని డ్రాఫ్ట్ బ్యాంక్ నియమాల నుండి అప్లికేషన్ సర్వర్పై బలమైన ఆధారపడటం కూడా ఉంది. ఒకే వాతావరణంలో అమర్చబడి ఉంటాయి. ఫలితంగా, కొత్త నిబంధనలను అమలు చేయడానికి మొత్తం వ్యవస్థను విడుదల చేయడం అవసరం.
మా ప్రతిపాదిత పరిష్కారంలో, నియమాలను విడుదల చేయవలసిన అవసరం లేదు; ఒక బటన్ క్లిక్ చేయడం ద్వారా కోడ్ని సులభంగా అమలు చేయవచ్చు. అలాగే, కుబెర్నెటెస్లోని మౌలిక సదుపాయాల నిర్వహణ లోడ్ మరియు స్కేలింగ్ గురించి ఆలోచించకుండా మిమ్మల్ని అనుమతిస్తుంది; అటువంటి సమస్యలు పెట్టె వెలుపల పరిష్కరించబడతాయి. మరియు ఒకే డేటా గిడ్డంగిని ఉపయోగించడం వలన నిజ-సమయ డేటాను చారిత్రక డేటాతో పోల్చవలసిన అవసరాన్ని తొలగిస్తుంది, ఇది విశ్లేషకుడి పనిని సులభతరం చేస్తుంది.
మేము ఏమి పొందాము
మేము ఒక రెడీమేడ్ సొల్యూషన్తో హ్యాకథాన్కి వచ్చాము (మా ఫాంటసీలలో), మేము చేయాల్సిందల్లా మన ఆలోచనలన్నింటినీ కోడ్ లైన్లుగా మార్చడం.
ఏదైనా హ్యాకథాన్లో విజయానికి కీలకం తయారీ మరియు బాగా వ్రాసిన ప్రణాళిక. కాబట్టి, మా సిస్టమ్ ఆర్కిటెక్చర్ ఏ మాడ్యూళ్లను కలిగి ఉంటుంది మరియు మనం ఏ సాంకేతికతలను ఉపయోగించాలో నిర్ణయించడం మేము చేసిన మొదటి పని.
మా ప్రాజెక్ట్ యొక్క నిర్మాణం క్రింది విధంగా ఉంది:
ఈ రేఖాచిత్రం రెండు ఎంట్రీ పాయింట్లను చూపుతుంది, విశ్లేషకుడు (మా సిస్టమ్ యొక్క ప్రధాన వినియోగదారు) మరియు క్లయింట్.
పని ప్రక్రియ ఈ విధంగా నిర్మించబడింది. విశ్లేషకుడు తన మోడల్ కోసం ఒక రూల్ ఫంక్షన్ మరియు డేటా ఎన్రిచ్మెంట్ ఫంక్షన్ను అభివృద్ధి చేస్తాడు, అతని కోడ్ను Git రిపోజిటరీలో నిల్వ చేస్తాడు మరియు అడ్మినిస్ట్రేటర్ అప్లికేషన్ ద్వారా క్లౌడ్కు తన మోడల్ను అమలు చేస్తాడు. అమలు చేయబడిన ఫంక్షన్ ఎలా పిలవబడుతుందో పరిశీలిద్దాం మరియు క్లయింట్ల నుండి వచ్చే అభ్యర్థనలపై నిర్ణయాలు తీసుకోండి:
- క్లయింట్ వెబ్సైట్లో ఫారమ్ను పూరిస్తాడు మరియు అతని అభ్యర్థనను కంట్రోలర్కు పంపుతాడు. నిర్ణయం తీసుకోవాల్సిన అప్లికేషన్ సిస్టమ్ ఇన్పుట్కు వస్తుంది మరియు దాని అసలు రూపంలో డేటాబేస్లో రికార్డ్ చేయబడుతుంది.
- తరువాత, అవసరమైతే, సుసంపన్నం కోసం ముడి అభ్యర్థన పంపబడుతుంది. మీరు బాహ్య సేవల నుండి మరియు నిల్వ నుండి డేటాతో ప్రారంభ అభ్యర్థనను భర్తీ చేయవచ్చు. ఫలితంగా సుసంపన్నమైన ప్రశ్న కూడా డేటాబేస్లో నిల్వ చేయబడుతుంది.
- విశ్లేషకుడు ఫంక్షన్ ప్రారంభించబడింది, ఇది ఒక సుసంపన్నమైన ప్రశ్నను ఇన్పుట్గా తీసుకుంటుంది మరియు ఒక పరిష్కారాన్ని ఉత్పత్తి చేస్తుంది, ఇది నిల్వకు కూడా వ్రాయబడుతుంది.
JSON డాక్యుమెంట్ల రూపంలో డాక్యుమెంట్-ఆధారిత డేటా నిల్వ కారణంగా మేము MongoDBని మా సిస్టమ్లో స్టోరేజ్గా ఉపయోగించాలని నిర్ణయించుకున్నాము, ఎందుకంటే అసలైన అభ్యర్థనతో సహా ఎన్రిచ్మెంట్ సేవలు REST కంట్రోలర్ల ద్వారా మొత్తం డేటాను సమగ్రపరిచాయి.
కాబట్టి, ప్లాట్ఫారమ్ను అమలు చేయడానికి మాకు XNUMX గంటల సమయం ఉంది. మేము చాలా విజయవంతంగా పాత్రలను పంపిణీ చేసాము; మా ప్రాజెక్ట్లో ప్రతి బృంద సభ్యునికి వారి స్వంత బాధ్యత ఉంటుంది:
- విశ్లేషకుల పని కోసం ఫ్రంట్-ఎండ్ అడ్మిన్ ప్యానెల్లు, దీని ద్వారా అతను వ్రాసిన స్క్రిప్ట్ల వెర్షన్ కంట్రోల్ సిస్టమ్ నుండి నియమాలను డౌన్లోడ్ చేసుకోవచ్చు, ఇన్పుట్ డేటాను మెరుగుపరచడానికి ఎంపికలను ఎంచుకోవచ్చు మరియు ఆన్లైన్లో రూల్ స్క్రిప్ట్లను సవరించవచ్చు.
- VCSతో ఫ్రంట్ మరియు ఇంటిగ్రేషన్ కోసం REST APIతో సహా బ్యాకెండ్ అడ్మిన్.
- Google క్లౌడ్లో మౌలిక సదుపాయాలను సెటప్ చేయడం మరియు సోర్స్ డేటాను మెరుగుపరచడం కోసం ఒక సేవను అభివృద్ధి చేయడం.
- నియమాల తదుపరి విస్తరణ కోసం సర్వర్లెస్ ఫ్రేమ్వర్క్తో అడ్మిన్ అప్లికేషన్ను ఏకీకృతం చేయడానికి మాడ్యూల్.
- తుది ప్రదర్శన కోసం మొత్తం సిస్టమ్ యొక్క పనితీరును పరీక్షించడానికి మరియు ఇన్కమింగ్ అప్లికేషన్లపై (నిర్ణయాలు తీసుకున్న) విశ్లేషణల సమగ్రతను పరీక్షించడానికి నియమాల స్క్రిప్ట్లు.
క్రమంలో ప్రారంభిద్దాం.
మా ఫ్రంటెండ్ బ్యాంకింగ్ UI కిట్ని ఉపయోగించి కోణీయ 7లో వ్రాయబడింది. నిర్వాహక పానెల్ యొక్క చివరి సంస్కరణ ఇలా ఉంది:
తక్కువ సమయం ఉన్నందున, మేము కీ కార్యాచరణను మాత్రమే అమలు చేయడానికి ప్రయత్నించాము. కుబెర్నెటెస్ క్లస్టర్లో ఫంక్షన్ని అమలు చేయడానికి, ఒక ఈవెంట్ (క్లౌడ్లో నియమాన్ని అమలు చేయాల్సిన సేవ) మరియు నిర్ణయం తీసుకునే లాజిక్ను అమలు చేసే ఫంక్షన్ కోడ్ను ఎంచుకోవడం అవసరం. ఎంచుకున్న సేవ కోసం నియమం యొక్క ప్రతి అమలు కోసం, మేము ఈ ఈవెంట్ యొక్క లాగ్ను వ్రాసాము. అడ్మిన్ ప్యానెల్లో మీరు అన్ని ఈవెంట్ల లాగ్లను చూడవచ్చు.
అన్ని ఫంక్షన్ కోడ్ రిమోట్ Git రిపోజిటరీలో నిల్వ చేయబడింది, ఇది నిర్వాహక ప్యానెల్లో కూడా సెట్ చేయబడాలి. కోడ్ సంస్కరణకు, అన్ని విధులు రిపోజిటరీ యొక్క వివిధ శాఖలలో నిల్వ చేయబడతాయి. అడ్మిన్ పానెల్ వ్రాతపూర్వక స్క్రిప్ట్లకు సర్దుబాట్లు చేయగల సామర్థ్యాన్ని కూడా అందిస్తుంది, తద్వారా ఉత్పత్తికి ఫంక్షన్ని అమలు చేయడానికి ముందు, మీరు వ్రాసిన కోడ్ను తనిఖీ చేయడమే కాకుండా అవసరమైన మార్పులను కూడా చేయవచ్చు.
నియమాల ఫంక్షన్లతో పాటు, సుసంపన్నం ఫంక్షన్లను ఉపయోగించి సోర్స్ డేటాను క్రమంగా మెరుగుపరచగల సామర్థ్యాన్ని కూడా మేము అమలు చేసాము, దీని కోడ్ కూడా డేటా గిడ్డంగికి వెళ్లడం, మూడవ పక్ష సేవలకు కాల్ చేయడం మరియు ప్రాథమిక గణనలను నిర్వహించడం సాధ్యమయ్యే స్క్రిప్ట్లు. . మా పరిష్కారాన్ని ప్రదర్శించడానికి, మేము అభ్యర్థనను విడిచిపెట్టిన క్లయింట్ యొక్క రాశిచక్రాన్ని లెక్కించాము మరియు మూడవ పక్షం REST సేవను ఉపయోగించి అతని మొబైల్ ఆపరేటర్ని నిర్ణయించాము.
ప్లాట్ఫారమ్ యొక్క బ్యాకెండ్ జావాలో వ్రాయబడింది మరియు స్ప్రింగ్ బూట్ అప్లికేషన్గా అమలు చేయబడింది. మేము మొదట్లో అడ్మిన్ డేటాను నిల్వ చేయడానికి పోస్ట్గ్రెస్ని ఉపయోగించాలని ప్లాన్ చేసాము, కానీ, హ్యాకథాన్లో భాగంగా, సమయాన్ని ఆదా చేయడానికి మమ్మల్ని ఒక సాధారణ H2కి పరిమితం చేయాలని నిర్ణయించుకున్నాము. బ్యాకెండ్లో, క్వెరీ ఎన్రిచ్మెంట్ ఫంక్షన్లు మరియు రూల్ స్క్రిప్ట్లను వెర్షన్ చేయడానికి బిట్బకెట్తో ఏకీకరణ అమలు చేయబడింది. రిమోట్ Git రిపోజిటరీలతో ఏకీకరణ కోసం, మేము ఉపయోగించాము
మా ఆలోచనను అమలు చేయడానికి, మాకు తగిన మౌలిక సదుపాయాలు అవసరం. మేము మా కుబెర్నెట్స్ క్లస్టర్ను క్లౌడ్లో అమర్చాలని నిర్ణయించుకున్నాము. మా ఎంపిక Google క్లౌడ్ ప్లాట్ఫారమ్. విచ్ఛిత్తి సర్వర్లెస్ ఫ్రేమ్వర్క్ కుబెర్నెటెస్ క్లస్టర్లో ఇన్స్టాల్ చేయబడింది, దానిని మేము Gcloudలో అమలు చేసాము. ప్రారంభంలో, సోర్స్ డేటా ఎన్రిచ్మెంట్ సర్వీస్ అనేది k8s క్లస్టర్లోని పాడ్లో చుట్టబడిన ప్రత్యేక జావా అప్లికేషన్గా అమలు చేయబడింది. కానీ హ్యాకథాన్ మధ్యలో మా ప్రాజెక్ట్ యొక్క ప్రాథమిక ప్రదర్శన తర్వాత, ఇన్కమింగ్ అప్లికేషన్ల యొక్క ముడి డేటాను ఎలా మెరుగుపరుచుకోవాలో ఎంచుకునే అవకాశాన్ని అందించడానికి ఎన్రిచ్మెంట్ సేవను మరింత సరళంగా మార్చమని మేము సిఫార్సు చేసాము. మరియు సుసంపన్నత సేవను కూడా సర్వర్లెస్గా చేయడం తప్ప మాకు వేరే మార్గం లేదు.
విచ్ఛిత్తితో పని చేయడానికి, మేము విచ్ఛిత్తి CLIని ఉపయోగించాము, ఇది తప్పనిసరిగా Kubernetes CLI పైన ఇన్స్టాల్ చేయబడాలి. k8s క్లస్టర్లో ఫంక్షన్లను అమలు చేయడం చాలా సులభం; క్లస్టర్ వెలుపల యాక్సెస్ అవసరమైతే ఇన్కమింగ్ ట్రాఫిక్ను అనుమతించడానికి మీరు ఫంక్షన్కు అంతర్గత మార్గాన్ని మరియు ప్రవేశాన్ని కేటాయించాలి. ఒక ఫంక్షన్ని అమలు చేయడానికి సాధారణంగా 10 సెకన్ల కంటే ఎక్కువ సమయం పట్టదు.
ప్రాజెక్ట్ యొక్క తుది ప్రదర్శన మరియు సంగ్రహం
మా సిస్టమ్ ఎలా పని చేస్తుందో ప్రదర్శించడానికి, మేము రిమోట్ సర్వర్లో ఒక సాధారణ ఫారమ్ను ఉంచాము, ఇక్కడ మీరు బ్యాంక్ ఉత్పత్తుల్లో ఒకదాని కోసం దరఖాస్తును సమర్పించవచ్చు. అభ్యర్థించడానికి, మీరు మీ మొదటి అక్షరాలు, పుట్టిన తేదీ మరియు ఫోన్ నంబర్ను నమోదు చేయాలి.
క్లయింట్ ఫారమ్ నుండి డేటా కంట్రోలర్కు వెళ్లింది, ఇది అందుబాటులో ఉన్న అన్ని నియమాల కోసం ఏకకాలంలో అభ్యర్థనలను పంపింది, గతంలో పేర్కొన్న షరతుల ప్రకారం డేటాను మెరుగుపరచడం మరియు వాటిని సాధారణ నిల్వలో సేవ్ చేయడం. మొత్తంగా, మేము ఇన్కమింగ్ అప్లికేషన్లు మరియు 4 డేటా ఎన్రిచ్మెంట్ సేవలపై నిర్ణయాలు తీసుకునే మూడు ఫంక్షన్లను అమలు చేసాము. దరఖాస్తును సమర్పించిన తర్వాత, క్లయింట్ మా నిర్ణయాన్ని స్వీకరించారు:
తిరస్కరణ లేదా ఆమోదంతో పాటు, క్లయింట్ ఇతర ఉత్పత్తుల జాబితాను కూడా అందుకున్నాము, మేము సమాంతరంగా పంపిన అభ్యర్థనలు. ఈ విధంగా మేము మా ప్లాట్ఫారమ్లో క్రాస్-సేల్ యొక్క అవకాశాన్ని ప్రదర్శించాము.
మొత్తం 3 కల్పిత బ్యాంక్ ఉత్పత్తులు అందుబాటులో ఉన్నాయి:
- క్రెడిట్.
- బొమ్మ
- తనఖా.
ప్రదర్శన సమయంలో, మేము ప్రతి సేవ కోసం సిద్ధం చేసిన ఫంక్షన్లు మరియు ఎన్రిచ్మెంట్ స్క్రిప్ట్లను అమలు చేసాము.
ప్రతి నియమానికి దాని స్వంత ఇన్పుట్ డేటా అవసరం. కాబట్టి, తనఖాని ఆమోదించడానికి, మేము క్లయింట్ యొక్క రాశిచక్రాన్ని లెక్కించాము మరియు చంద్ర క్యాలెండర్ యొక్క తర్కంతో దీన్ని కనెక్ట్ చేసాము. ఒక బొమ్మను ఆమోదించడానికి, క్లయింట్ మెజారిటీకి చేరుకున్నారని మేము తనిఖీ చేసాము మరియు రుణం జారీ చేయడానికి, సెల్యులార్ ఆపరేటర్ని నిర్ణయించడానికి మేము బాహ్య ఓపెన్ సర్వీస్కు అభ్యర్థనను పంపాము మరియు దానిపై నిర్ణయం తీసుకోబడింది.
మేము మా ప్రదర్శనను ఆసక్తికరంగా మరియు ఇంటరాక్టివ్గా చేయడానికి ప్రయత్నించాము, హాజరైన ప్రతి ఒక్కరూ మా ఫారమ్కి వెళ్లి వారికి మా కల్పిత సేవల లభ్యతను తనిఖీ చేయవచ్చు. మరియు ప్రదర్శన చివరిలో, మేము స్వీకరించిన దరఖాస్తుల విశ్లేషణలను ప్రదర్శించాము, ఇది మా సేవను ఎంత మంది వ్యక్తులు ఉపయోగించారు, ఆమోదాల సంఖ్య మరియు తిరస్కరణలను చూపుతుంది.
ఆన్లైన్లో విశ్లేషణలను సేకరించడానికి, మేము అదనంగా ఓపెన్ సోర్స్ BI సాధనాన్ని అమలు చేసాము
ఫలితంగా, మేము నిర్ణయం తీసుకునే ప్లాట్ఫారమ్ యొక్క మంచి నమూనాను పొందాము మరియు ప్రదర్శన సమయంలో, ప్రతి శ్రోత దాని పనితీరును వ్యక్తిగతంగా తనిఖీ చేయవచ్చు. ఇతర జట్ల నుండి బలమైన పోటీ ఉన్నప్పటికీ, ఆసక్తికరమైన పరిష్కారం, పూర్తయిన నమూనా మరియు విజయవంతమైన ప్రదర్శన మమ్మల్ని గెలవడానికి అనుమతించింది. ప్రతి బృందం యొక్క ప్రాజెక్ట్పై ఆసక్తికరమైన కథనాన్ని కూడా వ్రాయవచ్చని నేను ఖచ్చితంగా అనుకుంటున్నాను.
మూలం: www.habr.com