What is Infrastructure as a Code?

By: Kaung Thant Lwin On: Jan 30, 2020 DevOps 140

ဒီ Infrastructure as a code ဆိုတဲ့ စကားလုံးကို အခု နည်းပညာနယ်ပယ်မှာ မကြာခဏ ကြားလာရပြီ ဖြစ်ပါတယ်။ ဘာလဲဆိုတာ မသိသေးတဲ့သူတွေအတွက် ရည်ရွယ်ပြီး နားလည်လွယ်ဖို့ ရှင်းပြပေးခြင်းပဲဖြစ်ပါတယ်။ ကျွန်တော် ကိုယ်တိုင်ကလည်း Expert မဟုတ်တဲ့အတွက် တချို့အမှားတွေကို နားလည်ပေးမယ်လို့ ထင်ပါတယ်။ Blog လည်းမရေးတာကြာပြီဖြစ်လို့ ပြန်ရေးတဲ့အနေနဲ့ website လည်း update လုပ်တဲ့အနေနဲ့ ဒီ Article လေးကို Begineer တွေအတွက်ရည်ရွယ်ပြီးရေးလိုက်ပါတယ်။ 

ယနေ့ခေတ် Software Development process မှာ End-To-End automation ဆိုတာ မသိမဖြစ် မလုပ်မဖြစ်လုပ်ရမယ့် အရာတခုဖြစ်လာပါပြီ။ Testing အတွက် Automation အသုံးပြုကြာတာတွေရှိလာပြီဖြစ်သလို ၊  နောက်ကွယ်ကနေ Run ပေးကြတဲ့ Infrastructure အတွက်လည်း Automation ကလိုအပ်လာပါတယ်။ 

အရင်တုန်းက သုံးခဲ့ကြတဲ့ Replication လုပ်တာတွေကိုလည်း just a part of automation ဆိုပြီးသတ်မှတ်လို့လည်းရပေမယ့် အခုပြောပြချင်တဲ့အရာတွေကတော့ ပိုပြီး Automation ဆိုတာကို ဖော်ညွှန်းပါတယ်။ Automation ဆိုတာက ဖြစ်တည်လာတာက လူတွေအနေနဲ့ ခဏခဏ လုပ်စရာမလိုအောင် ၊ လုပ်ရမယ်ဆိုရင်လည်းတခါထဲ လုပ်လိုက်တာနဲ့ အကုန်ပြီးပြည့်စုံအောင် တီထွင်ကြံဆရင်းနဲ့ဖြစ်ပေါ်လာတာပဲဖြစ်ပါတယ်။ ယနေ့ အိုင်တီ ခေတ်ကြီးထဲမှာက Product ကို Scale လုပ်ဖို့ရာမှာ မြန်မြန်ဆန်ဆန် ပြီးမြောက်ဖို့တင် မဟုတ်ပဲ Functional Level , Physical level တွေမှာပါ performance တွေအတွက်ပါ မြန်ဆန်ဖို့ လိုအပ်လာကြပါပြီ။ ဒါကြောင့်ဖို့ Infrastructure as a Code ဆိုတော ဖြစ်လာတယ်လို့ပဲ ယူဆကြတောပေါ့ဗျာ။ 

Infrastructure as a Code ဆိုတာဘာလဲ? 

ကျွန်တော်တို့ အထူးသဖြင့် SysAdmin တွေ နေ့ဓဒူဝ manual ပြုလုပ်ရတဲ့ Server create လုပ်တယ် လိုအပ်တဲ့ Technology stack ကိုထည့်တယ် Set up လုပ်တယ် ဘယ်လောက် RAM တွေသုံးမယ် Storage ဘယ်လောက်စသည်ဖြင့် သတ်မှတ်ပြီးလုပ်ကြတဲ့အရာတွေကို Manual process ကနေ အလိုအလျောက် manage လုပ်မယ့် Provison လုပ်ပေးမယ့် အရာတခုပဲဖြစ်ပါတယ်။ ပုံမှန်အားဖြင့် Infrastructure တခုမှာဆို databases တွေပါမယ် server တွေရှိမယ် လိုအပ်တဲ့ applications တွေပါမယ် နောက်ပြီး interlinking လုပ်ပေးထားတဲ့ Networks တွေပါတယ် စသည့် infrastructure components တွေကို ပိုပြီးမြန်မြန်ဆန်ဆန် အလွယ်တကူ ပြုလုပ်ပေးတဲ့ စတဲ့ Components တွေကို Application တခုလိုပဲသဘောထားပြီး Code လေးနဲ့ handle လုပ်ခြင်းပဲဖြစ်ပါတယ်။ အဓိကအားဖြင့်တော့ infra နဲ့ပတ်သတ်တဲ့ Configuration ကို Manage လုပ်ပေးတဲ့ Configuration Tools လို့ပဲမှတ်ယူလို့ရပါတယ်။


ဒီလိုမျိုး IaC ကိုသုံးခြင်းအားဖြင့် System Admin အတွေနဲ့ထပ်တလဲလဲ Deploy လုပ်ပေးရခြင်း Set up လုပ်ပေးရခြင်းတွေနည်းသွားပြီး Developer တွေအနေနဲ့လည်း Ticket တွေဖွင့်စရာလည်းမလို SysAdmin တွေအားမအားလည်းစောင့်စရာမလိုပဲ အလွယ်တူ IaC ကိုသုံးခြင်းအားဖြင့် Infra ကို run နိုင်သွားပါလိမ့်မယ်။ 

ယနေ့ခေတ်ဟာ Cloud ခေတ်ဖြစ်တာနဲ့အညီ ကျွန်တော်တို့တွေအနေနဲ့လည်း IaC ကိုသုံးခြင်းအားဖြင့် Cloud တွေမှာ မိမိတို့ရဲ့ Services တွေကို အလွယ်တကူ Deploy လုပ်နိုင် Deliver လုပ်နိုင်သွားပါတယ်။  Cloud တော်တော်များများမှာလည်း ကိုယ်ပိုင် IaC Service တွေကို provide လုပ်ပေးထားကြပါတယ်။ Opensource တွေလည်းရှိပါတယ်။

စိတ်ဝင်စားတဲ့လူတွေအနေနဲ့လေ့လာနိုင်ဖို့ ယနေ့ခေတ်မှာ လူသုံးများတဲ့ အသုံးပြုဖို့လိုအပ်တဲ့ IaC Tools တွေကို ဖော်ပြပေးချင်ပါတယ်။ 


1.Terraform

2. Red Hat ရဲ့  Ansible 

3. AWS ရဲ့ Cloud Formation 

4. Azure Cloud ရဲ့ Resource Manager 

5. Google Cloud ရဲ့  Deployment Manager  

6. Chef တို့  Puppet  အစရှိသည်တို့လည်း ရှိပါသေးတယ်။ 


ကျွန်တော် အနေနဲ့ ကတော့ Terraform ကို သဘောကျမိဆုံးဖြစ်ပါတယ်။ Cloud Formation ရော Ansible ရောပါသုံးဖြစ်ပါတယ်။ နောက်အားတဲ့အချိန်တွေကြရင် Terraform နဲ့ပတ်သတ်ပြီး IaC အသုံးပြုပုံလေးတွေကို Tutorial လေးတွေလုပ်ပေးပါအုံးမယ်။ 

ဖတ်ရှူ့သူအားလုံးကို ကျေးဇူးတင်ပါတယ်။ 

ကောင်းသန့်လွင် || L33t Dev