Day 01: DevOps Fundamental
DevOps হলো modern software development ও IT operations-এর একটি গুরুত্বপূর্ণ approach, যার মাধ্যমে development এবং operations team একসাথে কাজ করে software দ্রুত, নির্ভরযোগ্য এবং automated উপায়ে deliver করে। এই DevOps Fundamental lesson-এ আমরা DevOps কী, SDLC বনাম DevOps, CI/CD, DevOps tools এবং একটি real-time deployment workflow সম্পর্কে জানব।
What is DevOps?
DevOps শব্দটি দুটি শব্দের সমন্বয়ে তৈরি:
- Dev = Development — Coding, feature development এবং application building
- Ops = Operations — Deployment, infrastructure এবং application monitoring
DevOps হলো একটি cultural and technical approach, যেখানে software development এবং IT operations team একসাথে কাজ করে software development lifecycle ছোট করা, automation বৃদ্ধি করা এবং দ্রুত ও high-quality software delivery নিশ্চিত করার চেষ্টা করে।
DevOps-এর প্রধান ধারণা
- Continuous Integration (CI) — Code automatically integrate, build এবং test করা।
- Continuous Delivery/Deployment (CD) — Tested application দ্রুত production-এ deliver বা deploy করা।
- Infrastructure as Code (IaC) — Code ব্যবহার করে infrastructure তৈরি ও manage করা।
- Monitoring & Feedback — Application-এর performance monitor করে continuous feedback নেওয়া।
DevOps কেন ব্যবহার করা হয়?
Traditional software development process-এ development এবং operations team আলাদাভাবে কাজ করলে communication gap, manual কাজ এবং deployment delay তৈরি হতে পারে। DevOps এই সমস্যাগুলো কমাতে collaboration এবং automation ব্যবহার করে।
| Traditional Approach | DevOps Approach |
|---|---|
| Development ও Operations আলাদা | Development ও Operations collaboration করে |
| অনেক manual কাজ | Automation বেশি |
| Deployment ধীর | Deployment দ্রুত |
| Feedback দেরিতে পাওয়া যায় | Continuous feedback পাওয়া যায় |
| Release করতে বেশি সময় লাগে | Frequent release করা যায় |
Real-World DevOps Example
ধরুন আপনি একটি web application তৈরি করছেন। Traditional setup-এ একজন developer code লিখবেন এবং পরে operations team সেই application server-এ deploy করবে। এই process-এ communication এবং manual কাজের কারণে delay হতে পারে।
DevOps environment-এ developer এবং operations team automation tools ব্যবহার করে একই workflow-এর অংশ হিসেবে কাজ করে। ফলে code থেকে production deployment পর্যন্ত অনেক কাজ automatically করা যায়।
একটি সাধারণ DevOps Workflow
- Developer application-এর নতুন feature তৈরি করে।
- Developer code Git repository-তে commit করে।
- Code GitHub বা GitLab-এ push করা হয়।
- CI/CD pipeline automatically trigger হয়।
- Application build এবং automated test করা হয়।
- Test সফল হলে application deploy করা হয়।
- Production application monitor করা হয়।
- কোনো সমস্যা হলে monitoring system feedback এবং alert দেয়।
DevOps-এর সহজ উদাহরণ
একজন developer code লিখে GitHub-এ push করলেন। GitHub Actions বা Jenkins automatically code build ও test করল। Test সফল হলে Docker image তৈরি করে server বা Kubernetes cluster-এ application deploy করা হলো। এরপর Prometheus এবং Grafana application monitor করল।
SDLC vs DevOps
SDLC (Software Development Life Cycle) হলো software তৈরি করার বিভিন্ন ধাপের একটি structured process। অন্যদিকে DevOps হলো development এবং operations-এর মধ্যে collaboration, automation এবং continuous delivery-এর approach।
| Feature | Traditional SDLC | DevOps |
|---|---|---|
| Process | Sequential বা structured process | Continuous CI/CD-based process |
| Team Collaboration | Development ও Operations তুলনামূলকভাবে আলাদা | Development ও Operations একসাথে কাজ করে |
| Delivery | Slow এবং অনেক manual | Fast এবং automated |
| Feedback | সাধারণত দেরিতে পাওয়া যায় | Continuous feedback |
| Automation | কম | বেশি |
| Tools | Manual testing ও scripting | CI/CD, Docker, Kubernetes, Terraform ইত্যাদি |
Traditional SDLC Workflow
Traditional Waterfall-style workflow সাধারণত একাধিক sequential phase অনুসরণ করে:
Planning
↓
Development
↓
Testing
↓
Deployment
↓
Maintenance
প্রতিটি phase শেষ হওয়ার পর পরবর্তী phase শুরু হয়।
DevOps Cycle
PLAN
↓
DEVELOP
↓
BUILD
↓
TEST
↓
RELEASE
↓
DEPLOY
↓
OPERATE
↓
MONITOR
↺
Continuous Feedback
DevOps-এর সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো এটি একটি continuous cycle। Application production-এ যাওয়ার পরও monitoring এবং feedback-এর মাধ্যমে নতুন development cycle শুরু হতে পারে।
What is CI/CD?
CI/CD হলো DevOps-এর অন্যতম গুরুত্বপূর্ণ concept। এটি software build, test, integration এবং deployment process automate করতে সাহায্য করে।
| Term | Full Form | Description |
|---|---|---|
| CI | Continuous Integration | Developer-এর code automatically integrate, build এবং test করার process। |
| CD | Continuous Delivery | Tested code release করার জন্য automatically প্রস্তুত রাখা। |
| CD | Continuous Deployment | Test সফল হলে automatically production environment-এ deploy করা। |
Continuous Integration (CI)
CI-এর মাধ্যমে developer যখন code repository-তে push বা merge করেন, তখন automated pipeline code build এবং test করতে পারে। এতে code-এর সমস্যা দ্রুত শনাক্ত করা সম্ভব হয়।
Continuous Delivery
Continuous Delivery-তে application automatically build এবং test হওয়ার পর production-এ release করার জন্য ready থাকে। Production deployment অনেক ক্ষেত্রে manual approval-এর মাধ্যমে করা হয়।
Continuous Deployment
Continuous Deployment-এ automated tests সফল হলে application automatically production environment-এ deploy হয়ে যায়।
CI/CD Example Workflow
- Developer নতুন feature-এর code লিখে।
- Code commit করা হয়।
- Code GitHub repository-তে push করা হয়।
- CI/CD pipeline automatically trigger হয়।
- Application build করা হয়।
- Automated tests run করা হয়।
- Tests সফল হলে deployment process শুরু হয়।
- Application server বা cloud environment-এ deploy করা হয়।
Basic Git Workflow
# Step 1: Developer code লিখে
# Step 2: Code commit
git add .
git commit -m "Add new feature"
# Step 3: GitHub-এ push
git push origin main
GitHub Actions, Jenkins বা অন্য কোনো CI/CD platform এই push event-এর পরে automated workflow চালাতে পারে।
CI এবং CD সহজে মনে রাখার উপায়
CI = Code আসার পর Build + Test
CD = Tested Code Release/Deploy
সহজভাবে মনে রাখতে পারেন: CI checks the code, CD delivers the code.
DevOps Tools Overview
DevOps workflow-এর প্রতিটি stage-এর জন্য আলাদা ধরনের tools ব্যবহার করা হয়। নিচে বহুল ব্যবহৃত কিছু DevOps tools দেওয়া হলো:
| Stage | Tools | Purpose |
|---|---|---|
| Plan | Jira, Trello | Project ও issue tracking |
| Develop | Git, GitHub, GitLab | Source code management |
| Build | Maven, Gradle, npm | Build automation |
| CI/CD | Jenkins, GitHub Actions | Testing, integration ও deployment automation |
| Test | Selenium, JUnit, PHPUnit | Automated testing |
| Deploy | Ansible, Terraform | Deployment ও infrastructure automation |
| Containerize | Docker | Application containerization |
| Orchestrate | Kubernetes, EKS, GKE, AKS | Container management at scale |
| Monitor | Prometheus, Grafana, ELK | Performance ও log monitoring |
| Alert | Alertmanager, PagerDuty | Incident alert ও management |
Important DevOps Tools
- Git: Source code version control করার জন্য।
- GitHub: Git repository host এবং collaboration platform।
- Jenkins: CI/CD pipeline automation-এর জন্য।
- GitHub Actions: GitHub repository থেকে automated workflow চালানোর জন্য।
- Docker: Application এবং তার dependencies container-এর মধ্যে package করার জন্য।
- Kubernetes: Large-scale containerized application manage করার জন্য।
- Terraform: Infrastructure as Code-এর মাধ্যমে infrastructure provision করার জন্য।
- Ansible: Configuration management এবং automation-এর জন্য।
- Prometheus: Metrics সংগ্রহ ও monitoring-এর জন্য।
- Grafana: Metrics এবং monitoring data visualization-এর জন্য।
Infrastructure as Code (IaC)
Infrastructure as Code (IaC) হলো code বা configuration file ব্যবহার করে server, network, database এবং cloud infrastructure তৈরি ও manage করার পদ্ধতি।
উদাহরণ হিসেবে Terraform ব্যবহার করে manually cloud console থেকে server তৈরি না করে configuration code-এর মাধ্যমে infrastructure provision করা যায়।
# Terraform configuration-এর একটি basic ধারণা
resource "aws_instance" "web" {
ami = "ami-example"
instance_type = "t2.micro"
}
বাস্তবে AWS resource অনুযায়ী সঠিক AMI, provider এবং অন্যান্য configuration দিতে হবে।
Real-Time DevOps Workflow: Node.js Application
এখন একটি বাস্তব scenario দেখা যাক। ধরুন আমরা একটি Node.js web application তৈরি করেছি এবং সেটি production server-এ deploy করতে চাই।
- Developer Node.js application-এর নতুন feature তৈরি করে।
- Developer code Git repository-তে commit করে।
- Code GitHub-এ push করা হয়।
- GitHub webhook-এর মাধ্যমে Jenkins pipeline trigger হয়।
- Jenkins repository থেকে latest code pull করে।
- Unit tests চালানো হয়, যেমন Jest বা Mocha।
- Tests সফল হলে application-এর Docker image build করা হয়।
- Docker image Docker Hub বা অন্য container registry-তে push করা হয়।
- Terraform প্রয়োজন হলে cloud infrastructure provision বা update করে।
- Ansible server configuration বা deployment automation করতে পারে।
- Kubernetes image ব্যবহার করে updated application deploy করতে পারে।
- Prometheus application এবং infrastructure metrics collect করে।
- Grafana monitoring dashboard-এ metrics দেখায়।
- সমস্যা হলে Alertmanager notification পাঠাতে পারে।
Complete DevOps Pipeline
Developer
↓
Git Commit
↓
GitHub
↓
Jenkins / GitHub Actions
↓
Build
↓
Automated Tests
↓
Docker Image
↓
Docker Registry
↓
Terraform / Ansible
↓
Kubernetes / Server
↓
Production
↓
Prometheus
↓
Grafana
↓
Alertmanager
↓
Continuous Feedback
↺
এই Workflow-তে Docker-এর কাজ কী?
Docker application-কে একটি isolated container-এর মধ্যে package করে। Application-এর প্রয়োজনীয় dependencies এবং runtime environment-এর কারণে “আমার computer-এ কাজ করে কিন্তু server-এ কাজ করে না” ধরনের সমস্যা কমাতে Docker সাহায্য করে।
এই Workflow-তে Kubernetes-এর কাজ কী?
Kubernetes containerized applications deploy, scale, restart এবং manage করতে সাহায্য করে। অনেক container এবং server থাকলে Kubernetes application management সহজ করে।
Terraform এবং Ansible-এর মধ্যে পার্থক্য কী?
Terraform মূলত infrastructure provision এবং manage করার জন্য ব্যবহৃত হয়। অন্যদিকে Ansible server configuration, software installation এবং automation-এর জন্য বেশি ব্যবহৃত হয়।
DevOps-এর প্রধান সুবিধা
- Faster Delivery: নতুন feature দ্রুত production-এ release করা যায়।
- Automation: Repetitive manual কাজ কমানো যায়।
- Better Collaboration: Development এবং Operations team-এর মধ্যে collaboration বাড়ে।
- Early Bug Detection: Automated testing-এর মাধ্যমে সমস্যা দ্রুত ধরা যায়।
- Reliable Deployment: Standardized deployment process তৈরি করা যায়।
- Continuous Feedback: Production monitoring থেকে দ্রুত feedback পাওয়া যায়।
- Scalability: Cloud এবং container technologies ব্যবহার করে application scale করা সহজ হয়।
DevOps মনে রাখার সহজ Formula
DevOps = Collaboration + Automation + CI/CD + Monitoring
Developer
+
Operations
+
Automation
+
Continuous Feedback
=
DevOps
Pro Tips
- DevOps কোনো single tool নয় — এটি culture, practices এবং technology-এর combination।
- CI মূলত code integration, build এবং testing automate করতে সাহায্য করে।
- CD application release বা deployment process automate করতে সাহায্য করে।
- Docker application containerize করে।
- Kubernetes containerized applications manage করে।
- Terraform infrastructure code দিয়ে manage করতে সাহায্য করে।
- Monitoring production system-এর health এবং performance বুঝতে সাহায্য করে।
Day 01 Summary
আজকের lesson-এ আমরা DevOps-এর basic concept, SDLC বনাম DevOps, CI/CD এবং DevOps ecosystem-এর গুরুত্বপূর্ণ tools সম্পর্কে জেনেছি। একটি real-world Node.js application কীভাবে GitHub থেকে CI/CD pipeline, Docker, Terraform, Ansible, Kubernetes এবং monitoring tools-এর মাধ্যমে production-এ যেতে পারে সেটিও দেখেছি।
DevOps শেখার সময় একসাথে সব tools শেখার প্রয়োজন নেই। প্রথমে Linux, Git, GitHub এবং basic networking ভালোভাবে বুঝে তারপর Docker, CI/CD, cloud, Terraform, Kubernetes এবং monitoring-এর দিকে এগিয়ে যাওয়া ভালো।
Frequently Asked Questions (FAQ)
DevOps কী?
DevOps হলো software development এবং IT operations-এর মধ্যে collaboration, automation, continuous delivery এবং monitoring-এর মাধ্যমে software দ্রুত ও নির্ভরযোগ্যভাবে deliver করার approach।
DevOps কি কোনো programming language?
না। DevOps কোনো programming language নয়। এটি software development ও operations process উন্নত করার একটি culture, methodology এবং technology-based approach।
CI/CD-এর অর্থ কী?
CI-এর অর্থ Continuous Integration। CD বলতে Continuous Delivery অথবা Continuous Deployment বোঝাতে পারে। CI/CD software build, test এবং delivery/deployment process automate করতে সাহায্য করে।
DevOps শেখার জন্য প্রথমে কী শিখব?
Beginner হলে প্রথমে Linux basics, Git, GitHub, basic networking এবং command line শেখা ভালো। এরপর Docker, CI/CD, cloud, Terraform, Kubernetes এবং monitoring শেখা যেতে পারে।
Docker কি DevOps-এর জন্য প্রয়োজন?
Docker DevOps ecosystem-এর একটি গুরুত্বপূর্ণ technology, বিশেষ করে application containerization এবং consistent deployment-এর জন্য। তবে DevOps শিখতে Docker-ই একমাত্র technology নয়।
Kubernetes কেন ব্যবহার করা হয়?
Kubernetes containerized applications deploy, scale, update এবং manage করার জন্য ব্যবহৃত হয়। বড় বা distributed application environment-এ এটি বিশেষভাবে উপকারী।
Jenkins এবং GitHub Actions কী?
Jenkins এবং GitHub Actions দুটিই automation এবং CI/CD workflow তৈরি করতে ব্যবহার করা যায়। Jenkins বিভিন্ন environment-এ flexible automation-এর জন্য পরিচিত, আর GitHub Actions GitHub repository-এর সাথে closely integrated।
Terraform কী?
Terraform হলো Infrastructure as Code (IaC) tool। এটি configuration code ব্যবহার করে cloud এবং অন্যান্য infrastructure resource provision ও manage করতে সাহায্য করে।
Conclusion
DevOps-এর মূল লক্ষ্য হলো development থেকে production পর্যন্ত software delivery process-কে faster, automated, reliable এবং continuously monitored করা। DevOps শেখার জন্য শুধু tools-এর নাম মুখস্থ না করে একটি complete workflow বুঝতে হবে।
Plan → Code → Build → Test → Release → Deploy → Operate → Monitor → Feedback — এই continuous lifecycle বুঝতে পারলেই DevOps-এর foundation অনেকটা পরিষ্কার হয়ে যাবে।