20 април, 2024

През декември 2022 Немечек България реализираха първите две издания на Dev Bites – поредица събития от ИТ специалисти за ИТ специалисти. Над 120 гости от водещи софтуерни компании посетиха Dev Bites в София и Варна, като имаха възможност да чуят специални презентации, да се включат в последвалата дискусия, да вдигат наздравици и да поговорят с хора от общността. Тема на първите събития беше Microservices vs. The World, представена от Виктор Минковски (Technical и Team Lead в екип Brainix) и Мирослав Кошутански (R&D и DevOps Team Lead в екип Bluebeam).

Представяме акценти от презентациите на Виктор и Миро, а ако Dev Bites концепцията ви звучи интересно, имаме добри новини! Първото събитие за 2023 ще се проведе в Пловдив, в Networking Premium (ул. Райко Даскалов 19-21) на 30 март от 19:00!


За микросървисната архитектура с любов

от Виктор Минковски

Има ли истинско противопоставяне Microservices vs. The World? По-скоро не. Защото микросървисите са част от света и важна част от заобикалящата ни среда. Те са и естествено продължение на основната цел на всеки софтуер – да помага на хората. Когато е използвана правилно, микросървисната архитектура е изключително удобна и полезна.

Изследвания показват, че възможностите за скалиране са най-често срещаната причина една компания да премине изцяло към микросървисна архитектура. Удобното, хоризонтално и вертикално скалиране на определени части от системата води до много добра оптимизация на ресурси, особено когато става дума за Cloud. Скалирането дава възможност и за изолиране на грешки, като така предпазваме работещите части на системата от онези, при които има проблем.

Друго тяхно предимство можем да обединим под понятието Agility. Микросървисите дават възможност за бързи и лесни ъпдейти на изолирани части от системата, върху която работим, а това е от особено голямо значение в съвременния бизнес свят, когато е нужно максимално да се скъсява TTM (Time To Market). Благодарение на тях можем да пускаме изолирани части от системата, да правим маркетингови проучвания и AB тестове, да експериментираме. Или пък лесно да подготвяме различни версии на системата за различни клиенти.

Изобщо, микросървисната архитектура оптимизира работата на всеки специалист поотделно, но и на софтуерния екип като цяло. Благодарение на нея можем да разработваме един продукт в малки екипи с ясни отговорности. Да работим паралелно с различни технологии, като всеки екип използва онази, която е най-подходяща за неговата конкретна цел. Ето и още едно от най-важните предимства на микросървисите – когато сме съсредоточени върху малки части, можем да поддържаме чист код с високо качество.

И все пак, защо точно микросървиси?Защото можем. В последните години технологиите много се развиха. И така, благодарение на микросървисите и на DevOps, всичко става лесно. И още по-важно – всичко работи. Но и защото са готини. Микросървисите ни дават прекрасната възможност да сме яки, да сме в час с новите технологии, да ги учим бързо.


За сблъсъка на микросървисите с реалността

от Мирослав Кошутански

Ще започна с няколко важни професионални съвета, авторството на които не е мое. Кое е първото правило за микросървисите според гуруто в нашата индустрия Мартин Фаулър? „Винаги започвайте с монолита!„. А кое първото правило за Domain-Driven Design, според Ерик Еванс? „Опознайте домейна“. А какъв е най-добрият начин за това? Монолитната архитектура. Забелязвате ли нещо общо?

Споделям всичко това, защото бих искал да разбуля мита, че микросървисите са панацея и отговор на всички въпроси. Реалността е съвсем различна и тя ни показва, че има достатъчно случаи, в които привидните предимства на микросървисната архитектура всъщност са недостатъци.

Например, идеята за малки, фокусирани екипи звучи добре. Това обаче означава, че когато 20-30 такива екипа работят върху една и съща платформа, те трябва да се координират. А това е доста, доста трудно и със сигурност не е „бърза и лесна работа“. Същото се отнася и до микса от технологии при подобен тип работа. Златното правило е, дори при микросървисите, да се ползват не повече от 2-3 различни езика, тъй като иначе при споделяне на ресурси синхронизацията е просто кошмарна.

И нещата не стават по-прости! Ако трябва да разберем архитектурата на един микросървис, това не е проблем, защото е малък. Но когато става дума за цялата платформа, където много микросървиси си комуникират с хореография, а не с оркестрация, задачата става ненужно сложна. Ако пък сте решили да започнете работа с Kubernetes – не забравяйте с колко сложно начинание се захващате! Това е добър, изключително мощен инструмент, но използването на пълния му потенциал е всичко друго, но не и „лесно“.

И това не е всичко – проблемите продължават с изолирането на грешки, изолирането на данни, големия брой фреймуърки; distributed logging, tracing, monitoring; броя на микросървиси, за които отговаря всеки екип, дебъгване, repository management… И така стигаме до логичния въпрос: Какво можем да изберем вместо микросървиси?

Можем, например, да се придържаме към монолитната архитектура. Тя все още е нещо добро, все още съществува. Или пък да изберем предшественика на микросървисите – макросървисите. Ако са добре направени, те работят чудесно. Или пък да пробваме хибриден модел от монолит + микросървиси/макросървиси. В крайна сметка, проектът и изискванията трябва да са определящи за този избор. Ако клиентът ни не работи за Google, Microsoft, Netflix, Spotify или Amazon, то тогава отговорът е не, микросървисите не са задължителни.


Професионалистите в Немечек България използват широк набор от технологии (C++, C#, Java, Go, Python, PHP, JS, TypeScript, React.JS, Angular, Vue.js, Microsoft Azure, AWS, Native Аndroid and iOS applications) и разчитат на различни подходи към различните проекти. Прочетете повече на careers.nemetschek.bg

Тагове: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Editor @ DevStyleR