Microsoftun son günlərdə Azure haqqında daha çox danışmağa başladığının şahidi oluruq. Hətda Microsoft bəzi sertifikat imtahanlarını (MCSA, MCSE və MCSD) 30 İyun 2020 tarixindən etibarən dayandıracağını və son günlərdə Azure üçün daha çox diqqət ayırdığını görürük. Təbiki bu inkişaf IKT (İnformasiya Kommunikasiya Texnologiyaları) sektorunda başa düşülən və anlaşılan bir haldır. Məhz buna görədə Azure haqqında az məlumatı olanlar üçün bu məqaləni yazmağa qərar verdim.
İlk əvvəl bu məqalədə Microsoftun hansı məhsul və platformalarından danışacağıma baxaq. Bunlardan biri təbiki hərkəsə məlum olan və son zamanlarda adının bir çox yerdə keçdiyinin şahidi olduğumuz Microsoft Azure -dur. Digəri daha yeni texnalogiya olan ve IKT mühəndislərinin arasında son dövrlərdə daha çox populyarlıq qazanan Azure DevOps haqqında olacaqdır.
Microsoft Azure nədir?
Microsoft Azure -un nə olduğu haqqında danışmazdan əvvəl bulut sistemləri haqqında qısa məlumat vermək istəyirəm. Nədir bulut sistemləri? Əminəmki hər kəs son zamanlarda Cloud, Cloud Computing və.s kimi terminləri mütləq şəkildə eşitmişdir. Gəlin birlikdə baxaq nədir bu bulut sistemləri. Bulut sistemlərini asan və anlaşılan şəkildə belə deyə bilərik ki, İKT sistemlərinin (server, storage, database sistemləri, şəbəkə sistemləri, program təminatı və hətda son günlər daha çox populyar olan suni zəka sistemləri (AI) və.s) internet (“bulut”) üzərindən təmin edilməsi ilə daha sürətli innovasiya, çevik qaynaqlar və geniş iqtisadi miqyas effekti təqdim edən bir sistemdir. Adətən yalnız istifadə etdiyiniz bulud xidmətləri üçün pul ödədiyiniz üçün əməliyyat xərclərinizi azaltmaq, infrastrukturunuzu daha səmərəli şəkildə idarə bilərsiniz.
Yuxarıda gördüyümüz şəkil bir server otağındakı fiziki serverlərdir. Təsəvvür edəkki bu serverlər böyük bir şirkətin IKT infrastrukturunu təşkil edir. Və bu infrastrukturu Mail serverlər, SQL məlumat bazaları, Storage sistemləri, Web Serverlər və.s təşkil edir. Buraya qədər hər şey çox gözəl görünsədə əslində bu böyük infrastrukturda bir problem var desəm tam yerində olar mənim fikrimcə. Bu problemi kiçik bir sual və cavab ilə aydınlaşdırmağa çalışaq.
Sual: 7 il əvvəlki telefonunuz nə modeli idi və kamerası neçə megapixel idi? Və hal-hazırda istifadə etdiyiniz telefon nə modeldi və kamerası neçə megapixeldir bəs?
Cavab: 7 il əvvəlki telefonunuz təbiki köhnə bir model idi və kamerası ortalama 2 megapixel idi. Hazırki telefonunuz isə daha yeni modeldir və kamerasi ən az 22 megapixeldir.
Ağlınızda sual yarana bilərki bunu nə üçün misal çəkdim. İndi ağlınızda iki telefonu canlandırın, və hər ikisinidə yan-yana qoyun. Hər ikisinində çəkdiyi şəkilləri qarşılaşdırın. İndi infrastruktur demək olarki eynidir. Lakin çəkilən şəkilin həcmi və keyfiyyəti sizcədə dəfələrlə böyümədimi? Əlbətdəki böyüdü. İndi biz texnologiyanın bu qədər sürətlə inkişaf etdiyi zamanda bu vəziyyət qarşısında, daxildəki bir quruluşa sahib olmaq və böyüyən məlumatları uyğun və düzgün şəkildə idarə etmək üçün daha güclü sistemlər qurmalıyıq. Daha güclü sistemlərdə onların texniki dəstəyinin artması, idarə edilməsinin dahada mürəkkəbləşməsi, maliyyə xərclərinin artması və.s kimi problemləri özündə gətirir. Məhz bu anda bulut sistemləri anlayışı işə düşür. Yəni belə demək olarki büdcənizin imkan verdiyi qədər və ehtiyacınız olan qədər infrastrukturu icarəyə götürə biləcəyiniz sistemlər bulut sistemləri adlanır.
Bundan əlavə isə bulut sistemlərində xidmət modelləri anlayışı vardır. Bəs bu modellər hansı modellərdir?
SaaS (Software as a Service) — Bu model istifadəçinin ehtiyac duyduğu CRM, ERP, maliyyə və mühasibat proqramları, fayl saxlama deposu və.s kimi proqramları bulud üzərindən təmin edir.
Fərqli fiziki ərazilərdə yerləşən şirkətlər üçün SaaS əlavə proqram xərcləri yaratmayaraq ciddi maliyyə üstünlükləri yaradır. SaaS üçün misal göstərməli olsaq Onedrive və Office 365 ən gözəl örnək olardı.
PaaS (Platform as a Service) — Bu model bütün proqram və servislərin şirkət tərəfindən idarə olunduğu lakin bütün digər alt təbəqələrin cloud provider tərəfindən idarə edildiyi modeldir. Bu modelə Azure AD (Active directory) və Cosmos DB-ni misal göstərə blərik.
IaaS (Infrastructure as a Service) — Bu modeldə cloud provider şirkətə virtual serverləri (VM), network infrastrukturunu, storage və.s sistemlərin idarəsini verir. Bu modeldə şirkət bütün IT infrastrukturunu qurub idarə edə bilər. Və nəticədə bu model ilə şirkət çevik bir cloud infrastrukturuna sahib olur. Misal üçün deyə bilərikki, turizm şirkətlərinin sezon zamanı tələbin çoxalmasından asılı olaraq server qaynaqlarına ehtiyacı artır və nəticədə bulud xidmətlərindən istifadə etməklə serverlərini artırırlar, sezon bitdikdən sonra isə serverlərini bir qədər azaldaraq, nəticədə çox ciddi maliyyə üstünlükləri əldə edirlər.
Artıq bulud sistemləri haqqında məlumata sahib olduğumuz üçün, nəhayət əsas mövzumuza qayıda bilərik. Microsoft Azure bulud sistemlərinin populyarlaşdığı ilk günlərdən mövcuddur. Bəli, Microsoft Azure Microsoft şirkətinin bizə təqdim etdiyi bulut sistemidir. Azure adını istifadə edən ilk şirkət məhz Microsoft-dur. Buna görədə kimsə heç bir məzmun vermədən bir kəlimə ilə “Azure” deyəndə, insanların böyük əksəriyyətinin ağlına gələn ilk şey Microsoftun bizə təqdim etdiyi bulut sistemidir. Tam adı Microsoft Azure Cloud Computing Platform & Services.
Microsoft Azure -in 100-dən çox servisi vardır. Bu servislər gün keçdikcə artmaqdadır. Və servislərin əlçatanlığı Azure regionlara görə dəyişir. Azure -in datacenterləri halhazırda dünyanın 58 regionunda və 140 ölkəsində vardır. Və bu heç sözsüz dəyişib və artmaqdadır. Bu məlumata Azure -in rəsmi səhifəsində baxa bilərsiniz.
Azure -in halhazırda populyar olan bir-neçə servisinə nəzər yetirək.
- App Services — IIS və.s idarə etmədən, web tətbiqlərini deploy etmək üçün istifadə olunan servisdir.
- Virtual Machines — Hardware -ə ehtiyac duymadan bir virtual machine (VM) yaratmaq üçün istifadə olunan servisdir.
- Cosmos DB — Microsoft -un dünya miqyasında paylaşdırdığı, çox modelli məlumat bazası xidmətidir.
- Azure Kubernetes — Azure Kubernetes Servisi (AKS) Azure -da idarə oluna bilən Kubernetes cluster -nı deploy etməyi asanlaşdırır. AKS bu məsuliyyətin çox hissəsini Azure üzərinə yükləməklə Kubernetes-in idarə edilməsinin mürəkkəbliyini və əməliyyat xərclərini azaldır.
- Container Registry— Fərdi Docker image -lərini saxlamaq üçün istifadə olunur.
- Azure AD — Bu servis on-premise -dəki Active Directory servisini bulud üzərində heç bir virtual serverə qaldırmadan birbaşa Azure üzərində istifadə etmək üçündür.
- Function App — Bu servis vasitəsilə yazdığımız kodları heç bir virtual machine və ya web tətbiq yaratmadan işlədə bilərik. Bu vəziyyət “serverless” olaraq adlandırılır. Serverless deyəndə, proqramın işləməsi üçün serverlərin lazım olmadığını düşünməməliyik. Serverless adlandırılmasının səbəbi, infrastrukturla əlaqəli əməliyyatların arxa planda servis (Azure Function App) tərəfindən həyata keçirilməsidir.
Nəzərinizə çatdırmaq istəyirəmki yuxarıda adlarını çəkdiyim servislər Azure -in servislərinin çox az bir hissəsini əhatə edir. Azure -in aktual olan servislərinə nəzər yetirmək üçün bu linkə baxa bilərsiniz.
Beləki Microsoft Azure -in nə olduğunu və nə üçün istifadə edildiyini yazmağa çalışdım. İndi isə məqalənin ikinci hissəsi olan Azure DevOps haqqında yazmaq istəyirəm.
Azure DevOps nədir?
Azure DevOps -da göründüyü kimi həm Azure həmdə DevOps sözləri vardır. Məqaləmin birinci hissəsində Azure haqqında geniş məlumat verdim. Bəs ayrılıqda DevOps özü nədir?
DevOps, şirkətlərin proqram təminatlarını inkişaf etdirmə və infrastruktur idarəetmə proseslərini istifadə edənlərə nisbətən daha sürətli inkişaf etdirməsinə imkan yaradan metodların və müəyyən vasitələrin (tools) birləşməsidir. Bu model (DevOps) şirkətlərin müştərilərinə daha əlverişli imkanlar təqdim etməsinə və bazarda daha effektiv şəkildə rəqabət etməsinə imkan yaradır. Bir DevOps modelində artıq Development və Operations komandaları ayrı şəkildə işləmirlər. Və DevOps modelində bu iki komanda tək bir komanda halında işləyir. Komandadakı mühəndislər proqramın development və test mərhələsindən deployment və təhvil verilməsinə qədər olan bütün vaxt ərzində bir yerdə işləyirlər. Məhz DevOps adıda elə buradan gəlir.
Bu komandalar əvvəllər manual şəkildə edilən və uzun zaman alan prosesləri avtomatlaşdıran tədbiqlərdən istifadə edirlər. Yazılan proqramları tez və etibarlı şəkildə işlətməyə və inkişaf etdirməyə kömək edən texnologiyalar və vasitələrdən istifadə edirlər. Bu vasitələr ayrıca komandaların sürətini daha da artırır, mühəndislərə müstəqil olaraq digər komandaların köməyini tələb edən tapşırıqları asan və sərbəst şəkildə özlərinin yerinə yetirməsinə kömək edir.
Artıq DevOps -unda nə olduğu haqqında təsəvvür yarandığına görə, məncə Azure DevOps Azure -un bizə təqdim etdiyi DevOps xidmətləridir deyə bilərəm. Bu xidmətlər yuxarıda təsvir etdiyim DevOps tətbiqlərindən istifadə etməyə imkan yaradır. Azure DevOps -un bizə təqdim etdiyi xidmətləri həm bulud infrastrukturunda həmdə on-premise -də istifadə edə bilərik. Və ən önəmlisidə bunun üçün fərqli lisenziyalar almağımıza ehtiyac olmur.
Azure DevOps -un sahib olduğu bir neçə əsas servislərdən yazmaq istərəm:
Azure Boards: Azure Boards, layihələrinizin işini idarə etmək üçün istifadə edilən bir xidmətdir. Komandalarınızın rahat işləməsi üçün çevik və böyüyən vasitələrə ehtiyacı olur. Məhz Azure Boards tamda bunu edir. Scrum və Kanban üçün yerli dəstək, özəlləşdiriləbilən lövhələri və inteqrasiya olunmuş hesabat sistemləri kimi zəngin xüsusiyyətlərə sahibdir.
Bu xidmətin əvəzedicisi kimi Jira, Trello GitHub Issues, GitLab Issue Board və.s misal göstərmək olar.
Azure Pipelines: Azure Pipeline, layihənizi avtomatik olaraq yaratmaq, test etmək və istifadə edilə biləcək hala gətirmək üçün yararlı bir bulud xidmətidir. Demək olar ki, bütün proqramlama dilləri ilə işləyir. Azure Pipeline Continuous Integration (CI) və Continuous Delivery (CD) dəstəkləyir. Öz program arxitekturanıza görə aşağıdakılar kimi addımları müəyyənləşdirə və avtomatlaşdıra bilərsiniz:
- Kodu, source kontrol sistemindən çəkmək
- Paketləri əlaqəli repository-lərdən bərpa etmək (NuGet, Npm, Maven və s.)
- Build yaratmaq
- Unit / Integration testləri
- Release hazırlamaq
- Bu paketi Test / QA / Prodaction mühitlərinə deploy etmək
Bu xidmətin əvəzedicisi kimi Jenkins, Travis CI, GitLab CI/CD və.s misal göstərmək olar.
Azure Repos: Azure Repos, kodlarımızı saxlaya biləcəyimiz Source Control sistemidir. Buraya Pull Requests, Code Review, Branch Policies, Pull Request Policies kimi bir çox fərqli mexanizm daxildir. Azure Repos hazırda yalnız Git və Team Foundation Version Control (TFVC) sistemlərini dəstəkləyir.
Bu xidmətin əvəzedicisi kimi GitHub, GitLab, Bitbucket və.s misal göstərmək olar.
Azure Artifacts: Azure Artifacts, Azure DevOps-da NuGet, npm və Maven paketlərini yaratmağı və paylaşmağı təmin edən bir paket idarəetmə xidmətdir.
Azure Testplans: Azure TestPlans, Yazılan proqramları uğurla test etmək üçün lazım olan bütün vasitələri təqdim edir. Manual olaraq test planlarını yaradıb və işə salmaq, avtomatlaşdırılmış testlər yaratmaq və istifadəçilərdən rəy toplamaq mümkündür.
Beləliklə çox uzun davam edən məqaləmin sonuna gəldim. Çalışdımki sizlərdə Microsoft Azure və Azure Devops haqqında ilkin məlumat yaradımki artıq gələcək məqalələrdə daha geniş şəkildə məlumat və eyni zamanda praktiki yazılar yaza bilim.