ক্লাউড ভিত্তিক স্কালা প্রজেক্ট তৈরি করা অত্যন্ত জনপ্রিয় এবং স্কালার শক্তিশালী বৈশিষ্ট্যগুলির মাধ্যমে দ্রুত এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সহায়ক। স্কালা ব্যবহার করে ক্লাউড ভিত্তিক প্রজেক্ট তৈরি করতে, আপনি Cloud Computing Services যেমন AWS (Amazon Web Services), Google Cloud Platform (GCP), বা Microsoft Azure ব্যবহার করতে পারেন। ক্লাউডের সুবিধা গ্রহণ করে আপনি অ্যাপ্লিকেশনটি সহজেই স্কেল করতে পারবেন এবং প্রজেক্টের জন্য কম্পিউটিং রিসোর্সের প্রয়োজনীয়তা পূরণ করতে পারবেন।
এই গাইডে, আমরা একটি ক্লাউড ভিত্তিক স্কালা প্রজেক্ট তৈরি করার জন্য AWS-এ একটি সাধারণ স্কালা অ্যাপ্লিকেশন ডিপ্লয় করার প্রক্রিয়া দেখাব।
১. স্কালা প্রজেক্ট তৈরি এবং প্রস্তুতি
প্রথমে, একটি সাধারণ স্কালা প্রজেক্ট তৈরি করতে হবে। আমরা একটি Akka HTTP সার্ভিস তৈরি করব, যা AWS EC2 তে হোস্ট করা হবে।
১.১ Scala Akka HTTP অ্যাপ্লিকেশন তৈরি করা
- প্রজেক্ট সেটআপ (build.sbt):
name := "ScalaCloudApp"
version := "0.1"
scalaVersion := "2.13.6"
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-http" % "10.2.7",
"com.typesafe.akka" %% "akka-stream" % "2.6.16",
"com.typesafe.akka" %% "akka-actor-typed" % "2.6.16",
"com.typesafe.akka" %% "akka-http-spray-json" % "10.2.7"
)- Akka HTTP সার্ভার তৈরি করা:
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import akka.http.scaladsl.model.StatusCodes
import scala.concurrent.ExecutionContextExecutor
import scala.io.StdIn
object ScalaCloudApp extends App {
implicit val system: ActorSystem = ActorSystem("CloudAppSystem")
implicit val materializer: ActorMaterializer = ActorMaterializer()
implicit val executionContext: ExecutionContextExecutor = system.dispatcher
val route =
path("hello") {
get {
complete("Hello, Scala Cloud!")
}
}
val bindingFuture = Http().newServerAt("0.0.0.0", 8080).bind(route)
println(s"Server online at http://0.0.0.0:8080/\nPress RETURN to stop...")
StdIn.readLine()
bindingFuture.flatMap(_.unbind()).onComplete(_ => system.terminate())
}এখানে একটি Akka HTTP সার্ভিস তৈরি করা হয়েছে, যা "/hello" রুটে "Hello, Scala Cloud!" রেসপন্স পাঠাবে।
২. AWS EC2 তে স্কালা অ্যাপ্লিকেশন ডিপ্লয় করা
এখন আমরা এই স্কালা অ্যাপ্লিকেশনটিকে AWS EC2 ইনস্ট্যান্সে ডিপ্লয় করব।
২.১ AWS EC2 ইনস্ট্যান্স তৈরি
- AWS Console এ লগইন করুন: প্রথমে AWS Management Console-এ লগইন করুন এবং একটি নতুন EC2 ইনস্ট্যান্স তৈরি করুন।
- টেমপ্লেট নির্বাচন করুন: সাধারণত Ubuntu বা Amazon Linux টেমপ্লেট নির্বাচন করা হয়, যা স্কালা এবং জাভা রান করার জন্য উপযুক্ত।
- ইন্সট্যান্স কনফিগারেশন: ইন্সট্যান্স কনফিগারেশনে আপনার অ্যাপ্লিকেশন সার্ভারের জন্য Security Group এবং SSH Key Pair তৈরি করুন।
- ইন্সট্যান্স চালু করুন: ইন্সট্যান্স চালু হলে আপনার Public IP পাবেন, যা স্কালা অ্যাপ্লিকেশনটি অ্যাক্সেস করতে ব্যবহৃত হবে।
২.২ EC2 ইনস্ট্যান্সে স্কালা অ্যাপ্লিকেশন ডিপ্লয় করা
EC2 তে লগইন করুন:
আপনার EC2 ইনস্ট্যান্সে SSH এর মাধ্যমে লগইন করুন:ssh -i "your-key.pem" ubuntu@<your-public-ip>Java এবং SBT ইনস্টল করুন:
স্কালা অ্যাপ্লিকেশন রান করার জন্য Java এবং SBT (Scala Build Tool) ইনস্টল করতে হবে।sudo apt update sudo apt install openjdk-11-jdk sudo apt install sbtকোড আপলোড করুন:
আপনার স্কালা প্রজেক্টটি Git এর মাধ্যমে বা SCP (Secure Copy Protocol) ব্যবহার করে EC2 ইনস্ট্যান্সে আপলোড করুন।git clone https://github.com/your-repository/scala-cloud-app.git cd scala-cloud-appআনলজিপ ডিপেন্ডেন্সি এবং রান করুন:
প্রজেক্ট ডিরেক্টরিতে গিয়ে SBT দিয়ে প্রজেক্ট বিল্ড এবং রান করুন:sbt runএখন আপনার অ্যাপ্লিকেশন http://
:8080/hello এই URL তে অ্যাক্সেস করা যাবে।
৩. AWS Elastic Load Balancer (ELB) ব্যবহার
এটি আপনার অ্যাপ্লিকেশনটি scalable (স্কেলেবল) করতে সাহায্য করে, যাতে আপনি সহজেই একাধিক EC2 ইনস্ট্যান্সের মধ্যে লোড বিতরণ করতে পারেন।
৩.১ Elastic Load Balancer (ELB) কনফিগারেশন
- AWS Console থেকে EC2 > Load Balancers নির্বাচন করুন এবং নতুন একটি Application Load Balancer তৈরি করুন।
- Target Group সেট করুন, যাতে আপনি লোড ব্যালান্সারের মধ্যে আপনার EC2 ইনস্ট্যান্স যুক্ত করতে পারেন।
- Listeners সেট করুন, যেমন HTTP পোর্ট 80।
এটি নিশ্চিত করবে যে আপনার অ্যাপ্লিকেশনটি লোড ব্যালান্সারের মাধ্যমে অনেক নোডে সঠিকভাবে বিতরণ করা হচ্ছে।
৪. স্কালার অ্যাপ্লিকেশন স্কেলিং
যেহেতু আপনি ক্লাউডে কাজ করছেন, আপনি অ্যাপ্লিকেশনটি স্কেল করতে চাইলে Auto Scaling ব্যবহার করতে পারেন।
৪.১ Auto Scaling সেটআপ
- Launch Configuration তৈরি করুন যাতে আপনার অ্যাপ্লিকেশনটি নির্দিষ্ট পরিমাণ ইন্সট্যান্সে চলতে পারে।
- Scaling Policy সেট করুন যা ইনস্ট্যান্সের সংখ্যাকে স্বয়ংক্রিয়ভাবে বাড়ানো বা কমানোর সুযোগ প্রদান করবে, যেমন CPU ব্যবহারের ওপর ভিত্তি করে।
৫. Docker এবং Kubernetes ব্যবহার
আপনি যদি আপনার স্কালা অ্যাপ্লিকেশনটি containerize করতে চান এবং একটি microservices architecture তৈরি করতে চান, তবে Docker এবং Kubernetes ব্যবহার করতে পারেন। Docker আপনার অ্যাপ্লিকেশনকে একটি কনটেইনারে রাখবে এবং Kubernetes স্বয়ংক্রিয়ভাবে এই কনটেইনারগুলিকে ম্যানেজ এবং স্কেল করবে।
৫.১ Dockerfile তৈরি
FROM openjdk:11-jdk
WORKDIR /app
COPY target/scala-2.13/scala-cloud-app.jar /app
CMD ["java", "-jar", "scala-cloud-app.jar"]৫.২ Kubernetes Deployment
Kubernetes দিয়ে আপনার অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে স্কেল করতে পারেন। প্রথমে একটি deployment.yaml তৈরি করুন:
apiVersion: apps/v1
kind: Deployment
metadata:
name: scala-cloud-app
spec:
replicas: 3
selector:
matchLabels:
app: scala-cloud-app
template:
metadata:
labels:
app: scala-cloud-app
spec:
containers:
- name: scala-cloud-app
image: your-docker-image
ports:
- containerPort: 8080এটি আপনার অ্যাপ্লিকেশনটি ৩টি কপি (replica) দিয়ে Kubernetes এ ডিপ্লয় করবে।
সারাংশ
- Scala Cloud Project তৈরি করার মাধ্যমে আপনি স্কালার অ্যাপ্লিকেশনকে ক্লাউডে ডিপ্লয় করতে পারেন, যা স্কেলেবল এবং রিলায়েবল।
- AWS EC2 ইনস্ট্যান্স, Elastic Load Balancer, Auto Scaling, এবং Docker এর মাধ্যমে ক্লাউড ভিত্তিক স্কালা প্রজেক্ট স্কেল করা সম্ভব।
- Kubernetes ব্যবহার করে আপনার স্কালার অ্যাপ্লিকেশনটি ম্যানেজ এবং স্কেল করা যেতে পারে, বিশেষ করে যখন আপনি microservices আর্কিটেকচার তৈরি করছেন
।
এই প্রক্রিয়া আপনার স্কালার অ্যাপ্লিকেশনকে ক্লাউডে সফলভাবে ডিপ্লয় এবং স্কেল করতে সাহায্য করবে।