Infrastructure as Code: plan, state ও খরচের হিসাব
Infrastructure as Code and Cost Estimation
এই পাঠের সূচিপত্র
এই পাঠে যা শিখবেন
- Declarative infrastructure ও state বোঝা
- Plan review এবং secret handling আলাদা করা
- Capacity assumption থেকে cost model তৈরি
সমস্যা দিয়ে শুরু
Staging-এ firewall rule বদলানো হয়েছে, production-এ কে কী করেছিল কেউ জানে না। মাস শেষে network bill compute-এর চেয়েও বেশি। Infrastructure code-এ রাখলে পরিবর্তন review করা যায়; cost model থাকলে expensive assumption আগেই ধরা যায়। তবে repository-তে configuration থাকলেই real environment একই state-এ আছে বা secret নিরাপদ আছে বলা যায় না।
সহজ করে বুঝি
Infrastructure as Code desired infrastructure version control-এ প্রকাশ করে। Tool current state-এর সঙ্গে desired state মিলিয়ে plan ও apply করে। State-এ resource identity এবং sensitive value থাকতে পারে; তাই protected remote storage, locking ও access control দরকার। Cost estimation-এ compute hours, storage growth, requests, backup retention, cross-zone এবং internet egress আলাদা করুন। সব সংখ্যা workload assumption, verified bill নয়।
পরিচিত একটি উপমা
বাড়ির blueprint আর material estimate পাশাপাশি রাখার মতো। Drawing review করা যায়, কিন্তু নির্মাণের বাস্তব পরিবর্তন drawing-এ না ফিরলে drift হয়। তালায় রাখা store হিসাবের মতো IaC state-ও সবার পড়ার public file নয়।
নকশাটি দেখুন
Diagram লোড হচ্ছে…
Diagram-এর text flow দেখুন
flowchart LR C[Reviewed configuration] --> P[Plan diff] S[Protected state] --> P P --> A[Approved apply] A --> R[Cloud resources] R --> B[Usage and billing review]
Code change থেকে plan আসে, state existing resource চিহ্নিত করতে সাহায্য করে। Apply-এর আগে destructive action review হয়। Resource তৈরি হলে usage monitoring cost assumption যাচাই করে। Manual console change হলে drift detect ও reconcile করতে হবে। CI credential-এর permission সব cloud service-এর admin হওয়ার প্রয়োজন নেই।
PHP ও Laravel-এ প্রয়োগ
একটি Laravel console calculation fragment; সব unit price illustrative input, কোনো provider quote নয়। Dollars বা টাকা যেটি নেবেন সব rate একই currency-তে দিন। Quantity ও unit স্পষ্ট রাখলে estimate review করা সহজ হয়।
$assumptions = [
'instances' => 2,
'hours' => 730,
'hourly_rate' => 0.05,
'egress_gb' => 100,
'egress_rate' => 0.09,
];
$compute = $assumptions['instances'] * $assumptions['hours']
* $assumptions['hourly_rate'];
$egress = $assumptions['egress_gb'] * $assumptions['egress_rate'];
$estimate = $compute + $egress;সুবিধা, সীমাবদ্ধতা ও trade-off
Code review reproducibility বাড়ায়, কিন্তু tooling শেখা ও state recovery-এর কাজ যোগ হয়। Small environment-এ অতিরিক্ত abstraction review কঠিন করতে পারে। Cheapest region latency বা compliance requirement পূরণ নাও করতে পারে। High availability-এর duplicate capacity খরচ deliberate সিদ্ধান্ত; cost কাটতে গিয়ে সব replica এক failure domain-এ জড়ো করা ঠিক নয়।
সাধারণ ভুল
- State file বা cloud key public repository-তে রাখা।
- Plan না দেখে destructive apply চালানো।
- Backup, egress এবং observability bill বাদ দেওয়া।
আরও একটু গভীরে
Budget alert hard spending limit নয়; billing data দেরি করেও আসতে পারে। Environment tags owner ও cost attribution সহজ করে। Autoscaling-এর maximum instance, storage lifecycle ও retention policy runaway cost সীমিত করতে সাহায্য করে। Reserved capacity বা commitment নেওয়ার আগে workload স্থিতিশীল কি না মাপুন। Emergency manual change-এর পরে code ও state reconcile করার runbook রাখুন।
মনে রাখুন
IaC পরিবর্তন reviewযোগ্য করে; protected state, drift detection এবং unit-ভিত্তিক cost হিসাব অপরিহার্য।
নিজে চেষ্টা করুন
একটি দুই-replica Laravel service-এর মাসিক cost sheet লিখুন। Compute ছাড়াও database, backup, CDN ও logs ধরুন। Traffic দ্বিগুণ হলে কোন cost linear এবং কোনটি stepwise বাড়ে তা ব্যাখ্যা করুন।
নিজের বোঝা যাচাই করুন
1. IaC মানেই সব automatic apply?
না। Plan review, permission ও environment approval workflow design করতে হয়। Automation ভুল দ্রুত ছড়াতেও পারে।
2. State sensitive কেন?
Resource attribute বা secret value সেখানে থাকতে পারে। Encryption, access control ও recovery policy দরকার।
3. Budget alert কি খরচ বন্ধ করে?
সাধারণত notification দেয়; enforcement আলাদা। Service quota ও application limits পরিকল্পনা করুন।
4. Estimate ও bill এক?
Estimate assumptions-এর model। Actual usage, pricing tiers, taxes ও transfer path bill বদলাতে পারে।
5. Drift কী?
Desired code ও বাস্তব configuration-এর অমিল। Manual emergency change পরে reconcile না করলে পরের apply অপ্রত্যাশিত হতে পারে।
আরও পড়ুন
এই পাঠের কুইজ
এই পাঠ থেকে ২টি প্রশ্ন। উত্তর দিয়ে ব্যাখ্যা দেখুন; অধ্যায়ের কুইজ আলাদাভাবে দিতে হবে।
এই পাঠের ২টি প্রশ্নের উত্তর দিন। পাস করতে দুটিই সঠিক হতে হবে।
জমা দেওয়ার পর সঠিক উত্তর ও ব্যাখ্যা দেখবেন। ফলাফল এই ব্রাউজারে সংরক্ষিত থাকবে। অনুশীলনের ফল অধ্যায় সম্পন্নের হিসাবে যোগ হয় না।
অগ্রগতি এই ব্রাউজারে সংরক্ষিত থাকে। শুধু পাঠ খুললে সম্পন্ন হয় না।