ایمیزون ای کے ایس پر مائی ایس کیو ایل کا استعمال کرتے ہوئے اسپرنگ بوٹ ایپ کو کیسے تعینات کیا جائے۔

اگر آپ اسپرنگ بوٹ ایپ کو کلاؤڈ پر تعینات کرنے کے بارے میں سوچ رہے ہیں لیکن تمام حرکت پذیر حصوں سے تھوڑا مغلوب محسوس کر رہے ہیں، تو فکر نہ کریں۔ آپ اکیلے نہیں ہیں۔

کبرنیٹس پہلے تو مشکل لگ سکتے ہیں، لیکن Amazon Elastic Kubernetes سروس (EKS) اسے بہت زیادہ قابل رسائی بناتی ہے، خاص طور پر جب آپ کے پاس قدم بہ قدم رہنمائی موجود ہو۔

اس ٹیوٹوریل میں، ہم یہ دیکھیں گے کہ ایمیزون ای کے ایس پر مائی ایس کیو ایل ڈیٹا بیس چلانے والی اسپرنگ بوٹ ایپلیکیشن کو کیسے حاصل کیا جائے۔ ہم آپ کی ایپ کو کنٹینرائز کرنے سے لے کر اسے ایک منظم ڈیٹا بیس سے منسلک کرنے سے لے کر کلاؤڈ سے حقیقی وقت میں اس تک رسائی حاصل کرنے کے لیے رہنمائی کریں گے۔ آئیے شروع کرتے ہیں۔

انڈیکس

شرائط

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس درج ذیل ہیں:

  • AWS کا بنیادی علم (AWS کنسول تک رسائی)

  • کنٹینرائزیشن کا بنیادی علم۔

  • Kubernetes کا کام کرنے کا علم۔

  • ڈیٹا بیس کا بنیادی علم۔

  • ہیلم انسٹال ہے۔

  • Kubectl انسٹال ہوا۔

  • Eksctl انسٹال ہوا۔

  • IDE

درخواست کا جائزہ

ایپلیکیشن ایک AWS VPC کے اندر چلتی ہے جو کہ زیادہ دستیابی کے لیے دو دستیابی زونز میں تقسیم ہوتی ہے۔ صارف کی درخواستوں کو انٹرنیٹ گیٹ وے کے ذریعے عوامی سب نیٹ میں AWS ایپلیکیشن لوڈ بیلنسر تک پہنچایا جاتا ہے، جو آنے والے ٹریفک کو Ingress قوانین کے ذریعے پروسیس کرتا ہے۔

لوڈ بیلنسر درخواستوں کو ایپ سروس تک پہنچاتا ہے، جو کہ ایک پرائیویٹ سب نیٹ میں AWS Elastic Kubernetes Service (EKS) کے اندر چلنے والے متعدد ایپ پوڈز میں درخواستوں کو تقسیم کرتا ہے۔

ان پوڈز کے لیے ڈاکر کی تصاویر AWS لچکدار کنٹینر رجسٹری (ECR) سے آتی ہیں۔ ڈیٹا کو برقرار رکھنے کے لیے، ایپ پوڈز MySQL بیرونی سروس کے ذریعے Amazon RDS MySQL ڈیٹا بیس سے منسلک ہوتے ہیں، اور فالتو پن کو یقینی بنانے کے لیے ہر Availability Zone میں RDS مثال موجود ہے۔

آپ کے پبلک سب نیٹ میں NAT گیٹ وے آپ کو آپ کے نجی وسائل کو براہ راست انٹرنیٹ کے سامنے لائے بغیر آؤٹ باؤنڈ انٹرنیٹ کال کرنے کی اجازت دیتا ہے۔

ایمیزون ای کے ایس کیا ہے؟

اگر آپ نے کبھی کنٹینرز کا انتظام دستی طور پر کیا ہے، تو آپ کو پہلے ہی معلوم ہوگا کہ کنٹینرز کو چلانے کا ٹریک رکھنا، کریش ہوئے کنٹینرز کو دوبارہ شروع کرنا، اور جب ٹریفک کی بڑھتی ہوئی تعداد میں تیزی سے گڑبڑ ہو سکتی ہے تو اس کو بڑھانا۔

یہ وہ مسئلہ ہے جسے حل کرنے کے لیے Kubernetes بنایا گیا تھا۔ کنٹینرائزڈ ایپلی کیشنز کی تعیناتی، اسکیلنگ اور انتظام کو خودکار بنائیں۔ لیکن کیا آپ شروع سے اپنا Kubernetes کلسٹر ترتیب اور برقرار رکھ رہے ہیں؟ یہ بالکل مختلف چیلنج ہے۔

اسی جگہ Amazon EKS آتا ہے۔ EKS AWS کے ذریعے فراہم کردہ ایک مکمل طور پر منظم Kubernetes سروس ہے۔ اس کا مطلب ہے کہ AWS Kubernetes کنٹرول ہوائی جہاز کو ترتیب دینے، محفوظ کرنے اور اسے برقرار رکھنے کا بھاری بھرکم کام سنبھالتا ہے۔ صرف اپنی ایپلی کیشنز کو تعینات کرنے پر توجہ دیں۔

ایمیزون ای کے ایس پر مائی ایس کیو ایل کا استعمال کرتے ہوئے اسپرنگ بوٹ ایپ کو کیسے تعینات کیا جائے۔

یہ سیکشن Amazon EKS پر MySQL کا استعمال کرتے ہوئے SpringBoot ایپلیکیشن کو تعینات کرنے کے اقدامات کی وضاحت کرتا ہے۔

مرحلہ 1: ایک VPC بنائیں

VPC بنانے کے لیے، AWS IAM کنسول میں لاگ ان کریں، "VPC” تلاش کریں، اور VPC بنائیں پر کلک کریں۔

"VPC اور دیگر اختیارات:” کو منتخب کریں اور اپنے VPC کو پروجیکٹ کا نام دیں، جیسے spring-demo۔ IPv4 CIDR بلاک کو 10.4.0.0/16 پر سیٹ کریں۔ NAT گیٹ وے کنفیگریشن کے لیے، زون کو منتخب کریں، اور پھر 1 AZ میں منتخب کریں۔

NAT گیٹ وے کنفیگریشن

VPC اینڈ پوائنٹ کنفیگریشن کے لیے کوئی نہیں منتخب کریں۔ پھر VPC بنائیں پر کلک کریں اور VPC دیکھیں پر کلک کریں۔ یہ آپ کو VPC وسائل کے نقشے پر لے جائے گا۔

مرحلہ 2: اپنے نجی سب نیٹ میں ایک MySQL ڈیٹا بیس ترتیب دیں۔

سب سے پہلے، آپ کو اپنے MySQL اور EC2 مثال کی تعیناتیوں کے لیے سیکیورٹی گروپس بنانے کی ضرورت ہے۔ ایسا کرنے کے لیے، EC2 > سیکیورٹی گروپس پر جائیں۔ ان باؤنڈ قوانین کے لیے، قسم: تمام ٹریفک اور ماخذ: کہیں بھی-IPv4 کو منتخب کریں۔ پھر کلک کریں سیکیورٹی گروپ بنائیں۔

اگلا، اپنے ڈیٹا بیس کے لیے سب نیٹ گروپ بنائیں۔ ایسا کرنے کے لیے، ارورہ اور آر ڈی ایس > سب نیٹ گروپس پر جائیں اور ڈی بی سب نیٹ گروپ بنائیں پر کلک کریں۔ اگلا، اپنے DB سب نیٹ کو شامل کرنے کے لیے ترتیب دیں:

  • نام: نجی-سب نیٹ-ڈی بی

  • وضاحت: نجی-سب نیٹ-ڈی بی

  • وی پی سی:ایک VPC منتخب کریں۔

  • سب نیٹ شامل کریں۔: منتخب کریں۔ us-east-1a اور us-east-1b پرائیویٹ اور پبلک سب نیٹس کو دستیابی زون کے طور پر منتخب کریں۔

بنائیں پر کلک کریں**.**۔

اب Database پر جائیں، Create Database پر کلک کریں اور Full Configuration کو منتخب کریں۔ انجن کی قسم کے طور پر MySQL کو منتخب کریں۔

نمونہ ٹیمپلیٹ کا انتخاب کرتے وقت، مفت درجے کا انتخاب کریں۔ اگلا، اپنے DB کو صارف نام اور مضبوط پاس ورڈ فراہم کریں۔ منتخب کریں db.t3.micro مثال کے طور پر قسم۔

اپنا VPC اور اس سے وابستہ نجی سب نیٹ منتخب کریں۔ اب، اضافی کنفیگریشن سیکشن میں، "آٹومیٹک مائنر ورژن اپ گریڈ کو فعال کریں” کے آپشن کو غیر چیک کریں اور ڈیٹا بیس بنائیں پر کلک کریں۔

جب ڈیٹا بیس شروع کیا جا رہا ہے، آئیے EC2 مثال کے لیے ایک کلیدی جوڑا بنائیں جو پبلک سب نیٹ میں شروع کیا جائے گا۔ ایسا کرنے کے لیے، EC2> نیٹ ورک اور سیکیورٹی> کلیدی جوڑے پر جائیں اور کلیدی جوڑا بنائیں پر کلک کریں۔

کلیدی جوڑے کو ایک نام دیں، جیسے ece-db-key-pair۔ باقی سب کچھ اسی طرح چھوڑ دیں اور کلیدی جوڑا بنائیں پر کلک کریں۔ کلیدی جوڑی پھر خود بخود آپ کے مقامی کمپیوٹر پر ڈاؤن لوڈ ہو جائے گی۔

مرحلہ 3: پبلک سب نیٹ میں EC2 مثالیں تعینات کریں۔

اب یہ ایک EC2 مثال بنانے کا وقت ہے۔ ایسا کرنے کے لیے، EC2 > Instances پر جائیں اور لانچ انسٹینس پر کلک کریں۔ کلیدی جوڑی والے حصے میں، وہ کلیدی جوڑا منتخب کریں جو آپ نے ابھی بنایا ہے۔

پھر، نیٹ ورک سیکشن میں، وہ VPC منتخب کریں جو آپ نے پہلے اپنے پروجیکٹ کے لیے بنایا تھا۔ پبلک آئی پی کو خود بخود تفویض کرنے کے تحت، فعال کو منتخب کریں۔ پھر موجودہ سیکیورٹی گروپ کو منتخب کریں آپشن کو منتخب کریں اور آل رسائی-ایس جی سیکیورٹی گروپ کو منتخب کریں جو آپ نے پہلے بنایا تھا۔ پھر لانچ انسٹینس پر کلک کریں۔

مرحلہ 4: ڈیٹا بیس میں SSH ٹنلنگ بنائیں

اس مرحلے میں، ٹرمینل پر جائیں اور اس فولڈر پر جائیں جہاں کلیدی جوڑا ڈاؤن لوڈ کیا گیا تھا۔ ls کمانڈ چلائیں اور آپ کو وہاں کلیدی جوڑی نظر آئے گی۔

اگلا، آپ کو کلیدی جوڑی فائل کی اجازتوں کو تبدیل کرنے کی ضرورت ہے۔ ذیل میں کمانڈ استعمال کریں:

chmod 0400 ece-db-key-pair.pem 

اب ذیل میں SSH ٹنلنگ کمانڈ چلائیں:

ssh -i .pem -f -N -L :: @ -v
  • .pem: ڈاؤن لوڈ کی گئی کلیدی جوڑی فائل کا نام

  • : لیپ ٹاپ کا پورٹ (3306 MySQL کے لیے، 5432 PostgreSQL کے لیے)

  • : AWS Console > RDS > Database > Connections and Security > Endpoints میں واقع ہے۔

  • : مقامی پورٹ کی طرح (3306 MySQL کے لیے، 5432 PostgreSQL کے لیے)

  • : عام طور پر ایمیزون لینکس کے لیے ec2 صارف، اوبنٹو کے لیے اوبنٹو

  • : AWS Console > EC2 > Instances > Public IPv4 DNS میں واقع ہے۔

یہ کمانڈ آپ کے لیپ ٹاپ یا مقامی کمپیوٹر کو ریموٹ ڈیٹا بیس کے ساتھ براہ راست بات چیت کرنے کی اجازت دیتی ہے گویا ڈیٹا بیس آپ کے اپنے کمپیوٹر پر ہے۔

اس کمانڈ کو چلانے کے بعد، آپ اپنی نوٹ بک پر ڈیٹا بیس ٹول (جیسے MySQL Workbench، DBeaver، یا TablePlus) کھول سکتے ہیں اور اس سے جڑ سکتے ہیں:

  • میزبان: لوکل ہوسٹ

  • پورٹ: 3306

اس ٹیوٹوریل کے لیے، ہم DBeaver کا کمیونٹی ورژن استعمال کریں گے۔ اسی طرح کے دوسرے ٹولز دستیاب ہیں، لیکن اگر آپ اس گائیڈ کے مقاصد کے لیے اسی ٹول کو استعمال کرنا چاہتے ہیں، تو آپ آفیشل ڈی بیور ڈاؤن لوڈ پیج سے کمیونٹی ورژن انسٹال کر سکتے ہیں۔

ڈاؤن لوڈ اور انسٹال کرنے کے بعد، ڈی بیور کلائنٹ کو کھولیں اور ایپ کے اوپری بائیں کونے میں کنیکٹ ٹو ڈیٹا بیس آئیکن پر کلک کریں۔

MySQL کو منتخب کریں اور اگلا پر کلک کریں۔ اگلی ونڈو میں، اپنے ڈیٹا بیس کا صارف نام اور پاس ورڈ درج کریں اور سرور ہوسٹ کو 127.0.0.1 پر سیٹ کریں۔

ٹیسٹ کنکشن پر کلک کریں۔

آپ کی سکرین پر ایک ونڈو نمودار ہونی چاہیے جو یہ بتاتی ہے کہ کنکشن کامیاب ہو گیا ہے۔

ٹھیک ہے پر کلک کریں اور پھر ختم پر کلک کریں۔

اب آپ بائیں پینل میں اپنے کنکشن دیکھیں گے۔ ڈیٹا بیس کا ڈھانچہ دیکھنے کے لیے پھیلائیں۔

ڈیٹا بیس کی ساخت

اب آپ نے کامیابی کے ساتھ اپنے ڈیٹا بیس میں SSH ٹنلنگ بنا لی ہے۔

مسئلہ حل

ڈیٹابیس کنکشن کی جانچ کے دوران، مجھے ابتدائی طور پر یہ خرابی ملی کہ "Plugin ‘mysql_native_password’ لوڈ نہیں ہوا۔” ایک خرابی پیش آ گئی۔ اگر آپ کو اس خرابی کا سامنا کرنا پڑتا ہے، تو اس مسئلے کو حل کرنے کے لیے نیچے دیے گئے اقدامات پر عمل کریں۔

  1. کنکشن سیٹنگز ونڈو میں، ڈرائیور پراپرٹیز ٹیب پر جائیں۔

  2. AllowPublicKeyRetrieval تلاش کریں اور اسے FALSE پر سیٹ کریں۔

  3. مین ٹیب پر واپس جائیں اور ٹیسٹ کنکشن پر کلک کریں۔

اب سب کچھ ٹھیک کام کرنا چاہئے۔

مرحلہ 5: ایک سادہ SpringBoot ایپلیکیشن ڈیولپمنٹ ترتیب دینا

شروع کرنے کے لیے، Spring Initializr ویب سائٹ پر جائیں۔ آرٹفیکٹ کا نام بدل کر "springboot-mysql-eks” رکھ دیں۔ پھر انحصار شامل کریں… REST API کے لیے انحصار شامل کرنے کے لیے کلک کریں۔ درج ذیل انحصار کو بازیافت کرتا ہے:

  • بہار ویب: Spring MVC کا استعمال کرتے ہوئے RESTful ایپلی کیشنز سمیت ویب ایپس بنائیں۔ Apache Tomcat کو بطور ڈیفالٹ ایمبیڈڈ کنٹینر استعمال کرتا ہے۔

  • بہار کا ڈیٹا JPA: Java Persistence API کا استعمال کرتے ہوئے SQL اسٹوریج میں ڈیٹا کو برقرار رکھنے کے لیے Spring Data اور Hibernate کا استعمال۔

  • IBM DB2 ڈرائیور: ایک JDBC ڈرائیور جو IBM DB2 تک رسائی فراہم کرتا ہے۔

  • لومبوک: ایک جاوا تشریحی لائبریری جو بوائلر پلیٹ کوڈ کو کم کرنے میں مدد کرتی ہے۔

اگلا، صفحہ کے نیچے مرکز میں پیدا پر کلک کریں۔ یہ زپ فائل کو آپ کے مقامی کمپیوٹر پر ڈاؤن لوڈ کر دے گا۔ اس فائل کو IDE جیسے VSCode یا IntelliJ IDEA میں کھولیں۔ یہ ٹیوٹوریل VSCode استعمال کرتا ہے۔ آپ build.gradle فائل میں تمام اضافی انحصار دیکھ سکتے ہیں۔

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
   implementation 'org.springframework.boot:spring-boot-starter-webmvc'
   compileOnly 'org.projectlombok:lombok'
   runtimeOnly 'com.ibm.db2:jcc'
   annotationProcessor 'org.projectlombok:lombok'
   testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test'
   testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
   testCompileOnly 'org.projectlombok:lombok'
   testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
   testAnnotationProcessor 'org.projectlombok:lombok'
}

ہم کیا بنا رہے ہیں

اسپرنگ بوٹ ایپ ایک کرنسی اور تبادلوں کی ایپ ہے۔

انسداد تصویر

ہم ڈیٹا بیس ٹیبل میں ایکسچینج ڈیٹا داخل کریں گے۔

اگر آپ اس ٹیوٹوریل کو جاری رکھنا چاہتے ہیں تو، آپ یہاں پراجیکٹ ریپوزٹری کو کلون کرکے وقت بچا سکتے ہیں۔

آپ ذیل میں کوڈ کو مین > java > com.. > ماڈل > ایکسچینج ریٹ میں دیکھ سکتے ہیں۔

package com.example.springbootmysqleks.model;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

import java.sql.Date;

@Getter
@Setter
@Entity
@Table(name = "exchange-rate")
public class ExchangeRate {
   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   private Integer transactionId;
   private String sourceCurrency;
   private String targetCurrency;
   private double amount;
   private Date lastUpdated;
}

یہ کلاس بنیادی طور پر ڈیٹا بیس میں شرح مبادلہ کے ڈیٹا کو ذخیرہ کرنے کے لیے ایک بلیو پرنٹ ہے۔ پہلے شامل کردہ لائبریریوں اور انحصار کا استعمال کرتا ہے۔ Lombok آپ کے لیے تمام دہرائے جانے والے گیٹر/سیٹر بوائلر پلیٹ کو ہینڈل کرتا ہے لہذا آپ کو اسے خود لکھنے کی ضرورت نہیں ہے۔ دوسری طرف، JPA تشریح یہ ہے: @Entity اور @Table آپ اسپرنگ سے کہتے ہیں، "یہ کلاس ڈیٹا بیس ٹیبل پر نقشہ بناتی ہے جسے ایکسچینج ریٹ کہتے ہیں۔”

کلاس کے اندر پانچ فیلڈز ہیں جو ڈیٹا بیس کالم بن جاتے ہیں۔

  • بنیادی کلید کے طور پر خود کو بڑھانا ٹرانزیکشن آئی ڈی۔

  • sourceCurrency اور targetCurrency یہ ٹریک کرنے کے لیے کہ کون سی کرنسی کو تبدیل کیا جا رہا ہے۔

  • اصل شرح مبادلہ پر مشتمل رقم

  • ایک آخری اپ ڈیٹ شدہ تاریخ ہے، لہذا آپ ہمیشہ جانتے ہیں کہ آپ کا ڈیٹا کتنا حالیہ ہے۔

ڈیٹا کو ذخیرہ کرنے کے لیے، main > java > com.. > repository > ExchangeRateRepository میں ایک ریپوزٹری فائل بنائیں۔

package com.example.springbootmysqleks.repository;

import com.example.springbootmysqleks.model.ExchangeRate;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ExchangeRateRepository extends JpaRepository {
   ExchangeRate findBySourceCurrencyAndTargetCurrency(String sourceCurrency, String targetCurrency);
}

یہ فائل آپ کے کوڈ اور ڈیٹا بیس کے درمیان ثالث کے طور پر کام کرتی ہے۔ صرف JpaRepository کو بڑھاتے ہوئے، آپ کو ایک بھی SQL استفسار لکھے بغیر، بلٹ ان ڈیٹا بیس آپریشنز (مثلا محفوظ کرنا، حذف کرنا، FindAll، وغیرہ) کا مکمل سیٹ باکس سے باہر، مفت میں ملتا ہے۔

انٹرفیس کے ساتھ کام کرنے کے لیے ٹائپ کیا گیا ہے: ExchangeRate یہ وہ ماڈل ہے جسے ہم نے صرف بنیادی کلیدی قسم کے طور پر عدد کو استعمال کرتے ہوئے دیکھا ہے۔

ایک حسب ضرورت طریقہ، findBySourceCurrencyAndTargetCurrencyیہ وہ جگہ ہے جہاں واقعی بہار کا جادو چمکتا ہے۔ اگر آپ نام دینے کے کنونشن کی پیروی کرتے ہیں، تو Spring خود بخود معلوم کر لے گا کہ کون سے SQL استفسار کو انجام دینے کی ضرورت ہے، جس سے آپ کو دو کرنسی کوڈز، جیسے "USD” اور "EUR” کو پاس کر کے تبادلے کی شرحیں تلاش کرنے کی اجازت ملے گی، بغیر استفسار کی منطق لکھے۔

استعمال کرنا findBySourceCurrencyAndTargetCurrency طریقہ کار میں، main > java > com.. > service > ExchangeRateService میں سروس فائل بنانے کے لیے نیچے کا کوڈ استعمال کریں۔

package com.example.springbootmysqleks.service;

import com.example.springbootmysqleks.model.ExchangeRate;
import com.example.springbootmysqleks.repository.ExchangeRateRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ExchangeRateService {

   @Autowired
   private ExchangeRateRepository exchangeRateRepository;

   public ExchangeRate addExchangeRate(ExchangeRate exchangeRate) {
       return exchangeRateRepository.save(exchangeRate);
   }

   public double getAmount(String sourceCurrency, String targetCurrency) {
       ExchangeRate exchangeRate =  exchangeRateRepository.findBySourceCurrencyAndTargetCurrency(sourceCurrency, targetCurrency);
       return exchangeRate == null ? 0 : exchangeRate.getAmount();
   }
}

یہاں ہم @Service وہ کلاس جو مخزن کے ساتھ تعامل کرتی ہے۔

کلاس کے دو طریقے ہیں: addExchangeRateیہ سادہ ہے۔ ExchangeRate آبجیکٹ کو محفوظ کریں اور ڈیٹا بیس میں محفوظ کریں۔ getAmountماخذ اور ہدف کی کرنسیوں کے ساتھ، یہ مماثل ریکارڈز تلاش کرنے کے لیے ایک حسب ضرورت اسٹوریج کا طریقہ استعمال کرتا ہے اور پھر ایکسچینج ریٹ کی رقم، یا کوئی ریکارڈ نہ ملنے پر 0 کا محفوظ ڈیفالٹ واپس کرتا ہے۔

وہ چھوٹا سا ٹرنری چیک (exchangeRate == null ? 0 : exchangeRate.getAmount()) اس بات کو یقینی بناتا ہے کہ اگر آپ کرنسی کے جوڑے سے استفسار کرتے ہیں جو کہ ڈیٹا بیس میں ابھی موجود نہیں ہے تو ایپ کریش نہیں ہوگی۔

Main > java > com.. > Controller > ExchangeRateService میں درج ذیل کوڈ ہے:

package com.example.springbootmysqleks.controller;

import com.example.springbootmysqleks.model.ExchangeRate;
import com.example.springbootmysqleks.service.ExchangeRateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class ExchangeRateController {

   @Autowired
   ExchangeRateService exchangeRateService;

   @GetMapping("/getAmount")
   public double getAmount(@RequestParam String sourceCurrency, @RequestParam String targetCurrency) {
       return exchangeRateService.getAmount(sourceCurrency, targetCurrency);
   }

   @PostMapping("/addExchangeRate")
   public ExchangeRate addExchangeRate(@RequestBody ExchangeRate exchangeRate) {
       return exchangeRateService.addExchangeRate(exchangeRate);
   }

   @GetMapping("/")
   public String getHealth() {
       return "up";
   }

}

کہ @RestController تشریح بہار کو بتاتی ہے کہ یہ کلاس ایک REST API اینڈ پوائنٹ فراہم کرے گی۔ @Autowired آپ خود بخود سروس لیئر سے جڑ جاتے ہیں۔

تین اختتامی نقطے ہیں:

  1. درخواست حاصل کریں۔ /getAmount قبول کرنا sourceCurrency اور targetCurrency اسے استفسار کے پیرامیٹر کے طور پر استعمال کریں اور شرح تبادلہ کی رقم واپس کریں۔

  2. درخواست پوسٹ کریں۔ /addExchangeRate یہ مکمل طور پر قبول کرتا ہے ExchangeRate آبجیکٹ کو JSON باڈی کے طور پر بنائیں اور اسے ڈیٹا بیس میں اسٹور کریں۔

  3. آخر میں، ایک سادہ اسٹیٹس چیک اینڈ پوائنٹ آن / واپس "اوپر”۔ یہ کلاؤڈ کی تعیناتیوں میں ایک عام نمونہ ہے، جس سے لوڈ بیلنسرز اور آرکیسٹریشن ٹولز کو معلوم ہوتا ہے کہ ایپ زندہ اور چل رہی ہے۔

مرحلہ 6: اپنے ڈیٹا بیس کے لیے SpringBoot ایپ کو کنفیگر کریں۔

اب ڈیٹا بیس کے لیے ایپلیکیشن کو کنفیگر کرنے کا وقت آگیا ہے۔ اگر آپ src > main > وسائل > application.properties پر جاتے ہیں تو آپ یہ دیکھیں گے:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://({MYSQL_HOSTNAME}:){MYSQL_PORT}/${MYSQL_DATABASE}?createDatabaseIfNotExist=true
spring.datasource.username=${MYSQL_USERNAME}
spring.datasource.password=${MYSQL_PASSWORD}

spring.jpa.hibernate.ddl-auto=update

spring.jpa.show-sql: true

یہ وہ کنفیگریشن ہے جو آپ کی ایپ کو ڈیٹا بیس سے منسلک ہونے دیتی ہے۔

  • spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver: MySQL ڈیٹا بیس کے لیے ڈرائیور کی کلاس۔

  • spring.datasource.url=jdbc:mysql://({MYSQL_HOSTNAME}:){MYSQL_PORT}/${MYSQL_DATABASE}?createDatabaseIfNotExist=true: MySQL میزبان نام (127.0.0.1)، پورٹ کا نام، اور ڈیٹا بیس کا نام استعمال کرتے ہوئے ڈیٹا سورس URL۔

  • spring.datasource.username=${MYSQL_USERNAME}: ڈیٹا بیس صارف کا نام۔

  • spring.datasource.password=${MYSQL_PASSWORD}: ڈیٹا بیس پاس ورڈ۔

ایک بات نوٹ کریں: آپ کے حقیقی اسناد کے ساتھ ماحولیاتی متغیرات کو ترتیب دینے کا عمل آپ کے استعمال کردہ IDE کے لحاظ سے مختلف ہوگا۔ اگر آپ IntelliJ IDEA استعمال کرتے ہیں تو یہ عمل بہت آسان ہے۔ اگر آپ VS کوڈ استعمال کر رہے ہیں، تو عمل مختلف ہے۔

اصلی اسناد کو ترتیب دینے کے لیے env متغیر، تخلیق .vscode/launch.json فائل کو اپنے پروجیکٹ روٹ فولڈر میں محفوظ کریں اور اسے درج ذیل کنفیگریشن میں پیسٹ کریں۔

{
 "version": "0.2.0",
 "configurations": [
   {
     "type": "java",
     "name": "Spring Boot App",
     "request": "launch",
     "mainClass": "com.example.springbootmysqleks.SpringbootMysqlEksApplication",
     "projectName": "springboot-mysql-eks",
     "env": {
       "MYSQL_HOSTNAME": "localhost",
       "MYSQL_PORT": "3306",
       "MYSQL_DATABASE": "exchangedb",
       "MYSQL_USERNAME": "root",
       "MYSQL_PASSWORD": "CHANGE_ME"
     }
   }
 ]
}

اپنی اصلی اسناد کو استعمال کرنے کے لیے اپنی اسناد کو ترتیب دیں۔

اب ایپ کو چلائیں اور آپ دیکھیں گے کہ کیا بنایا گیا ہے۔ exchangedb ڈی بیور کی میز:

ڈی بی امیج کا تبادلہ کریں۔

ڈیٹا بیس کو POST کی درخواست بھیجنے کے لیے پوسٹ مین جیسے API ٹیسٹنگ ٹول کا استعمال کریں۔

پوسٹ مین کی درخواست کی تصویر

اگلا select * from exchange_rate er سکرپٹ exchangedb ایس کیو ایل اسکرپٹ ایڈیٹر:

ایس کیو ایل ایڈیٹر کی تصویر

ایڈیٹر کے نیچے پوسٹ مین کی درخواست سے تیار کردہ ٹیبل دکھاتا ہے۔

اب ذیل کے اختتامی نقطہ پر ایک GET درخواست جاری کریں۔

http://localhost:8080/getAmount?sourceCurrency=USD&targetCurrency=EUR&transactionId=1

آپ کو کرنسی ایکسچینج ویلیو (جیسے 0.93) کے ساتھ 200 OK جواب موصول ہونا چاہیے۔

مرحلہ 7: اپنی اسپرنگ بوٹ ایپلیکیشن کو ڈوکرائز کریں۔

اپنی ایپلیکیشن کو Dockerize کرنے کے لیے، Dockerfile نامی ایک فائل بنائیں اور اسے نیچے کی ترتیب میں چسپاں کریں۔

FROM eclipse-temurin:17-jre-jammy
WORKDIR /app
COPY build/libs/springboot-mysql-eks.jar /app
EXPOSE 8080
CMD ["java", "-jar", "springboot-mysql-eks.jar"]

ڈاکر فائل ہلکے وزن میں کھینچ کر شروع ہوتی ہے۔ eclipse-temurin:17-jre-jammy بیس امیج استعمال کرکے اسے آسان رکھیں، پھر کنٹینر کے اندر ورکنگ ڈائرکٹری کے طور پر /app سیٹ کریں۔ مرتب کردہ اسپرنگ بوٹ JAR فائل کو اپنے لوکل بلڈ/libs/ فولڈر سے اس ڈائرکٹری میں کاپی کریں، آنے والی ٹریفک کے لیے پورٹ 8080 کو بے نقاب کریں، اور آخر میں اس ایپ کو استعمال کرتے ہوئے چلائیں: java -jar جب کنٹینر شروع ہوتا ہے۔

اگلا، ایپ بنائیں .jar فائل ایسا کرنے کے لیے، نیچے دی گئی کمانڈ کو چلائیں:

./gradlew clean assemble 

جیسا کہ ذیل میں دکھایا گیا ہے آپ کو کامیاب تعمیراتی آؤٹ پٹ حاصل کرنا چاہئے۔

bde4395b-bc30-46e4-9687-bd03836f574d

Build > libs فولڈر پر جائیں۔ آپ دیکھ سکتے ہیں springboot-mysql-eks فائل بن گئی ہے۔

اگر آپ کو پیغام موصول ہوتا ہے "آپریشن مکمل نہیں ہو سکا۔” اگر آپ کو کوئی خرابی موصول ہوتی ہے تو اس مسئلے کو حل کرنے کے لیے ایکسپورٹ کمانڈ چلانے کی کوشش کریں۔ اگر آپ میک استعمال کر رہے ہیں تو نیچے دی گئی کمانڈ کو چلائیں:

brew install openjdk@21

اگلا، برآمد کمانڈ چلائیں:

export JAVA_HOME=/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home

export PATH=(JAVA_HOME/bin:)PATH

پھر ./gradlew clean assemble دوبارہ آرڈر کریں۔

مرحلہ 8: تصویر کو لچکدار کنٹینر رجسٹری (ECR) پر پش کریں

اگلے مراحل میں، ہم Amazon ECR بنائیں گے اور امیج کو رجسٹری میں دھکیلیں گے۔

شروع کرنے کے لیے، AWS کنسول پر واپس جائیں اور "ECR” تلاش کریں۔ ECR صفحہ پر، Create**.** پر کلک کریں پھر ایک مخزن کا نام درج کریں (جیسے "springboot-mysql-eks”)۔ اگلا، بنائیں پر کلک کریں۔

ای سی آر تصاویر

پھر ریپوزٹری کو منتخب کریں اور صفحہ کے اوپری حصے میں ویو پش کمانڈز پر کلک کریں۔ یہ کئی کمانڈز کے ساتھ ایک ونڈو دکھائے گا جسے آپ تصویر کو رجسٹری میں دھکیلنے کے لیے استعمال کر سکتے ہیں۔ ٹرمینل کھولیں اور درج ذیل کمانڈ چلائیں: کمانڈ چلانے سے پہلے، آپ کو یہ یقینی بنانا ہوگا کہ آپ کی مقامی مشین پر Docker چل رہا ہے۔

کمانڈ کو چلائیں اور آپ دیکھیں گے کہ امیج کو کامیابی کے ساتھ رجسٹری میں دھکیل دیا گیا ہے۔

ای سی آر تصاویر

مرحلہ 9: AWS ایپ لوڈ بیلنسر نافذ کریں۔

یہ مرحلہ شروع کرنے سے پہلے، اضافی AWS دستاویزات کے لنکس کے لیے تنصیب کے مراحل اور README پروجیکٹ کو چیک کریں۔ اس سے آپ کی پیروی کرنے میں مدد ملے گی۔

اب شروع کرنے کے لیے، اپنی روٹ ڈائرکٹری میں درج ذیل نیا فولڈر بنائیں: cluster . آپ اپنے لوڈ بیلنس کے لیے AWS IAM پالیسی یہاں سے ڈاؤن لوڈ کر سکتے ہیں۔ پالیسی ڈاؤن لوڈ کرنے کے لیے، اپنے ٹرمینل پر جائیں اور cd ~ میں clusterذیل میں کمانڈ چلائیں:

curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json

یہ کمانڈ AWS دستاویزات سے لی گئی ہے۔ اب اس فولڈر میں جائیں اور آپ دیکھیں گے کہ iam_policy.json فائل خود بخود بن گئی ہے۔

پھر نیچے دی گئی کمانڈ کا استعمال کرتے ہوئے IAM پالیسی کا اطلاق کریں۔

aws iam create-policy 
    --policy-name AWSLoadBalancerControllerIAMPolicy 
    --policy-document file://iam_policy.json

آپ کو اپنے ٹرمینل میں درج ذیل کی طرح آؤٹ پٹ دیکھنا چاہئے:

ٹرمینل تصویر

اس سے ظاہر ہوتا ہے کہ IAM پالیسی کامیابی کے ساتھ بنائی گئی تھی۔ اسے چیک کرنے کے لیے، کنسول کے IAM سیکشن پر جائیں، پالیسیوں** پر جائیں اور "AWSLoad…” تلاش کریں۔ آپ کو وہاں کی پالیسی دیکھنی چاہیے۔

لوڈ بیلنس پالیسی کی تصویر

اگلا مرحلہ Kubernetes سروس اکاؤنٹ بنانا ہے۔ لیکن اس سے پہلے، آپ کو اپنے پبلک اور پرائیویٹ سب نیٹس کو ٹیگ کرنے کی ضرورت ہے جیسا کہ اس مضمون میں بیان کیا گیا ہے۔

اب اپنے وی پی سی ڈیش بورڈ پر جائیں، سب نیٹ پر جائیں، سب نیٹ پر کلک کریں اور ٹیگز پر جائیں۔ پھر ٹیگز کا نظم کریں پر کلک کریں۔

ٹیگ تصویر

نیا ٹیگ شامل کریں پر کلک کریں، پھر اپنے دستاویز میں کلید/جوڑے کی قدریں درج کریں۔

ٹیگ تصویر

مرحلہ 10: EKS میں ایک کلسٹر بنائیں

EKS میں Kubernetes کلسٹر بنانے کے لیے، آپ کو eksctl CLI کی ضرورت ہے۔ CLI انسٹال کرنے کے لیے، AWS eksctl دستاویزات میں دی گئی ہدایات پر عمل کریں۔ اگلا، ہمیں کلسٹر بنانے کے لیے کنفیگریشن فائل اسکیما کی ضرورت ہے۔ اس اسکیما کو استعمال کرنے کے لیے، اپنے کلسٹر فولڈر میں Cluster.yaml کے نام سے ایک نئی فائل بنائیں۔

پھر درج ذیل کنفیگریشن کو پیسٹ کریں:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: spring-test-cluster
  region: us-east-1
  version: "1.30"

vpc:
  id: ""
  subnets:
    private:
      us-east-1a:
        id: "" # spring-demo-subnet-private1-us-east-1a
      us-east-1b:
        id: "" # spring-demo-subnet-private2-us-east-1b
    public:
      us-east-1a:
        id: "" # spring-demo-subnet-public1-us-east-1a
      us-east-1b:
        id: "" # spring-demo-subnet-public2-us-east-1b

nodeGroups:
  - name: ng-1
    labels: { role: backend }
    instanceType: t2.micro
    desiredCapacity: 3
    minSize: 3
    maxSize: 5
    privateNetworking: true
    ssh:
      allow: true
      publicKeyName: 
    iam:
      withAddonPolicies:
        imageBuilder: true
        awsLoadBalancerController: true
        autoScaler: true
iam:
  withOIDC: true
  serviceAccounts:
    - metadata:
        name: aws-load-balancer-controller
        namespace: kube-system
      attachPolicyARNs:
        - arn:aws:iam:::policy/AWSLoadBalancerControllerIAMPolicy

گردن ClusterConfig فائل کو eksctl کے ذریعہ EKS کلسٹر بنانے کے لیے استعمال کیا جاتا ہے: spring-test-cluster پر us-east-1 regionمیں Kubernetes ورژن 1.30 چلا رہا ہوں۔ دو دستیابی زونز میں پرائیویٹ سب نیٹس میں ورکر نوڈس کو تعینات کرنے کے لیے موجودہ VPC سے جڑیں۔ us-east-1a اور us-east-1b) زیادہ دستیابی کے لیے اپنے لوڈ بیلنس کے لیے ایک پبلک سب نیٹ دستیاب رکھیں۔

نوڈ گروپ کسی بھی تعداد میں t2.micro EC2 مثالیں (اگر ضروری ہو تو 5 تک اسکیلنگ) کو 3 تک گھماتا ہے، سیکیورٹی کے لیے پرائیویٹ نیٹ ورکنگ کے ساتھ۔ ہم نے AWS لوڈ بیلنس کنٹرولر، آٹو اسکیلر، اور ECR امیج تک رسائی کے لیے ضروری IAM اجازتیں بھی ترتیب دی ہیں، اس لیے آپ کے کلسٹر کے پاس ٹریفک کو منظم کرنے اور Docker امیجز کو خودکار طور پر کھینچنے کے لیے درکار ہر چیز موجود ہے۔

اب اپنی اسناد کے ساتھ کنفیگریشن کو اپ ڈیٹ کریں اور پھر نیچے دی گئی کمانڈ کو چلائیں۔

eksctl create cluster -f cluster.yaml

یہ ایک کلسٹر بنائے گا۔ آپ اپنے ٹرمینل میں درج ذیل آؤٹ پٹ دیکھیں گے۔

کلسٹر تخلیق کی تصویر

اب، اگر آپ AWS کنسول میں CloudFormation پر جاتے ہیں، تو آپ دیکھ سکتے ہیں کہ کلسٹر بنانے کا عمل جاری ہے۔

اسٹیک تخلیق کی تصویر

اب، اگر آپ EC2 مثال کے صفحے پر جائیں، تو آپ دیکھیں گے کہ تین نوڈس بن چکے ہیں۔

کلسٹر امیج چل رہا ہے۔

مرحلہ 11: AWS لوڈ بیلنسنگ انسٹال کریں۔

اگلا مرحلہ آپ کی درخواست کے لیے لوڈ بیلنسر انسٹال کرنا ہے۔ شروع کرنے کے لیے، نیچے دی گئی کمانڈ کو چلائیں:

 kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

یہ کنٹرولر کے لیے حسب ضرورت وسائل کی تعریف (CRD) انسٹال کرتا ہے۔ پھر ہیلم چارٹ ریپوزٹری کو شامل کرنے کے لیے نیچے دی گئی کمانڈ کو چلائیں۔

helm repo add eks https://aws.github.io/eks-charts

تازہ ترین چارٹس حاصل کرنے کے لیے براہ کرم اپنے مقامی ذخیرہ کو اپ ڈیٹ کریں۔

helm repo update eks

اگلا، ہیلم چارٹ انسٹال کریں۔

helm install aws-load-balancer-controller eks/aws-load-balancer-controller 
  -n kube-system 
  --set clusterName=my-cluster 
  --set serviceAccount.create=false 
  --set serviceAccount.name=aws-load-balancer-controller 
  --version 1.14.0

اگلا، یقینی بنائیں کہ آپ کے پاس کنٹرولر انسٹال ہے۔

kubectl get deployment -n kube-system aws-load-balancer-controller

آپ کو اپنے ٹرمینل میں درج ذیل کو دیکھنا چاہیے:

61d954f3-b09d-4691-9b1c-02134c2d8bf1

یہ اشارہ کرتا ہے کہ کنٹرولر تیار ہے۔

مرحلہ 12: Kubernetes بنائیں اور تعینات کریں۔

شروع کرنے کے لیے، آپ کو پہلے Kubernetes مینی فیسٹ فائل بنانے کی ضرورت ہے۔ اس کے لیے ہم ہیلم چارٹ استعمال کریں گے۔

helm create ytchart

مندرجہ بالا کمانڈ درج ذیل فولڈرز بنائے گی۔ ytchart اپنے اجزاء کے لیے ٹیمپلیٹس استعمال کریں۔ آپ کو اپنے استعمال کے معاملے کے مطابق اس فولڈر میں کچھ کنفیگریشن کرنے کی ضرورت ہوگی۔ سب سے پہلے، ytchart > ٹیمپلیٹ پر جائیں اور serviceaccount.yaml یہ ایک فائل ہے۔ اس کی وجہ یہ ہے کہ آپ نے پہلے ہی ایک سروس اکاؤنٹ بنایا ہے۔

اگلا، value.yaml پر جائیں اور درج ذیل تبدیلیاں کریں:

mysql:
 databaseName: exchangedb

آپ کو اپنے ڈیٹا بیس کے صارف نام اور پاس ورڈ کو ذخیرہ کرنے کے لیے ایک راز کا بھی استعمال کرنا چاہیے۔ پر جائیں: templates فولڈر میں جائیں اور نامزد فائل پر جائیں۔ secrets.yaml. یہاں ہم ڈیٹا بیس کا صارف نام اور پاس ورڈ سیٹ کرتے ہیں اور پھر لائیونس اور تیاری کی تحقیقات پر تبصرہ کرتے ہیں۔ deployment.yaml.

اگلا، ہم ڈیٹا بیس سے جڑنے کے لیے ایک سروس بنائیں گے۔ ایسا کرنے کے لیے mysql.yaml فائل، اگلا externalName. AWS کنسول میں RDS سروس پیج پر جائیں اور ڈیٹا بیس اینڈ پوائنٹ کو کاپی کریں۔

اب deployment.yaml فائل میں درج ذیل کنفیگریشن چسپاں کریں:

          env:
            - name: SPRING_DATASOURCE_URL
              value: jdbc:mysql://spring-mysql:3306/{{ .Values.mysql.databaseName }}?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
            - name: SPRING_DATASOURCE_USERNAME
              valueFrom:
                secretKeyRef:
                  name: mysql-username
                  key: username
            - name: SPRING_DATASOURCE_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-root-password
                  key: password

آپ نے اپنے ڈیٹا بیس کی اسناد کو محفوظ بنانے کے لیے کامیابی کے ساتھ ایک ماحولیاتی متغیر بنایا ہے۔

پر ingress.yaml فائل میں درج ذیل کنفیگریشن چسپاں کریں:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: "spring-microservice-ingress"
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/load-balancer-name: spring-alb-test
  labels:
    app: spring-microservice
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: {{ include "ytchart.fullname" . }}
                port:
                  number: 8080

یہ وصول کرنے والی خدمت کے لیے ترتیب ہے۔

تمام کنفیگریشن ویلیوز دیکھنے کے لیے، نیچے دی گئی کمانڈ کو چلائیں:

helm template ytchart/

پھر چارٹ کو تعینات کرنے کے لیے نیچے دی گئی کمانڈ کو چلائیں۔

helm install mychart ytchart

آپ اپنے ٹرمینل میں درج ذیل آؤٹ پٹ دیکھیں گے۔

اسٹیئرنگ چارٹ کی تصاویر

اب اگر آپ kubectl چلاتے ہیں تو آپ سب دیکھیں گے:

تعیناتی کی تصویر

اب EC2 > Load Balancer پر جائیں، DNS کا نام کاپی کریں اور اسے اپنے براؤزر میں درج کریں۔ آپ کو "اوپر” متن دیکھنا چاہئے۔ اس سے ظاہر ہوتا ہے کہ ایپلیکیشن ٹھیک سے کام کر رہی ہے۔

اب اگر آپ اس طرح DNS URL کا استعمال کرتے ہوئے API کو کال کرتے ہیں:

http://spring-alb-test-260424558.us-east-1.elb.amazonaws.com/addExchangeRate

آپ کو 200 OK جواب موصول ہونا چاہئے۔ مبارک ہو آپ نے کامیابی کے ساتھ اپنی اسپرنگ بوٹ ایپ کوبرنیٹس پر تعینات کر دی ہے!

مرحلہ 13: کلسٹر کو حذف کریں۔

اگر آپ AWS اور کلاؤڈ سے واقف ہیں، تو آپ پہلے ہی جانتے ہیں کہ وسائل کو طویل عرصے تک چلانا کتنا مہنگا ہے، خاص طور پر جب آپ انہیں فعال طور پر استعمال نہیں کر رہے ہوں۔

اب جب کہ ہم اس ٹیوٹوریل کے ساتھ کام کر چکے ہیں، یہ وسائل کو حذف کرنے کا وقت ہے۔

حذف کرنے کے وسائل یہ ہیں:

نتیجہ

Amazon EKS پر MySQL کے ساتھ اسپرنگ بوٹ ایپلیکیشن کی تعیناتی کے لیے بہت سے متحرک حصوں کی ضرورت ہوتی ہے، لیکن ہر قدم منطقی طور پر آخری پر بنتا ہے۔

اس ٹیوٹوریل میں، ہم نے ایک VPC ترتیب دینے اور ایک منظم ڈیٹا بیس کی فراہمی سے لے کر ایک ایپ کو کنٹینرائز کرنے، اسے ECR پر دھکیلنے، اور آخر میں Kubernetes اور ایک ایپلیکیشن لوڈ بیلنس کا استعمال کرتے ہوئے ہر چیز کو آرکیسٹریٹ کیا۔

آپ کو بلٹ میں اعلی دستیابی، نجی نیٹ ورکنگ، محفوظ اسناد کے انتظام، اور آٹو اسکیلنگ کے ساتھ پروڈکشن گریڈ سیٹ اپ ملتا ہے۔ یہ اس قسم کا بنیادی ڈھانچہ ہے جسے EKS اور RDS جیسی منظم خدمات کے بغیر نقل کرنے کے لیے اہم دستی کوشش کی ضرورت ہوتی ہے۔

اپنے اگلے اقدامات کے لیے، AWS سرٹیفکیٹ مینیجر کے ذریعے HTTPS سپورٹ شامل کرنے، افقی پوڈ آٹو اسکیلنگ ترتیب دینے، یا مستقبل کی تعیناتیوں کو خودکار کرنے کے لیے اپنی CI/CD پائپ لائن کو مربوط کرنے پر غور کریں۔ جب آپ تجربہ کر لیں تو اپنے AWS وسائل کو صاف کرنا نہ بھولیں۔ آپ کا بٹوہ آپ کا شکریہ ادا کرے گا۔

Scroll to Top