1. Koda dəyişikliklər edirik
Daha əvvəl dediyim kimi, proqram təminatının inkişafı kiçik dəyişikliklərin kodda edilməsi ilə bağlıdır. Bu proseslə milyonlarla proqramçı on illərdir məşğuldur və nəticədə onun dəqiq test olunması, standartlaşdırılması və bütün mümkün yollarla formalizə olunması baş verib.
Kodun saxlanması üçün xüsusi proqram var – Git. Git – bu paylanmış versiya idarəetmə sistemidir. O sadəcə kodu saxlamaqla kifayətlənmir, bütün dəyişiklikləri izləyir və proqramçılara layihələr üzərində birlikdə işləməyə kömək edir, bir-birinin işinə mane olmadan 🤝.
Git ilə proqramçılar layihənin müxtəlif versiyalarını (branch-lər) yarada bilər, tam dəyişiklik tarixçəsini saxlaya və hətta keçmişdə istənilən nöqtəyə qayıda bilərlər. Bu, kod üçün zaman maşını kimidir! Git dəyişiklikləri birləşdirməyə və konfliktləri həll etməyə kömək edir, ona görə də müasir komandada əsas alətə çevrilib. 👩💻
2. Layihəni build edirik
Layihəni test etməzdən və ya serverə yükləmədən əvvəl onu build etmək lazımdır.
🏗️ Layihələrin build olunması – bu, layihənin source kodunun icra olunan proqramlara və ya digər işlədilə bilən formata çevrilməsi prosesidir, tez-tez test və deployment ilə birlikdə olur. Bu, proqram təminatının inkişafında əsas mərhələdir və proqramın istifadəyə hazır olmasını təmin edir.
Build sadəcə compilation deyil, baxmayaraq ki, compilation çox vaxt build prosesinin bir hissəsidir. Build tamamlandıqda, sizdə onlarla, hətta yüzlərlə fayl ola bilər ki, onları müxtəlif serverlərə yükləmək lazımdır.
Build alətləri aşağıdakılar ola bilər:
- ☕ Maven və Gradle – Java layihələrində asılılıqları idarə etmək və build üçün geniş istifadə olunan alətlərdir.
- 🐜 Apache Ant – Java layihələri üçün başqa bir build aləti, skript yazmaqda çox elastik imkanlar verir.
- 🖥️ MSBuild – Microsoft Visual Studio ilə yaradılan layihələrin build-i üçün istifadə olunur.
- ⚙️ Make – klassik build aləti, Makefile ilə build qaydalarını müəyyən edir, xüsusən C və C++ layihələrində çox populyardır.
- 🌐 Webpack – JavaScript tətbiqlərinin build-i üçün çox istifadə olunur, asılılıqları və modulları idarə edir.
- 📜 Gulp və Grunt – veb tətbiqlərdə tez-tez edilən tapşırıqları avtomatlaşdırmağa kömək edən alətlər, məsələn, faylların minifikasiya olunması və SCSS-dən CSS-ə çevrilməsi.
Həmçinin, daha yüksək səviyyəli build alətləri də mövcuddur. Onlar haqqında aşağıda danışacağıq.
3. CI/CD
🔄 CI/CD (Continuous Integration/Continuous Delivery) – bu, dəyişikliklərin bütün branch-lərdən əsas branch-ə fasiləsiz birləşdirilməsi, avtomatik test və deployment ilə həyata keçirilən metodologiyadır. Bu, səhvləri tez tapıb düzəltməyə və inkişafın effektivliyini artırmağa kömək edir.
Ən məşhur, amma bir az köhnə olan CI/CD sistemi – Jenkins-dir. Əgər kiçik şirkətdə işləyirsinizsə, ehtimal ki, onu istifadə edirlər.
🤖 Jenkins – məşhur avtomatlaşdırılmış sistem, davamlı inteqrasiya və delivery üçün istifadə olunur (CI/CD). Jenkins proqram təminatının build, test və deployment mərhələlərini avtomatlaşdırmağa imkan verir, bu da kod keyfiyyətini yaxşılaşdırır və inkişaf prosesini sürətləndirir.
Əgər böyük şirkətə düşsəniz, orada başqa 5 variant da ola bilər:
- 🚦 TeamCity – JetBrains-in güclü kommersiya sistemi. Fərqli inkişaf və test mühitləri ilə dərindən inteqrasiya edir.
- 📝 GitLab CI – GitLab-ın daxili hissəsi, YAML faylları ilə konfiqurasiya edilən davamlı inteqrasiya və delivery təmin edir.
- ☁️ CircleCI – bulud əsaslı CI/CD xidməti, test və deployment avtomatlaşdırmasını dəstəkləyir.
- 🦑 Travis CI – ilk bulud CI xidmətlərindən biri, çox sayda açıq mənbə layihələrində istifadə olunur. GitHub ilə yaxşı inteqrasiya edir.
- 🎍 Bamboo – Atlassian-in məhsulu, Jira və Bitbucket kimi digər alətlərlə sıx inteqrasiya olunur.
Onların hamısını bilmək və onlarla işləmək lazım deyil – adətən şirkətdə DevOps mütəxəssisləri bu prosesləri qurur. Siz sadəcə onların olduğunu bilməli və Jenkins, CI/CD və ya “continuous integration” haqqında danışıqda başa düşməlisiniz.
4. Layihəni serverə yerləşdirmək
Layihəni yazmaq kifayət deyil – o, sizin serverdə də olmalıdır. Ümumiyyətlə, layihənin deployment-i – bu, veb tətbiqinin serverdə yerləşdirilməsi və aktivləşdirilməsi prosesidir ki, istifadəçilər internet vasitəsilə ona daxil ola bilsinlər 🚚.
Bu proses faylların serverə köçürülməsi, server mühitinin, verilənlər bazalarının, asılılıqların qurulması və şəbəkə və təhlükəsizlik parametrlərinin tənzimlənməsini əhatə edir 😅.
Düşünürsünüzmü, kodunuz serverə düşəcək? Kimlərsə onu ora yükləyəcək? Yoxsa, SSH ilə uzaq serverə qoşulub, bir neçə fayl yükləyib, hər şeyi tənzimləyəcəksiniz? Narahat olmayın: indi artıq belə etmirlər. İndi Docker var.
🐳 Docker – konteynerlər vasitəsilə tətbiqlərin inkişafı, çatdırılması və işlədilməsi üçün platformadır. Docker tətbiqləri və onların bütün asılılıqlarını və mühitini bir yerdə paketləyir, bu da onların müxtəlif mühitlərdə eyni şəkildə işləməsini təmin edir. Bu, inkişafdan test və istehsala qədər mühitin uyğunluğunu təmin edir.
Docker layihənizi və ya layihələrinizi Docker konteynerinə yığmağa imkan verir. Bu, virtual maşinaya bənzəyir.
Hər hansı bir Docker forumunda “virtual maşina” adlandırsanız, çox tənqid olarsınız, amma Docker konteynerini virtual maşina kimi düşünə bilərsiniz. Yalnız çox daha yüngüldür.
Əsasən, Docker konteyner virtual «virtual maşın»dır. Virtual maşın tam əməliyyat sistemi, nüvəsi və virtual hardware ilə işləyir, Docker konteynerləri isə host-un nüvəsini paylaşır və daha yüngül və sürətli olur ⚡.
Deployment üçün Docker çox sadə və etibarlı edir. Layihə Docker konteynerinə yığılır və onu hər yerdə, Docker dəstəkləyən hər sistemdə asanlıqla işlətmək olur 🚢.
Bu, server mühitlərindəki fərqlərdən yaranan problemləri aradan qaldırır və tətbiqin miqyasını asanlıqla artırıb-azaltmağa imkan verir. Hamı Docker-ə keçib – çox rahat və çox sadədir.
GO TO FULL VERSION