Қымбат қате
Микросервистер - әзірлеудегі ең жоғары бағаланған нәрселердің бірі. Команда жобаны бастайды және бірден: «қызметтерге бөліп тастайық, бұл масштабталатын болады». Логикалық естіледі. Іс жүзінде бұл premature scaling, сіз әлі жоқ нәрсені масштабтайсыз. Жүктеме жоқ, команда жоқ, мәселе жоқ. Бірақ қазірдің өзінде қызметтер, олардың арасындағы өзара әрекеттестік және оны біреу қолдауы керек инфрақұрылым бар.

Менің кейсім
Менде нақты мысал болды. Интернет-дүкен үшін ұсыныс жүйесін жасау керек болды. Идея: провайдерді ауыстыру мүмкіндігі болу үшін Go тілінде жеке микросервис ретінде шығару, осылайша «икемді» болу. Қызмет сыртқы API-ге барып, деректерді сүзгіден өткізіп, тауарлардың бар-жоғын тексерді. Бұл шамамен үш апта уақыт алды.
Келесі backend нұсқасында біз мұны негізгі PHP қосымшасының ішінде жасадық. Жеке қызметсіз, артық инфрақұрылымсыз. Сол сәтте айқын болды: микросервис артық болды. Біз «микросервистер = дұрыс» деп ойладық, оның орнына: «бұл қазір мәселені шешіп жатыр ма?» деп ойлау керек еді.
Қашан ақталған
Бұл микросервистер қажет емес дегенді білдірмейді. Міне, керісінше жағдай: біз клиенттерден аудионы бөліктермен қабылдадық, I/O-ға жоғары жүктеме болды, және бұл жерде PHP объективті түрде үлгере алмады. Біз бір endpoint-ті Python (FastAPI) негізіндегі жеке сервиске шығардық. Бұл орынды болды: нақты мәселе, техникалық шектеу, нүктелік шешім.
Микросервистер нақты bottleneck, әртүрлі жүктеме түрлері, оқшаулау қажеттілігі және оны қолдайтын команда болған кезде орынды. Жүйені 10 сервиске бөлудің қажеті жоқ, көбінесе бір қосымша процестің өзі жеткілікті.

Басты сұрақ
Микросервистер икемділік береді, бірақ қымбатқа түседі: әзірлеу уақыты, орналастырудың күрделілігі, мониторинг, лог жүргізу, желілік мәселелер, деректерді синхрондау. Егер DevOps-тәжірибелер мен тәжірибе болмаса, сен инфрақұрылымға өнімге қарағанда көбірек уақыт жұмсай бастайсың.
Негізгі сұрақ әрқашан бір: бұл қазір қажет пе әлде болашақтан қорқу ма? Әзірлеушінің жетілуі күрделі жүйелер құру қабілеті емес. Бұл себепсіз күрделендірмеу қабілеті.