9.1 Mikroservis arxitekturası
Docker müasir proqram təminatının hazırlanması və istismarının ayrılmaz bir hissəsinə çevrilib. O, tətbiqləri izolyasiya olunmuş konteynerlərdə yaratmağa, yerləşdirməyə və çalışdırmağa imkan verir ki, bu da daşınma, konsistensiya və səmərə gətirir. Bu mühazirədə Docker istifadə etməyin bir neçə real ssenarisini nəzərdən keçirəcəyik, hansı ki, istifadə ciddi üstünlük verir.
Problem
Monolit tətbiqlərin hazırlanması səhvən istismara yararsız, həm də miqyaslanmayan hala gətirə bilər. Tətbiqin bir hissəsinin dəyişməsi digər hissələrə təsir edə bilər ki, bu da yeni versiyaların yerləşdirilməsi və test edilməsini çətinləşdirir.
Docker ilə həll
Docker mikroservis arxitekturasını yaratmağa imkan verir, burada hər mikroservis tətbiqi öz konteynerində yerləşdirilir. Bu yanaşma mikroservisların bir-birindən izolyasiyasını və müstəqilliyini təmin edir.
Nümunə
Təsəvvür edin, sizdə aşağıdaki mikroservislerden ibarət bir tətbiq var: istifadəçilər, sifarişlər və ödəniş. Siz hər biri uyğun mikroservisi ehtiva edən üç Docker-imici yarada bilərsiniz:
docker run -d --name users-service users-image
docker run -d --name orders-service orders-image
docker run -d --name payment-service payment-image
9.2 Davamlı inteqrasiya və çatdırılma (CI/CD)
Problem
İnkişaf, test və yerləşdirmə prosesləri çox vaxt əhəmiyyətli səylər və vaxt tələb edir, xüsusilə də inkişaf və test mühitləri production-dan fərqli olduqda.
Docker ilə həll
Docker bütün inkişaf mərhələlərində mühitdə ardıcıllıq təmin edir. Docker-dən istifadə edərək, tətbiqinizin inkişafdan testə və production-a qədər bütün mühitlərdə eyni işləyəcəyinə zəmanət verə bilərsiniz.
Nümunə
Docker istifadə edərək CI/CD pipeline qura bilərsiniz, burada hər mərhələ (build, test, yerləşdirmə) konteyner daxilində icra olunur:
Image-in yığılması:
docker build -t my-app .
Testlərin işə salınması:
docker run my-app ./run-tests.sh
Yerləşdirmə:
docker push my-app:latest
ssh user@production-server "docker pull my-app:latest && docker run -d my-app"
9.3 Portativlik və konsistentlik
Problem
Proqramçılar tez-tez belə problemlərlə üzləşirlər ki, tətbiq onların kompüterində işləyir, amma serverdə və ya başqa bir mühitdə işləmir. Bu, quraşdırılmış asılılıqlar, kitabxana versiyaları və əməliyyat sistemlərindəki fərqlərə görə baş verə bilər.
Docker ilə həll
Docker izolyasiya olunmuş konteynerlər yaradır, bu konteynerlər tətbiqin işləməsi üçün lazım olan bütün asılılıqları və ayarları özündə cəmləşdirir. Bu da hər hansı bir mühitdə tətbiqin eyni şəkildə işləyəcəyinə zəmanət verir.
Nümunə
Tətbiqinizin bütün asılılıqları və qurulma addımlarını təsvir edən bir Dockerfile yarada bilərsiniz:
FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]
İndi, bu imici harada işə salsanız da (yerli kompüterdə, serverdə və ya buludda), tətbiqiniz eyni şəkildə işləyəcək.
9.4 Təhlükəsizlik təminatı
Problem
Tərtibatçılar çox vaxt tətbiqləri yerləşdirdikdə təhlükəsizlik problemləri ilə qarşılaşır, xüsusilə də tətbiq bir çox üçüncü tərəf kitabxanalara və alətlərə bağlı olduqda.
Docker ilə həll
Docker konteynerlərin izoliyasını təmin edir, bu da təhlükəsizlik risklərini minimuma endirir. Konteynerlər izolyasiya olunmuş mühitlərdə işləyir, bu da onları hücumlara qarşı az həssas edir.
Nümunə
Konteynerlərə əlçatan olan resursları məhdudlaşdıra və təhlükəsizlik siyasətləri təyin edə bilərsiniz:
docker run -d --name secure-app --memory="512m" --cpus="1" --security-opt=no-new-privileges my-
secure-app
9.5 Test etmə və avtomatlaşdırma
Problem
Tətbiqlərin müxtəlif konfiqurasiyalarda və mühitlərdə test edilməsi mürəkkəb və vaxt aparan bir proses ola bilər.
Docker ilə həll
Docker izolyasiyalı test mühitlərinin asanlıqla yaradılmasını və idarə edilməsini təmin edir. Fərqli konfiqurasiyalarda testlər apara bilərsiniz, əsas inkişaf mühitinə təsir etmədən.
Nümunə
Docker-dən izolyasiyalı test mühitləri yaratmaq üçün istifadə edə bilərsiniz:
docker run -d --name test-db -e POSTGRES_PASSWORD=mysecretpassword postgres
docker run -d --name test-app --link test-db:db my-app
9.6 Cloud hesablama və miqyaslama
Problem
Tətbiqlərin cloud mühitlərdə miqyaslanması mürəkkəb və baha başa gələn proses ola bilər, xüsusilə də tətbiq çoxlu resurslar və mürəkkəb konfiqurasiya tələb edirsə.
Docker ilə həll
Docker cloud mühitlərdə tətbiqləri asanlıqla miqyaslamağa imkan verir. Siz AWS, Google Cloud, Azure və digər cloud platformalarında konteynerlər yarada və idarə edə bilərsiniz, resursların istifadəsində çeviklik və səmərəlilik təmin edir.
Nümunə
Docker və Kubernetes istifadə edərək, tətbiqlərinizi asanlıqla miqyaslaya bilərsiniz:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:latest
ports:
- containerPort: 80
GO TO FULL VERSION