[{"data":1,"prerenderedAt":2129},["ShallowReactive",2],{"blog-list-en":3},[4,1458],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"date":11,"slug":12,"author":13,"image":14,"tags":15,"language":21,"format":22,"body":23,"_type":1452,"_id":1453,"_source":1454,"_file":1455,"_stem":1456,"_extension":1457},"/en/blog/2026-04-11-devops-consultant-vs-internal-team","blog",false,"","DevOps consultant vs internal platform team: cost, timing, and when to choose each","For most companies under 100 engineers, hiring a senior DevOps consultant is usually a faster and lower-risk way to fix infrastructure bottlenecks than building an internal platform team too early.","2026-04-11","devops-consultant-vs-internal-team","Alejandro Rodríguez","/og-image.png",[16,17,18,19,20],"consulting","cost-comparison","platform-engineering","hiring","devops","en","decision-post",{"type":24,"children":25,"toc":1402},"root",[26,34,48,53,58,65,73,113,121,144,149,155,162,167,172,215,226,232,237,242,280,285,291,296,301,307,312,317,340,345,383,388,394,405,410,438,443,448,454,460,465,470,507,513,546,552,575,580,586,591,596,602,625,631,659,664,670,675,680,685,708,714,737,743,771,776,782,793,798,806,812,817,822,827,833,838,843,848,854,859,864,887,892,898,903,941,947,954,959,987,992,998,1003,1008,1013,1046,1052,1057,1090,1095,1101,1106,1134,1139,1145,1150,1178,1183,1189,1194,1200,1223,1229,1252,1258,1281,1287,1293,1298,1304,1309,1315,1320,1326,1331,1337,1342,1348,1359,1364,1369,1374,1397],{"type":27,"tag":28,"props":29,"children":31},"element","h1",{"id":30},"devops-consultant-vs-internal-platform-team-cost-timing-and-when-to-choose-each",[32],{"type":33,"value":9},"text",{"type":27,"tag":35,"props":36,"children":37},"p",{},[38,40,46],{"type":33,"value":39},"If you are deciding between hiring a DevOps consultant, hiring one internal DevOps engineer, or building a platform team, the right answer usually depends on ",{"type":27,"tag":41,"props":42,"children":43},"strong",{},[44],{"type":33,"value":45},"timing, operating maturity, and cost to useful outcome",{"type":33,"value":47},".",{"type":27,"tag":35,"props":49,"children":50},{},[51],{"type":33,"value":52},"My default view is simple: for most companies under 100 engineers, a senior DevOps consultant is the better first move. A platform team usually makes sense later, once infrastructure work is continuous, shared across multiple teams, and important enough to justify a real internal product function.",{"type":27,"tag":35,"props":54,"children":55},{},[56],{"type":33,"value":57},"AstralDeploy is a senior independent cloud platform and FinOps consultancy focused on AWS, Terraform, CI/CD, cost visibility, and maintainable delivery systems for small and mid-sized teams. That point of view matters here: I am not comparing abstract org charts. I am comparing what tends to work in real environments with limited time, limited engineering bandwidth, and messy infrastructure.",{"type":27,"tag":59,"props":60,"children":62},"h2",{"id":61},"quick-answer",[63],{"type":33,"value":64},"Quick answer",{"type":27,"tag":35,"props":66,"children":67},{},[68],{"type":27,"tag":41,"props":69,"children":70},{},[71],{"type":33,"value":72},"For most startups and SMB engineering teams, hire a DevOps consultant first if:",{"type":27,"tag":74,"props":75,"children":76},"ul",{},[77,83,88,93,98,103,108],{"type":27,"tag":78,"props":79,"children":80},"li",{},[81],{"type":33,"value":82},"deployments are unreliable",{"type":27,"tag":78,"props":84,"children":85},{},[86],{"type":33,"value":87},"AWS accounts are messy",{"type":27,"tag":78,"props":89,"children":90},{},[91],{"type":33,"value":92},"Terraform exists but nobody trusts it",{"type":27,"tag":78,"props":94,"children":95},{},[96],{"type":33,"value":97},"CI/CD is fragile",{"type":27,"tag":78,"props":99,"children":100},{},[101],{"type":33,"value":102},"cloud costs are rising without clear ownership",{"type":27,"tag":78,"props":104,"children":105},{},[106],{"type":33,"value":107},"security basics such as IAM, secrets, backups, or logging are inconsistent",{"type":27,"tag":78,"props":109,"children":110},{},[111],{"type":33,"value":112},"you need senior judgment now, not a 4-6 month hiring cycle",{"type":27,"tag":35,"props":114,"children":115},{},[116],{"type":27,"tag":41,"props":117,"children":118},{},[119],{"type":33,"value":120},"Build an internal platform team later if:",{"type":27,"tag":74,"props":122,"children":123},{},[124,129,134,139],{"type":27,"tag":78,"props":125,"children":126},{},[127],{"type":33,"value":128},"you already have multiple product teams with repeated shared needs",{"type":27,"tag":78,"props":130,"children":131},{},[132],{"type":33,"value":133},"platform work is continuous rather than project-based",{"type":27,"tag":78,"props":135,"children":136},{},[137],{"type":33,"value":138},"internal users need self-service tooling, paved roads, and guardrails",{"type":27,"tag":78,"props":140,"children":141},{},[142],{"type":33,"value":143},"leadership is ready to fund and manage platform work as an internal product",{"type":27,"tag":35,"props":145,"children":146},{},[147],{"type":33,"value":148},"That is the short version. The rest of this post explains why.",{"type":27,"tag":59,"props":150,"children":152},{"id":151},"what-is-a-devops-consultant-and-what-is-a-platform-team",[153],{"type":33,"value":154},"What is a DevOps consultant, and what is a platform team?",{"type":27,"tag":156,"props":157,"children":159},"h3",{"id":158},"what-a-devops-consultant-does",[160],{"type":33,"value":161},"What a DevOps consultant does",{"type":27,"tag":35,"props":163,"children":164},{},[165],{"type":33,"value":166},"A DevOps consultant is an external senior operator who helps a company improve how it builds, deploys, secures, observes, and runs systems.",{"type":27,"tag":35,"props":168,"children":169},{},[170],{"type":33,"value":171},"In practice, that usually means work such as:",{"type":27,"tag":74,"props":173,"children":174},{},[175,180,185,190,195,200,205,210],{"type":27,"tag":78,"props":176,"children":177},{},[178],{"type":33,"value":179},"AWS architecture cleanup",{"type":27,"tag":78,"props":181,"children":182},{},[183],{"type":33,"value":184},"Terraform refactoring and infrastructure-as-code standards",{"type":27,"tag":78,"props":186,"children":187},{},[188],{"type":33,"value":189},"CI/CD redesign",{"type":27,"tag":78,"props":191,"children":192},{},[193],{"type":33,"value":194},"IAM and secrets hardening",{"type":27,"tag":78,"props":196,"children":197},{},[198],{"type":33,"value":199},"observability improvements",{"type":27,"tag":78,"props":201,"children":202},{},[203],{"type":33,"value":204},"backup and recovery validation",{"type":27,"tag":78,"props":206,"children":207},{},[208],{"type":33,"value":209},"cost review and pragmatic FinOps controls",{"type":27,"tag":78,"props":211,"children":212},{},[213],{"type":33,"value":214},"migration planning and execution",{"type":27,"tag":35,"props":216,"children":217},{},[218,220,225],{"type":33,"value":219},"The main value is not just hands-on implementation. It is ",{"type":27,"tag":41,"props":221,"children":222},{},[223],{"type":33,"value":224},"diagnosis, prioritization, and trade-off judgment",{"type":33,"value":47},{"type":27,"tag":156,"props":227,"children":229},{"id":228},"what-an-internal-platform-team-does",[230],{"type":33,"value":231},"What an internal platform team does",{"type":27,"tag":35,"props":233,"children":234},{},[235],{"type":33,"value":236},"A platform team is an internal engineering team that builds and operates shared systems, standards, and workflows for other engineering teams.",{"type":27,"tag":35,"props":238,"children":239},{},[240],{"type":33,"value":241},"A real platform team usually owns some mix of:",{"type":27,"tag":74,"props":243,"children":244},{},[245,250,255,260,265,270,275],{"type":27,"tag":78,"props":246,"children":247},{},[248],{"type":33,"value":249},"deployment standards",{"type":27,"tag":78,"props":251,"children":252},{},[253],{"type":33,"value":254},"internal developer platforms",{"type":27,"tag":78,"props":256,"children":257},{},[258],{"type":33,"value":259},"reusable infrastructure patterns",{"type":27,"tag":78,"props":261,"children":262},{},[263],{"type":33,"value":264},"access controls and guardrails",{"type":27,"tag":78,"props":266,"children":267},{},[268],{"type":33,"value":269},"observability foundations",{"type":27,"tag":78,"props":271,"children":272},{},[273],{"type":33,"value":274},"runtime standards",{"type":27,"tag":78,"props":276,"children":277},{},[278],{"type":33,"value":279},"developer self-service workflows",{"type":27,"tag":35,"props":281,"children":282},{},[283],{"type":33,"value":284},"This is not just \"the people who manage Terraform\". A good platform team behaves like an internal product team with users, roadmaps, support expectations, and service boundaries.",{"type":27,"tag":156,"props":286,"children":288},{"id":287},"where-platform-engineering-fits",[289],{"type":33,"value":290},"Where platform engineering fits",{"type":27,"tag":35,"props":292,"children":293},{},[294],{"type":33,"value":295},"Platform engineering is the discipline behind building internal platforms that reduce repeated operational work and make delivery safer and faster for multiple teams.",{"type":27,"tag":35,"props":297,"children":298},{},[299],{"type":33,"value":300},"It becomes useful when several teams need the same guardrails and workflows. It becomes wasteful when a company adopts the language of platform engineering before it has enough scale or repeatability to justify it.",{"type":27,"tag":59,"props":302,"children":304},{"id":303},"the-real-decision-is-about-timing-not-ideology",[305],{"type":33,"value":306},"The real decision is about timing, not ideology",{"type":27,"tag":35,"props":308,"children":309},{},[310],{"type":33,"value":311},"Most teams are not deciding between two equally mature options.",{"type":27,"tag":35,"props":313,"children":314},{},[315],{"type":33,"value":316},"They are deciding between:",{"type":27,"tag":74,"props":318,"children":319},{},[320,330],{"type":27,"tag":78,"props":321,"children":322},{},[323,328],{"type":27,"tag":41,"props":324,"children":325},{},[326],{"type":33,"value":327},"buying senior external expertise now",{"type":33,"value":329}," to fix operational debt and improve delivery",{"type":27,"tag":78,"props":331,"children":332},{},[333,338],{"type":27,"tag":41,"props":334,"children":335},{},[336],{"type":33,"value":337},"building internal capability now",{"type":33,"value":339}," before the company is sure what steady-state ownership should look like",{"type":27,"tag":35,"props":341,"children":342},{},[343],{"type":33,"value":344},"That distinction matters because smaller companies usually do not need a platform team yet. They need a short list of painful problems fixed properly:",{"type":27,"tag":74,"props":346,"children":347},{},[348,353,358,363,368,373,378],{"type":27,"tag":78,"props":349,"children":350},{},[351],{"type":33,"value":352},"unreliable deployments",{"type":27,"tag":78,"props":354,"children":355},{},[356],{"type":33,"value":357},"unclear AWS account structure",{"type":27,"tag":78,"props":359,"children":360},{},[361],{"type":33,"value":362},"poor IAM hygiene",{"type":27,"tag":78,"props":364,"children":365},{},[366],{"type":33,"value":367},"weak backup assumptions",{"type":27,"tag":78,"props":369,"children":370},{},[371],{"type":33,"value":372},"no cost visibility",{"type":27,"tag":78,"props":374,"children":375},{},[376],{"type":33,"value":377},"inconsistent monitoring and alerting",{"type":27,"tag":78,"props":379,"children":380},{},[381],{"type":33,"value":382},"infrastructure knowledge trapped in one engineer's head",{"type":27,"tag":35,"props":384,"children":385},{},[386],{"type":33,"value":387},"Those are usually operations discipline problems before they are org design problems.",{"type":27,"tag":59,"props":389,"children":391},{"id":390},"why-this-choice-matters-financially",[392],{"type":33,"value":393},"Why this choice matters financially",{"type":27,"tag":35,"props":395,"children":396},{},[397,399,404],{"type":33,"value":398},"The expensive part is not just salary or consultant rates. The expensive part is ",{"type":27,"tag":41,"props":400,"children":401},{},[402],{"type":33,"value":403},"how long it takes to get to a useful outcome",{"type":33,"value":47},{"type":27,"tag":35,"props":406,"children":407},{},[408],{"type":33,"value":409},"When companies hire for platform work too early, I often see the same pattern:",{"type":27,"tag":74,"props":411,"children":412},{},[413,418,423,428,433],{"type":27,"tag":78,"props":414,"children":415},{},[416],{"type":33,"value":417},"senior hires spend months untangling basic operational debt",{"type":27,"tag":78,"props":419,"children":420},{},[421],{"type":33,"value":422},"the business commits to tools and abstractions before operating patterns are stable",{"type":27,"tag":78,"props":424,"children":425},{},[426],{"type":33,"value":427},"platform engineers become a support queue instead of a leverage function",{"type":27,"tag":78,"props":429,"children":430},{},[431],{"type":33,"value":432},"cloud costs continue drifting because ownership is still unclear",{"type":27,"tag":78,"props":434,"children":435},{},[436],{"type":33,"value":437},"the company pays senior salaries without removing the main delivery bottlenecks",{"type":27,"tag":35,"props":439,"children":440},{},[441],{"type":33,"value":442},"The opposite mistake is also common: teams delay getting help, hope that product engineers will \"sort infra out later\", and accumulate brittle systems that become more expensive to fix once growth arrives.",{"type":27,"tag":35,"props":444,"children":445},{},[446],{"type":33,"value":447},"So this is not just a staffing choice. It is a decision about when to buy expertise, when to build capability, and how much complexity the business can absorb.",{"type":27,"tag":59,"props":449,"children":451},{"id":450},"option-1-hire-a-devops-consultant",[452],{"type":33,"value":453},"Option 1: hire a DevOps consultant",{"type":27,"tag":156,"props":455,"children":457},{"id":456},"when-this-option-is-strongest",[458],{"type":33,"value":459},"When this option is strongest",{"type":27,"tag":35,"props":461,"children":462},{},[463],{"type":33,"value":464},"Hiring a DevOps consultant is usually the best option when the company needs fast senior-level judgment on a defined set of infrastructure, security, cost, or delivery problems.",{"type":27,"tag":35,"props":466,"children":467},{},[468],{"type":33,"value":469},"It works especially well for:",{"type":27,"tag":74,"props":471,"children":472},{},[473,478,483,487,492,497,502],{"type":27,"tag":78,"props":474,"children":475},{},[476],{"type":33,"value":477},"AWS account and IAM cleanup",{"type":27,"tag":78,"props":479,"children":480},{},[481],{"type":33,"value":482},"Terraform migration or refactoring",{"type":27,"tag":78,"props":484,"children":485},{},[486],{"type":33,"value":189},{"type":27,"tag":78,"props":488,"children":489},{},[490],{"type":33,"value":491},"deployment reliability issues",{"type":27,"tag":78,"props":493,"children":494},{},[495],{"type":33,"value":496},"cloud cost visibility and waste reduction",{"type":27,"tag":78,"props":498,"children":499},{},[500],{"type":33,"value":501},"security hardening before audits or enterprise due diligence",{"type":27,"tag":78,"props":503,"children":504},{},[505],{"type":33,"value":506},"documenting and stabilizing operational basics",{"type":27,"tag":156,"props":508,"children":510},{"id":509},"strengths-of-a-devops-consultant",[511],{"type":33,"value":512},"Strengths of a DevOps consultant",{"type":27,"tag":74,"props":514,"children":515},{},[516,521,526,531,536,541],{"type":27,"tag":78,"props":517,"children":518},{},[519],{"type":33,"value":520},"fastest path to experienced judgment",{"type":27,"tag":78,"props":522,"children":523},{},[524],{"type":33,"value":525},"lower fixed cost than building a team too early",{"type":27,"tag":78,"props":527,"children":528},{},[529],{"type":33,"value":530},"useful when the main problem is prioritization, not raw execution capacity",{"type":27,"tag":78,"props":532,"children":533},{},[534],{"type":33,"value":535},"easier to scale up or down as needs change",{"type":27,"tag":78,"props":537,"children":538},{},[539],{"type":33,"value":540},"can transfer patterns learned across many environments",{"type":27,"tag":78,"props":542,"children":543},{},[544],{"type":33,"value":545},"effective for focused remediation and foundational work",{"type":27,"tag":156,"props":547,"children":549},{"id":548},"weaknesses-of-a-devops-consultant",[550],{"type":33,"value":551},"Weaknesses of a DevOps consultant",{"type":27,"tag":74,"props":553,"children":554},{},[555,560,565,570],{"type":27,"tag":78,"props":556,"children":557},{},[558],{"type":33,"value":559},"does not automatically create permanent internal capacity",{"type":27,"tag":78,"props":561,"children":562},{},[563],{"type":33,"value":564},"requires deliberate documentation and knowledge transfer",{"type":27,"tag":78,"props":566,"children":567},{},[568],{"type":33,"value":569},"can create dependency if scope and ownership are vague",{"type":27,"tag":78,"props":571,"children":572},{},[573],{"type":33,"value":574},"is a poor fit for an open-ended \"own all infra forever\" expectation",{"type":27,"tag":35,"props":576,"children":577},{},[578],{"type":33,"value":579},"A good consultant should leave behind clearer systems, better documentation, better operating decisions, and less key-person risk.",{"type":27,"tag":59,"props":581,"children":583},{"id":582},"option-2-hire-one-internal-devops-or-platform-engineer",[584],{"type":33,"value":585},"Option 2: hire one internal DevOps or platform engineer",{"type":27,"tag":156,"props":587,"children":589},{"id":588},"when-this-option-is-strongest-1",[590],{"type":33,"value":459},{"type":27,"tag":35,"props":592,"children":593},{},[594],{"type":33,"value":595},"Hiring one internal DevOps engineer can work well when infrastructure work is clearly ongoing, leadership wants direct internal ownership, and the environment is mature enough that the role will not collapse into \"fix every operational problem alone\".",{"type":27,"tag":156,"props":597,"children":599},{"id":598},"strengths-of-one-internal-hire",[600],{"type":33,"value":601},"Strengths of one internal hire",{"type":27,"tag":74,"props":603,"children":604},{},[605,610,615,620],{"type":27,"tag":78,"props":606,"children":607},{},[608],{"type":33,"value":609},"builds internal ownership from day one",{"type":27,"tag":78,"props":611,"children":612},{},[613],{"type":33,"value":614},"supports day-to-day collaboration with product engineering",{"type":27,"tag":78,"props":616,"children":617},{},[618],{"type":33,"value":619},"fits better when infrastructure work is continuous",{"type":27,"tag":78,"props":621,"children":622},{},[623],{"type":33,"value":624},"can become the stable operator after an initial cleanup phase",{"type":27,"tag":156,"props":626,"children":628},{"id":627},"weaknesses-of-one-internal-hire",[629],{"type":33,"value":630},"Weaknesses of one internal hire",{"type":27,"tag":74,"props":632,"children":633},{},[634,639,644,649,654],{"type":27,"tag":78,"props":635,"children":636},{},[637],{"type":33,"value":638},"senior infrastructure hiring is slow and expensive",{"type":27,"tag":78,"props":640,"children":641},{},[642],{"type":33,"value":643},"one person rarely fixes structural problems alone",{"type":27,"tag":78,"props":645,"children":646},{},[647],{"type":33,"value":648},"the role often becomes a dumping ground for cloud, CI/CD, networking, security, and compliance work",{"type":27,"tag":78,"props":650,"children":651},{},[652],{"type":33,"value":653},"it is easy to hire too junior for a role that really needs deep judgment",{"type":27,"tag":78,"props":655,"children":656},{},[657],{"type":33,"value":658},"replacing one bottleneck with another is common",{"type":27,"tag":35,"props":660,"children":661},{},[662],{"type":33,"value":663},"This option often looks safer because it feels permanent. But permanence is not the same as leverage.",{"type":27,"tag":59,"props":665,"children":667},{"id":666},"option-3-build-an-internal-platform-team",[668],{"type":33,"value":669},"Option 3: build an internal platform team",{"type":27,"tag":156,"props":671,"children":673},{"id":672},"when-this-option-is-strongest-2",[674],{"type":33,"value":459},{"type":27,"tag":35,"props":676,"children":677},{},[678],{"type":33,"value":679},"An internal platform team makes sense when multiple engineering teams need shared infrastructure workflows, internal tooling, reusable patterns, and operational guardrails.",{"type":27,"tag":35,"props":681,"children":682},{},[683],{"type":33,"value":684},"Typical signals include:",{"type":27,"tag":74,"props":686,"children":687},{},[688,693,698,703],{"type":27,"tag":78,"props":689,"children":690},{},[691],{"type":33,"value":692},"several teams repeatedly solving the same delivery problems",{"type":27,"tag":78,"props":694,"children":695},{},[696],{"type":33,"value":697},"growing demand for self-service environments and deployment standards",{"type":27,"tag":78,"props":699,"children":700},{},[701],{"type":33,"value":702},"increasing governance or compliance requirements",{"type":27,"tag":78,"props":704,"children":705},{},[706],{"type":33,"value":707},"clear need for a dedicated internal product function",{"type":27,"tag":156,"props":709,"children":711},{"id":710},"strengths-of-a-platform-team",[712],{"type":33,"value":713},"Strengths of a platform team",{"type":27,"tag":74,"props":715,"children":716},{},[717,722,727,732],{"type":27,"tag":78,"props":718,"children":719},{},[720],{"type":33,"value":721},"strong long-term model for multi-team engineering organizations",{"type":27,"tag":78,"props":723,"children":724},{},[725],{"type":33,"value":726},"can improve delivery speed and consistency at scale",{"type":27,"tag":78,"props":728,"children":729},{},[730],{"type":33,"value":731},"creates shared standards, paved roads, and reusable workflows",{"type":27,"tag":78,"props":733,"children":734},{},[735],{"type":33,"value":736},"helps reduce duplicated effort across product teams",{"type":27,"tag":156,"props":738,"children":740},{"id":739},"weaknesses-of-a-platform-team",[741],{"type":33,"value":742},"Weaknesses of a platform team",{"type":27,"tag":74,"props":744,"children":745},{},[746,751,756,761,766],{"type":27,"tag":78,"props":747,"children":748},{},[749],{"type":33,"value":750},"highest fixed cost of the three options",{"type":27,"tag":78,"props":752,"children":753},{},[754],{"type":33,"value":755},"requires product thinking, not just infrastructure expertise",{"type":27,"tag":78,"props":757,"children":758},{},[759],{"type":33,"value":760},"easy to overbuild before the business actually needs platform abstractions",{"type":27,"tag":78,"props":762,"children":763},{},[764],{"type":33,"value":765},"can create internal bureaucracy if scope is vague",{"type":27,"tag":78,"props":767,"children":768},{},[769],{"type":33,"value":770},"usually needs multiple experienced hires before it works like a real team",{"type":27,"tag":35,"props":772,"children":773},{},[774],{"type":33,"value":775},"A real platform team is an internal product team. If leadership is not prepared to run it that way, the result is usually disappointing.",{"type":27,"tag":59,"props":777,"children":779},{"id":778},"devops-consultant-vs-internal-team-the-cost-comparison-that-actually-matters",[780],{"type":33,"value":781},"DevOps consultant vs internal team: the cost comparison that actually matters",{"type":27,"tag":35,"props":783,"children":784},{},[785,787,792],{"type":33,"value":786},"The clean comparison is not ",{"type":27,"tag":41,"props":788,"children":789},{},[790],{"type":33,"value":791},"consultant day rate vs salary",{"type":33,"value":47},{"type":27,"tag":35,"props":794,"children":795},{},[796],{"type":33,"value":797},"It is:",{"type":27,"tag":35,"props":799,"children":800},{},[801],{"type":27,"tag":41,"props":802,"children":803},{},[804],{"type":33,"value":805},"cost to useful outcome + ongoing fixed cost + risk of building the wrong thing",{"type":27,"tag":156,"props":807,"children":809},{"id":808},"cost-to-useful-outcome",[810],{"type":33,"value":811},"Cost to useful outcome",{"type":27,"tag":35,"props":813,"children":814},{},[815],{"type":33,"value":816},"A consultant can often start in days.",{"type":27,"tag":35,"props":818,"children":819},{},[820],{"type":33,"value":821},"A senior internal hire may take months to recruit, onboard, and orient.",{"type":27,"tag":35,"props":823,"children":824},{},[825],{"type":33,"value":826},"A platform team takes longer still and usually only works well once standards, demand, and ownership are already reasonably clear.",{"type":27,"tag":156,"props":828,"children":830},{"id":829},"ongoing-fixed-cost",[831],{"type":33,"value":832},"Ongoing fixed cost",{"type":27,"tag":35,"props":834,"children":835},{},[836],{"type":33,"value":837},"An external consultant is variable spend. You can shape the engagement around a project, retainer, or defined monthly scope.",{"type":27,"tag":35,"props":839,"children":840},{},[841],{"type":33,"value":842},"An internal hire creates fixed salary cost, employer costs, management overhead, and recruiting cost.",{"type":27,"tag":35,"props":844,"children":845},{},[846],{"type":33,"value":847},"A platform team multiplies that fixed commitment and only pays off once there is enough recurring internal demand.",{"type":27,"tag":156,"props":849,"children":851},{"id":850},"risk-of-building-the-wrong-thing",[852],{"type":33,"value":853},"Risk of building the wrong thing",{"type":27,"tag":35,"props":855,"children":856},{},[857],{"type":33,"value":858},"This is the part companies underestimate.",{"type":27,"tag":35,"props":860,"children":861},{},[862],{"type":33,"value":863},"If you build a platform function before you understand your real operational bottlenecks, you often get:",{"type":27,"tag":74,"props":865,"children":866},{},[867,872,877,882],{"type":27,"tag":78,"props":868,"children":869},{},[870],{"type":33,"value":871},"tooling without adoption",{"type":27,"tag":78,"props":873,"children":874},{},[875],{"type":33,"value":876},"abstractions without stable standards underneath",{"type":27,"tag":78,"props":878,"children":879},{},[880],{"type":33,"value":881},"internal processes that slow teams down",{"type":27,"tag":78,"props":883,"children":884},{},[885],{"type":33,"value":886},"senior hires spending time on support instead of leverage",{"type":27,"tag":35,"props":888,"children":889},{},[890],{"type":33,"value":891},"In other words, you pay platform-team cost before you have platform-team problems.",{"type":27,"tag":59,"props":893,"children":895},{"id":894},"my-default-recommendation-for-companies-under-100-engineers",[896],{"type":33,"value":897},"My default recommendation for companies under 100 engineers",{"type":27,"tag":35,"props":899,"children":900},{},[901],{"type":33,"value":902},"For most companies under roughly 100 engineers, I recommend this sequence:",{"type":27,"tag":904,"props":905,"children":906},"ol",{},[907,915,925,933],{"type":27,"tag":78,"props":908,"children":909},{},[910],{"type":27,"tag":41,"props":911,"children":912},{},[913],{"type":33,"value":914},"Bring in a senior DevOps consultant to fix the foundations",{"type":27,"tag":78,"props":916,"children":917},{},[918,923],{"type":27,"tag":41,"props":919,"children":920},{},[921],{"type":33,"value":922},"Standardize the basics",{"type":33,"value":924},": AWS account structure, IAM, Terraform, CI/CD, observability, backups, cost controls",{"type":27,"tag":78,"props":926,"children":927},{},[928],{"type":27,"tag":41,"props":929,"children":930},{},[931],{"type":33,"value":932},"Document ownership and operating rules",{"type":27,"tag":78,"props":934,"children":935},{},[936],{"type":27,"tag":41,"props":937,"children":938},{},[939],{"type":33,"value":940},"Then decide whether you need one internal DevOps hire or a real platform team",{"type":27,"tag":156,"props":942,"children":944},{"id":943},"why-this-order-works",[945],{"type":33,"value":946},"Why this order works",{"type":27,"tag":948,"props":949,"children":951},"h4",{"id":950},"_1-early-infrastructure-problems-are-usually-diagnosis-problems",[952],{"type":33,"value":953},"1. Early infrastructure problems are usually diagnosis problems",{"type":27,"tag":35,"props":955,"children":956},{},[957],{"type":33,"value":958},"Smaller companies usually do not lack a team called Platform. They lack clear answers to questions like:",{"type":27,"tag":74,"props":960,"children":961},{},[962,967,972,977,982],{"type":27,"tag":78,"props":963,"children":964},{},[965],{"type":33,"value":966},"what should be standardized first?",{"type":27,"tag":78,"props":968,"children":969},{},[970],{"type":33,"value":971},"which AWS risks matter now versus later?",{"type":27,"tag":78,"props":973,"children":974},{},[975],{"type":33,"value":976},"which Terraform patterns help, and which ones slow changes down?",{"type":27,"tag":78,"props":978,"children":979},{},[980],{"type":33,"value":981},"where is the cloud bill growing for the wrong reasons?",{"type":27,"tag":78,"props":983,"children":984},{},[985],{"type":33,"value":986},"what must change before an audit, customer security review, or compliance effort?",{"type":27,"tag":35,"props":988,"children":989},{},[990],{"type":33,"value":991},"That is senior consulting work. It requires judgment more than headcount.",{"type":27,"tag":948,"props":993,"children":995},{"id":994},"_2-you-want-systems-before-you-add-headcount",[996],{"type":33,"value":997},"2. You want systems before you add headcount",{"type":27,"tag":35,"props":999,"children":1000},{},[1001],{"type":33,"value":1002},"If you hire internally before the operating model is clear, the new hire becomes the system.",{"type":27,"tag":35,"props":1004,"children":1005},{},[1006],{"type":33,"value":1007},"That creates fragility. Decisions stay tribal. Documentation remains partial. Every important change routes through one person.",{"type":27,"tag":35,"props":1009,"children":1010},{},[1011],{"type":33,"value":1012},"A good consulting engagement should leave behind:",{"type":27,"tag":74,"props":1014,"children":1015},{},[1016,1021,1026,1031,1036,1041],{"type":27,"tag":78,"props":1017,"children":1018},{},[1019],{"type":33,"value":1020},"cleaner Terraform structure",{"type":27,"tag":78,"props":1022,"children":1023},{},[1024],{"type":33,"value":1025},"clearer deployment paths",{"type":27,"tag":78,"props":1027,"children":1028},{},[1029],{"type":33,"value":1030},"explicit ownership boundaries",{"type":27,"tag":78,"props":1032,"children":1033},{},[1034],{"type":33,"value":1035},"a prioritized remediation backlog",{"type":27,"tag":78,"props":1037,"children":1038},{},[1039],{"type":33,"value":1040},"runbooks and decision records",{"type":27,"tag":78,"props":1042,"children":1043},{},[1044],{"type":33,"value":1045},"less key-person dependency",{"type":27,"tag":948,"props":1047,"children":1049},{"id":1048},"_3-small-teams-usually-need-boring-infrastructure-not-platform-ambition",[1050],{"type":33,"value":1051},"3. Small teams usually need boring infrastructure, not platform ambition",{"type":27,"tag":35,"props":1053,"children":1054},{},[1055],{"type":33,"value":1056},"What many companies describe as \"we need a platform team\" is often really this:",{"type":27,"tag":74,"props":1058,"children":1059},{},[1060,1065,1070,1075,1080,1085],{"type":27,"tag":78,"props":1061,"children":1062},{},[1063],{"type":33,"value":1064},"repeatable releases",{"type":27,"tag":78,"props":1066,"children":1067},{},[1068],{"type":33,"value":1069},"fewer production surprises",{"type":27,"tag":78,"props":1071,"children":1072},{},[1073],{"type":33,"value":1074},"lower AWS waste",{"type":27,"tag":78,"props":1076,"children":1077},{},[1078],{"type":33,"value":1079},"better secrets and access control",{"type":27,"tag":78,"props":1081,"children":1082},{},[1083],{"type":33,"value":1084},"reliable backups",{"type":27,"tag":78,"props":1086,"children":1087},{},[1088],{"type":33,"value":1089},"enough documentation that engineers are not afraid to touch infrastructure",{"type":27,"tag":35,"props":1091,"children":1092},{},[1093],{"type":33,"value":1094},"That is usually an operations discipline problem. And for small teams, disciplined boring systems are often more valuable than clever internal platforms.",{"type":27,"tag":59,"props":1096,"children":1098},{"id":1097},"when-i-would-choose-an-internal-team-earlier",[1099],{"type":33,"value":1100},"When I would choose an internal team earlier",{"type":27,"tag":35,"props":1102,"children":1103},{},[1104],{"type":33,"value":1105},"I would lean toward internal hiring earlier if:",{"type":27,"tag":74,"props":1107,"children":1108},{},[1109,1114,1119,1124,1129],{"type":27,"tag":78,"props":1110,"children":1111},{},[1112],{"type":33,"value":1113},"the company already has multiple product teams with shared platform needs",{"type":27,"tag":78,"props":1115,"children":1116},{},[1117],{"type":33,"value":1118},"infrastructure changes are continuous rather than episodic",{"type":27,"tag":78,"props":1120,"children":1121},{},[1122],{"type":33,"value":1123},"reliability, compliance, or data residency is becoming a core business constraint",{"type":27,"tag":78,"props":1125,"children":1126},{},[1127],{"type":33,"value":1128},"product delivery is repeatedly blocked by missing internal ownership",{"type":27,"tag":78,"props":1130,"children":1131},{},[1132],{"type":33,"value":1133},"leadership is willing to fund platform work as an internal product function",{"type":27,"tag":35,"props":1135,"children":1136},{},[1137],{"type":33,"value":1138},"In that situation, a consultant can still help, but usually as an accelerator rather than the main answer.",{"type":27,"tag":59,"props":1140,"children":1142},{"id":1141},"when-i-would-avoid-building-a-platform-team-yet",[1143],{"type":33,"value":1144},"When I would avoid building a platform team yet",{"type":27,"tag":35,"props":1146,"children":1147},{},[1148],{"type":33,"value":1149},"I would avoid building a platform team yet if:",{"type":27,"tag":74,"props":1151,"children":1152},{},[1153,1158,1163,1168,1173],{"type":27,"tag":78,"props":1154,"children":1155},{},[1156],{"type":33,"value":1157},"you have fewer than 3-4 product teams",{"type":27,"tag":78,"props":1159,"children":1160},{},[1161],{"type":33,"value":1162},"your biggest issues are still basic AWS hygiene and deployment reliability",{"type":27,"tag":78,"props":1164,"children":1165},{},[1166],{"type":33,"value":1167},"nobody can clearly describe the platform team's internal users and scope",{"type":27,"tag":78,"props":1169,"children":1170},{},[1171],{"type":33,"value":1172},"the initiative is driven by trend-following rather than recurring internal demand",{"type":27,"tag":78,"props":1174,"children":1175},{},[1176],{"type":33,"value":1177},"you cannot define a 12-month platform roadmap with success metrics",{"type":27,"tag":35,"props":1179,"children":1180},{},[1181],{"type":33,"value":1182},"\"Serious companies have platform teams\" is not a strategy.",{"type":27,"tag":59,"props":1184,"children":1186},{"id":1185},"a-practical-decision-framework",[1187],{"type":33,"value":1188},"A practical decision framework",{"type":27,"tag":35,"props":1190,"children":1191},{},[1192],{"type":33,"value":1193},"If you are unsure which route to take, use this framework.",{"type":27,"tag":156,"props":1195,"children":1197},{"id":1196},"choose-a-devops-consultant-if",[1198],{"type":33,"value":1199},"Choose a DevOps consultant if:",{"type":27,"tag":74,"props":1201,"children":1202},{},[1203,1208,1213,1218],{"type":27,"tag":78,"props":1204,"children":1205},{},[1206],{"type":33,"value":1207},"you need results in weeks, not quarters",{"type":27,"tag":78,"props":1209,"children":1210},{},[1211],{"type":33,"value":1212},"the environment is messy and needs diagnosis first",{"type":27,"tag":78,"props":1214,"children":1215},{},[1216],{"type":33,"value":1217},"the work is foundational or remediation-heavy",{"type":27,"tag":78,"props":1219,"children":1220},{},[1221],{"type":33,"value":1222},"you need senior AWS, Terraform, CI/CD, or security judgment without building a team yet",{"type":27,"tag":156,"props":1224,"children":1226},{"id":1225},"choose-one-internal-devops-hire-if",[1227],{"type":33,"value":1228},"Choose one internal DevOps hire if:",{"type":27,"tag":74,"props":1230,"children":1231},{},[1232,1237,1242,1247],{"type":27,"tag":78,"props":1233,"children":1234},{},[1235],{"type":33,"value":1236},"you already understand the main problems",{"type":27,"tag":78,"props":1238,"children":1239},{},[1240],{"type":33,"value":1241},"the work is ongoing and hands-on every week",{"type":27,"tag":78,"props":1243,"children":1244},{},[1245],{"type":33,"value":1246},"you can support the role with clear ownership and realistic scope",{"type":27,"tag":78,"props":1248,"children":1249},{},[1250],{"type":33,"value":1251},"you want continuity after the fundamentals are already mostly defined",{"type":27,"tag":156,"props":1253,"children":1255},{"id":1254},"choose-a-platform-team-if",[1256],{"type":33,"value":1257},"Choose a platform team if:",{"type":27,"tag":74,"props":1259,"children":1260},{},[1261,1266,1271,1276],{"type":27,"tag":78,"props":1262,"children":1263},{},[1264],{"type":33,"value":1265},"multiple teams are blocked by repeated platform gaps",{"type":27,"tag":78,"props":1267,"children":1268},{},[1269],{"type":33,"value":1270},"self-service tooling would remove recurring friction across the organization",{"type":27,"tag":78,"props":1272,"children":1273},{},[1274],{"type":33,"value":1275},"you can define internal users, platform boundaries, roadmap, and service levels",{"type":27,"tag":78,"props":1277,"children":1278},{},[1279],{"type":33,"value":1280},"leadership understands this is a product function, not just an infra backlog",{"type":27,"tag":59,"props":1282,"children":1284},{"id":1283},"faq-devops-consultant-vs-internal-platform-team",[1285],{"type":33,"value":1286},"FAQ: DevOps consultant vs internal platform team",{"type":27,"tag":156,"props":1288,"children":1290},{"id":1289},"is-it-cheaper-to-hire-a-devops-consultant-than-an-internal-platform-team",[1291],{"type":33,"value":1292},"Is it cheaper to hire a DevOps consultant than an internal platform team?",{"type":27,"tag":35,"props":1294,"children":1295},{},[1296],{"type":33,"value":1297},"Usually yes for smaller companies, because a consultant has lower fixed cost and a faster path to useful outcomes. The wrong comparison is consultant rate versus salary. The better comparison is speed, hiring delay, management overhead, and the risk of building a team before you know what it should own.",{"type":27,"tag":156,"props":1299,"children":1301},{"id":1300},"at-what-company-size-does-a-platform-team-make-sense",[1302],{"type":33,"value":1303},"At what company size does a platform team make sense?",{"type":27,"tag":35,"props":1305,"children":1306},{},[1307],{"type":33,"value":1308},"There is no universal threshold, but a platform team usually starts to make sense when you have multiple product teams with repeated shared needs, meaningful delivery friction, and enough internal demand to justify a dedicated product-like function. Headcount alone is not enough; repeated platform demand matters more.",{"type":27,"tag":156,"props":1310,"children":1312},{"id":1311},"should-startups-hire-a-devops-engineer-or-use-a-consultant-first",[1313],{"type":33,"value":1314},"Should startups hire a DevOps engineer or use a consultant first?",{"type":27,"tag":35,"props":1316,"children":1317},{},[1318],{"type":33,"value":1319},"Most startups benefit from a senior consultant first, especially if the main problems are AWS hygiene, CI/CD reliability, Terraform quality, cost control, or security basics. After the foundation is stable, an internal hire is easier to scope and much more likely to succeed.",{"type":27,"tag":156,"props":1321,"children":1323},{"id":1322},"what-is-the-difference-between-devops-consulting-and-platform-engineering",[1324],{"type":33,"value":1325},"What is the difference between DevOps consulting and platform engineering?",{"type":27,"tag":35,"props":1327,"children":1328},{},[1329],{"type":33,"value":1330},"DevOps consulting is usually external, focused on diagnosis, remediation, implementation, and operational improvement. Platform engineering is usually an internal discipline focused on building shared systems and workflows that help multiple engineering teams ship safely and consistently.",{"type":27,"tag":156,"props":1332,"children":1334},{"id":1333},"can-a-consultant-help-build-the-foundation-for-an-internal-platform-team",[1335],{"type":33,"value":1336},"Can a consultant help build the foundation for an internal platform team?",{"type":27,"tag":35,"props":1338,"children":1339},{},[1340],{"type":33,"value":1341},"Yes. In many companies that is the best use of consulting: fix the basics, document standards, reduce key-person dependency, and leave behind clearer ownership so that a later internal hire or platform team starts from a stable base instead of a messy one.",{"type":27,"tag":59,"props":1343,"children":1345},{"id":1344},"final-recommendation",[1346],{"type":33,"value":1347},"Final recommendation",{"type":27,"tag":35,"props":1349,"children":1350},{},[1351,1353,1358],{"type":33,"value":1352},"My bias is straightforward: ",{"type":27,"tag":41,"props":1354,"children":1355},{},[1356],{"type":33,"value":1357},"buy expertise before you build org structure",{"type":33,"value":47},{"type":27,"tag":35,"props":1360,"children":1361},{},[1362],{"type":33,"value":1363},"For most companies under 100 engineers, a senior DevOps consultant is the lower-risk way to reduce infrastructure debt, improve delivery, and create enough clarity to know what to hire next.",{"type":27,"tag":35,"props":1365,"children":1366},{},[1367],{"type":33,"value":1368},"A platform team can be the right long-term move. It is just often the wrong first move.",{"type":27,"tag":35,"props":1370,"children":1371},{},[1372],{"type":33,"value":1373},"If you are making this decision now, start with an honest assessment:",{"type":27,"tag":74,"props":1375,"children":1376},{},[1377,1382,1387,1392],{"type":27,"tag":78,"props":1378,"children":1379},{},[1380],{"type":33,"value":1381},"what is actually broken?",{"type":27,"tag":78,"props":1383,"children":1384},{},[1385],{"type":33,"value":1386},"which problems need permanent ownership?",{"type":27,"tag":78,"props":1388,"children":1389},{},[1390],{"type":33,"value":1391},"which problems need targeted senior intervention?",{"type":27,"tag":78,"props":1393,"children":1394},{},[1395],{"type":33,"value":1396},"what operating model is realistic for your current stage?",{"type":27,"tag":35,"props":1398,"children":1399},{},[1400],{"type":33,"value":1401},"That is usually where I start.",{"title":8,"searchDepth":1403,"depth":1403,"links":1404},2,[1405,1406,1412,1413,1414,1419,1424,1429,1434,1437,1438,1439,1444,1451],{"id":61,"depth":1403,"text":64},{"id":151,"depth":1403,"text":154,"children":1407},[1408,1410,1411],{"id":158,"depth":1409,"text":161},3,{"id":228,"depth":1409,"text":231},{"id":287,"depth":1409,"text":290},{"id":303,"depth":1403,"text":306},{"id":390,"depth":1403,"text":393},{"id":450,"depth":1403,"text":453,"children":1415},[1416,1417,1418],{"id":456,"depth":1409,"text":459},{"id":509,"depth":1409,"text":512},{"id":548,"depth":1409,"text":551},{"id":582,"depth":1403,"text":585,"children":1420},[1421,1422,1423],{"id":588,"depth":1409,"text":459},{"id":598,"depth":1409,"text":601},{"id":627,"depth":1409,"text":630},{"id":666,"depth":1403,"text":669,"children":1425},[1426,1427,1428],{"id":672,"depth":1409,"text":459},{"id":710,"depth":1409,"text":713},{"id":739,"depth":1409,"text":742},{"id":778,"depth":1403,"text":781,"children":1430},[1431,1432,1433],{"id":808,"depth":1409,"text":811},{"id":829,"depth":1409,"text":832},{"id":850,"depth":1409,"text":853},{"id":894,"depth":1403,"text":897,"children":1435},[1436],{"id":943,"depth":1409,"text":946},{"id":1097,"depth":1403,"text":1100},{"id":1141,"depth":1403,"text":1144},{"id":1185,"depth":1403,"text":1188,"children":1440},[1441,1442,1443],{"id":1196,"depth":1409,"text":1199},{"id":1225,"depth":1409,"text":1228},{"id":1254,"depth":1409,"text":1257},{"id":1283,"depth":1403,"text":1286,"children":1445},[1446,1447,1448,1449,1450],{"id":1289,"depth":1409,"text":1292},{"id":1300,"depth":1409,"text":1303},{"id":1311,"depth":1409,"text":1314},{"id":1322,"depth":1409,"text":1325},{"id":1333,"depth":1409,"text":1336},{"id":1344,"depth":1403,"text":1347},"markdown","content:en:blog:2026-04-11-devops-consultant-vs-internal-team.md","content","en/blog/2026-04-11-devops-consultant-vs-internal-team.md","en/blog/2026-04-11-devops-consultant-vs-internal-team","md",{"_path":1459,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1460,"description":1461,"date":1462,"slug":1463,"author":13,"image":14,"tags":1464,"body":1468,"_type":1452,"_id":2126,"_source":1454,"_file":2127,"_stem":2128,"_extension":1457},"/en/blog/aws-cost-review-small-teams","How I review AWS costs for small teams without turning it into a FinOps project","A realistic, actionable AWS cost review process for teams that can't justify a full FinOps function — and don't need one.","2026-04-01","aws-cost-review-small-teams",[1465,1466,1467,16],"aws","finops","cost-optimization",{"type":24,"children":1469,"toc":2111},[1470,1475,1480,1485,1491,1496,1519,1525,1530,1553,1558,1562,1568,1574,1607,1610,1616,1681,1684,1690,1757,1760,1766,1825,1828,1834,1909,1912,1918,1964,1967,1973,2019,2022,2028,2033,2043,2053,2063,2073,2076,2082,2087,2092,2097],{"type":27,"tag":28,"props":1471,"children":1473},{"id":1472},"how-i-review-aws-costs-for-small-teams-without-turning-it-into-a-finops-project",[1474],{"type":33,"value":1460},{"type":27,"tag":35,"props":1476,"children":1477},{},[1478],{"type":33,"value":1479},"Most teams I work with have the same problem: they know their AWS bill is higher than it should be, but they don't have the time or headcount to run a proper FinOps program. They're not a bank. They don't have a dedicated cost team. What they have is an engineer or two who care, and a CTO who's nervous about the bill at the end of every month.",{"type":27,"tag":35,"props":1481,"children":1482},{},[1483],{"type":33,"value":1484},"So this is the process I actually use when doing a cost review for a small team. It's deliberately simple. The goal isn't perfect cloud economics — it's making the most impactful changes with the least operational disruption.",{"type":27,"tag":59,"props":1486,"children":1488},{"id":1487},"who-this-is-for",[1489],{"type":33,"value":1490},"Who this is for",{"type":27,"tag":35,"props":1492,"children":1493},{},[1494],{"type":33,"value":1495},"Engineering teams of 3–30 people on AWS who:",{"type":27,"tag":74,"props":1497,"children":1498},{},[1499,1504,1509,1514],{"type":27,"tag":78,"props":1500,"children":1501},{},[1502],{"type":33,"value":1503},"have never done a formal cost review",{"type":27,"tag":78,"props":1505,"children":1506},{},[1507],{"type":33,"value":1508},"are spending somewhere between $2,000 and $30,000/month",{"type":27,"tag":78,"props":1510,"children":1511},{},[1512],{"type":33,"value":1513},"don't have dedicated FinOps, platform, or SRE headcount",{"type":27,"tag":78,"props":1515,"children":1516},{},[1517],{"type":33,"value":1518},"want to stop wasting money without spending weeks on it",{"type":27,"tag":59,"props":1520,"children":1522},{"id":1521},"when-to-use-this-checklist",[1523],{"type":33,"value":1524},"When to use this checklist",{"type":27,"tag":35,"props":1526,"children":1527},{},[1528],{"type":33,"value":1529},"Use this when:",{"type":27,"tag":74,"props":1531,"children":1532},{},[1533,1538,1543,1548],{"type":27,"tag":78,"props":1534,"children":1535},{},[1536],{"type":33,"value":1537},"the AWS bill has grown noticeably but workloads haven't changed much",{"type":27,"tag":78,"props":1539,"children":1540},{},[1541],{"type":33,"value":1542},"you're heading into a fundraise or board review and someone asks about cloud spend",{"type":27,"tag":78,"props":1544,"children":1545},{},[1546],{"type":33,"value":1547},"you've just inherited an AWS account and don't know what's running",{"type":27,"tag":78,"props":1549,"children":1550},{},[1551],{"type":33,"value":1552},"costs jumped unexpectedly and you're trying to find why",{"type":27,"tag":35,"props":1554,"children":1555},{},[1556],{"type":33,"value":1557},"Don't use this as a substitute for architectural review. If your costs are driven by a flawed design (wrong database tier, oversized data transfer, etc.), that needs a different conversation.",{"type":27,"tag":1559,"props":1560,"children":1561},"hr",{},[],{"type":27,"tag":59,"props":1563,"children":1565},{"id":1564},"the-checklist",[1566],{"type":33,"value":1567},"The checklist",{"type":27,"tag":156,"props":1569,"children":1571},{"id":1570},"_1-get-a-cost-baseline-by-service",[1572],{"type":33,"value":1573},"1. Get a cost baseline by service",{"type":27,"tag":74,"props":1575,"children":1576},{},[1577,1587,1597],{"type":27,"tag":78,"props":1578,"children":1579},{},[1580,1585],{"type":27,"tag":41,"props":1581,"children":1582},{},[1583],{"type":33,"value":1584},"Why it matters:",{"type":33,"value":1586}," You can't prioritise without knowing where the money actually goes. Most teams are surprised — the top-three services usually account for 70–80% of total spend.",{"type":27,"tag":78,"props":1588,"children":1589},{},[1590,1595],{"type":27,"tag":41,"props":1591,"children":1592},{},[1593],{"type":33,"value":1594},"What to check:",{"type":33,"value":1596}," Go to AWS Cost Explorer → Group by Service → last 3 months. Export or screenshot. Note which services are growing.",{"type":27,"tag":78,"props":1598,"children":1599},{},[1600,1605],{"type":27,"tag":41,"props":1601,"children":1602},{},[1603],{"type":33,"value":1604},"Common miss:",{"type":33,"value":1606}," Looking at the total and skipping the service breakdown. The total number is almost useless without knowing what's driving it.",{"type":27,"tag":1559,"props":1608,"children":1609},{},[],{"type":27,"tag":156,"props":1611,"children":1613},{"id":1612},"_2-check-for-idle-or-orphaned-resources",[1614],{"type":33,"value":1615},"2. Check for idle or orphaned resources",{"type":27,"tag":74,"props":1617,"children":1618},{},[1619,1628,1672],{"type":27,"tag":78,"props":1620,"children":1621},{},[1622,1626],{"type":27,"tag":41,"props":1623,"children":1624},{},[1625],{"type":33,"value":1584},{"type":33,"value":1627}," Every account accumulates dead weight: stopped EC2 instances that were \"paused temporarily\", unattached EBS volumes, old snapshots, forgotten Load Balancers. These cost money every month for no reason.",{"type":27,"tag":78,"props":1629,"children":1630},{},[1631,1635],{"type":27,"tag":41,"props":1632,"children":1633},{},[1634],{"type":33,"value":1594},{"type":27,"tag":74,"props":1636,"children":1637},{},[1638,1643,1657,1662,1667],{"type":27,"tag":78,"props":1639,"children":1640},{},[1641],{"type":33,"value":1642},"EC2 instances with \u003C 5% CPU for 2+ weeks (use CloudWatch or Cost Explorer rightsizing recommendations)",{"type":27,"tag":78,"props":1644,"children":1645},{},[1646,1648,1655],{"type":33,"value":1647},"Unattached EBS volumes (EC2 → Volumes → filter by ",{"type":27,"tag":1649,"props":1650,"children":1652},"code",{"className":1651},[],[1653],{"type":33,"value":1654},"available",{"type":33,"value":1656},")",{"type":27,"tag":78,"props":1658,"children":1659},{},[1660],{"type":33,"value":1661},"Snapshots older than 90 days with no attached instance",{"type":27,"tag":78,"props":1663,"children":1664},{},[1665],{"type":33,"value":1666},"Load Balancers with zero active connections",{"type":27,"tag":78,"props":1668,"children":1669},{},[1670],{"type":33,"value":1671},"RDS instances in stopped state (AWS restarts them after 7 days anyway — if they keep stopping, consider deleting)",{"type":27,"tag":78,"props":1673,"children":1674},{},[1675,1679],{"type":27,"tag":41,"props":1676,"children":1677},{},[1678],{"type":33,"value":1604},{"type":33,"value":1680}," Forgetting about EBS snapshots. They accumulate silently and can add up to hundreds of dollars/month for teams that do daily automated snapshots without a retention policy.",{"type":27,"tag":1559,"props":1682,"children":1683},{},[],{"type":27,"tag":156,"props":1685,"children":1687},{"id":1686},"_3-evaluate-compute-sizing",[1688],{"type":33,"value":1689},"3. Evaluate compute sizing",{"type":27,"tag":74,"props":1691,"children":1692},{},[1693,1702,1732],{"type":27,"tag":78,"props":1694,"children":1695},{},[1696,1700],{"type":27,"tag":41,"props":1697,"children":1698},{},[1699],{"type":33,"value":1584},{"type":33,"value":1701}," EC2 over-provisioning is the single most common source of avoidable cost in small accounts. Teams size for worst-case traffic and never revisit.",{"type":27,"tag":78,"props":1703,"children":1704},{},[1705,1709],{"type":27,"tag":41,"props":1706,"children":1707},{},[1708],{"type":33,"value":1594},{"type":27,"tag":74,"props":1710,"children":1711},{},[1712,1717,1722,1727],{"type":27,"tag":78,"props":1713,"children":1714},{},[1715],{"type":33,"value":1716},"CloudWatch CPU and memory metrics for all running EC2 instances",{"type":27,"tag":78,"props":1718,"children":1719},{},[1720],{"type":33,"value":1721},"Look for instances consistently below 20% CPU — they're candidates for downsizing",{"type":27,"tag":78,"props":1723,"children":1724},{},[1725],{"type":33,"value":1726},"Check whether any instances could move to a newer generation (e.g., m5 → m7g gives 20–40% performance-per-dollar improvement)",{"type":27,"tag":78,"props":1728,"children":1729},{},[1730],{"type":33,"value":1731},"For ECS/Fargate workloads: check task CPU/memory allocation vs actual usage",{"type":27,"tag":78,"props":1733,"children":1734},{},[1735,1739,1741,1747,1749,1755],{"type":27,"tag":41,"props":1736,"children":1737},{},[1738],{"type":33,"value":1604},{"type":33,"value":1740}," Rightsizing RDS. It's easier to over-provision a database \"to be safe\" and forget about it. Look at CloudWatch ",{"type":27,"tag":1649,"props":1742,"children":1744},{"className":1743},[],[1745],{"type":33,"value":1746},"DatabaseConnections",{"type":33,"value":1748}," and ",{"type":27,"tag":1649,"props":1750,"children":1752},{"className":1751},[],[1753],{"type":33,"value":1754},"CPUUtilization",{"type":33,"value":1756}," — a db.r5.2xlarge running at 5% is wasted money.",{"type":27,"tag":1559,"props":1758,"children":1759},{},[],{"type":27,"tag":156,"props":1761,"children":1763},{"id":1762},"_4-look-at-data-transfer-and-nat-gateway-costs",[1764],{"type":33,"value":1765},"4. Look at data transfer and NAT Gateway costs",{"type":27,"tag":74,"props":1767,"children":1768},{},[1769,1778,1816],{"type":27,"tag":78,"props":1770,"children":1771},{},[1772,1776],{"type":27,"tag":41,"props":1773,"children":1774},{},[1775],{"type":33,"value":1584},{"type":33,"value":1777}," Data transfer and NAT Gateway charges are invisible until they're not. I've seen accounts where NAT Gateway charges were higher than EC2.",{"type":27,"tag":78,"props":1779,"children":1780},{},[1781,1785],{"type":27,"tag":41,"props":1782,"children":1783},{},[1784],{"type":33,"value":1594},{"type":27,"tag":74,"props":1786,"children":1787},{},[1788,1806,1811],{"type":27,"tag":78,"props":1789,"children":1790},{},[1791,1793,1799,1800],{"type":33,"value":1792},"Cost Explorer → Group by Usage Type → filter for ",{"type":27,"tag":1649,"props":1794,"children":1796},{"className":1795},[],[1797],{"type":33,"value":1798},"DataTransfer",{"type":33,"value":1748},{"type":27,"tag":1649,"props":1801,"children":1803},{"className":1802},[],[1804],{"type":33,"value":1805},"NatGateway",{"type":27,"tag":78,"props":1807,"children":1808},{},[1809],{"type":33,"value":1810},"If NAT Gateway is significant, find out what's making outbound calls. Often it's agents, SDKs, or monitoring tools running in private subnets making external API calls continuously.",{"type":27,"tag":78,"props":1812,"children":1813},{},[1814],{"type":33,"value":1815},"Check inter-AZ data transfer: traffic between availability zones is not free. Some architectures create unnecessary cross-AZ hops.",{"type":27,"tag":78,"props":1817,"children":1818},{},[1819,1823],{"type":27,"tag":41,"props":1820,"children":1821},{},[1822],{"type":33,"value":1604},{"type":33,"value":1824}," Assuming data transfer is just S3 or CloudFront. Most unexpected transfer costs come from EC2 and internal service traffic.",{"type":27,"tag":1559,"props":1826,"children":1827},{},[],{"type":27,"tag":156,"props":1829,"children":1831},{"id":1830},"_5-review-s3-storage-and-request-costs",[1832],{"type":33,"value":1833},"5. Review S3 storage and request costs",{"type":27,"tag":74,"props":1835,"children":1836},{},[1837,1846,1900],{"type":27,"tag":78,"props":1838,"children":1839},{},[1840,1844],{"type":27,"tag":41,"props":1841,"children":1842},{},[1843],{"type":33,"value":1584},{"type":33,"value":1845}," S3 is cheap per GB, but it adds up fast for teams doing large numbers of requests or storing infrequently-accessed data in Standard storage class.",{"type":27,"tag":78,"props":1847,"children":1848},{},[1849,1853],{"type":27,"tag":41,"props":1850,"children":1851},{},[1852],{"type":33,"value":1594},{"type":27,"tag":74,"props":1854,"children":1855},{},[1856,1869,1874,1879],{"type":27,"tag":78,"props":1857,"children":1858},{},[1859,1861,1867],{"type":33,"value":1860},"Which buckets have the most data (use S3 Storage Lens or ",{"type":27,"tag":1649,"props":1862,"children":1864},{"className":1863},[],[1865],{"type":33,"value":1866},"aws s3api list-objects-v2",{"type":33,"value":1868}," with summary)",{"type":27,"tag":78,"props":1870,"children":1871},{},[1872],{"type":33,"value":1873},"Are there buckets storing old logs, backups, or artifacts with no lifecycle policy?",{"type":27,"tag":78,"props":1875,"children":1876},{},[1877],{"type":33,"value":1878},"Is anything in S3 Standard that's clearly cold (logs older than 30 days, deployment artifacts, backups)?",{"type":27,"tag":78,"props":1880,"children":1881},{},[1882,1884,1890,1892,1898],{"type":33,"value":1883},"Check S3 request costs in Cost Explorer — ",{"type":27,"tag":1649,"props":1885,"children":1887},{"className":1886},[],[1888],{"type":33,"value":1889},"PUT",{"type":33,"value":1891},", ",{"type":27,"tag":1649,"props":1893,"children":1895},{"className":1894},[],[1896],{"type":33,"value":1897},"GET",{"type":33,"value":1899}," request charges can be surprisingly high for data pipeline workloads",{"type":27,"tag":78,"props":1901,"children":1902},{},[1903,1907],{"type":27,"tag":41,"props":1904,"children":1905},{},[1906],{"type":33,"value":1604},{"type":33,"value":1908}," Application logs or CI/CD artifacts being stored indefinitely. A lifecycle policy expiring objects after 30–90 days is usually safe and meaningfully reduces costs over time.",{"type":27,"tag":1559,"props":1910,"children":1911},{},[],{"type":27,"tag":156,"props":1913,"children":1915},{"id":1914},"_6-evaluate-commitment-options-if-spend-is-predictable",[1916],{"type":33,"value":1917},"6. Evaluate commitment options if spend is predictable",{"type":27,"tag":74,"props":1919,"children":1920},{},[1921,1930,1955],{"type":27,"tag":78,"props":1922,"children":1923},{},[1924,1928],{"type":27,"tag":41,"props":1925,"children":1926},{},[1927],{"type":33,"value":1584},{"type":33,"value":1929}," If your EC2 or Fargate spend is reasonably predictable, Savings Plans can reduce compute costs by 20–40% with minimal effort.",{"type":27,"tag":78,"props":1931,"children":1932},{},[1933,1937],{"type":27,"tag":41,"props":1934,"children":1935},{},[1936],{"type":33,"value":1594},{"type":27,"tag":74,"props":1938,"children":1939},{},[1940,1945,1950],{"type":27,"tag":78,"props":1941,"children":1942},{},[1943],{"type":33,"value":1944},"Go to Cost Explorer → Savings Plans → Coverage report. Low coverage with consistent usage is a clear opportunity.",{"type":27,"tag":78,"props":1946,"children":1947},{},[1948],{"type":33,"value":1949},"Compute Savings Plans are the most flexible option for small teams — they apply across EC2, Fargate, and Lambda automatically.",{"type":27,"tag":78,"props":1951,"children":1952},{},[1953],{"type":33,"value":1954},"Start with 1-year no-upfront. Commit only what you're confident you'll keep running.",{"type":27,"tag":78,"props":1956,"children":1957},{},[1958,1962],{"type":27,"tag":41,"props":1959,"children":1960},{},[1961],{"type":33,"value":1604},{"type":33,"value":1963}," Confusing Savings Plans with Reserved Instances. For small teams with some architectural flexibility, Compute Savings Plans are almost always the better starting point.",{"type":27,"tag":1559,"props":1965,"children":1966},{},[],{"type":27,"tag":156,"props":1968,"children":1970},{"id":1969},"_7-set-up-a-budget-alert-if-you-dont-have-one",[1971],{"type":33,"value":1972},"7. Set up a budget alert if you don't have one",{"type":27,"tag":74,"props":1974,"children":1975},{},[1976,1985,2010],{"type":27,"tag":78,"props":1977,"children":1978},{},[1979,1983],{"type":27,"tag":41,"props":1980,"children":1981},{},[1982],{"type":33,"value":1584},{"type":33,"value":1984}," The review you're doing now only captures what's already happened. You need a signal when spend starts drifting.",{"type":27,"tag":78,"props":1986,"children":1987},{},[1988,1992],{"type":27,"tag":41,"props":1989,"children":1990},{},[1991],{"type":33,"value":1594},{"type":27,"tag":74,"props":1993,"children":1994},{},[1995,2000,2005],{"type":27,"tag":78,"props":1996,"children":1997},{},[1998],{"type":33,"value":1999},"AWS Budgets → create a monthly cost budget at 100% of your expected spend, with an alert at 80%.",{"type":27,"tag":78,"props":2001,"children":2002},{},[2003],{"type":33,"value":2004},"Add an alert at 120% as an emergency signal.",{"type":27,"tag":78,"props":2006,"children":2007},{},[2008],{"type":33,"value":2009},"Make sure the alert goes somewhere someone will actually read it (SNS → Slack, not just email).",{"type":27,"tag":78,"props":2011,"children":2012},{},[2013,2017],{"type":27,"tag":41,"props":2014,"children":2015},{},[2016],{"type":33,"value":1604},{"type":33,"value":2018}," Creating a budget alert that emails a shared mailbox nobody monitors. Wire it to a Slack channel that someone owns.",{"type":27,"tag":1559,"props":2020,"children":2021},{},[],{"type":27,"tag":59,"props":2023,"children":2025},{"id":2024},"what-not-to-overcomplicate",[2026],{"type":33,"value":2027},"What not to overcomplicate",{"type":27,"tag":35,"props":2029,"children":2030},{},[2031],{"type":33,"value":2032},"A few traps I see teams fall into during cost reviews:",{"type":27,"tag":35,"props":2034,"children":2035},{},[2036,2041],{"type":27,"tag":41,"props":2037,"children":2038},{},[2039],{"type":33,"value":2040},"Tagging everything before doing anything else.",{"type":33,"value":2042}," Tagging is useful for ongoing visibility, but it's a months-long project for established accounts. Don't let it block the immediate savings. Fix the idle resources and oversized instances first.",{"type":27,"tag":35,"props":2044,"children":2045},{},[2046,2051],{"type":27,"tag":41,"props":2047,"children":2048},{},[2049],{"type":33,"value":2050},"Optimising the wrong thing.",{"type":33,"value":2052}," If you're spending $500/month on EBS snapshots and $8,000/month on EC2, don't spend three days optimising snapshot retention before looking at compute.",{"type":27,"tag":35,"props":2054,"children":2055},{},[2056,2061],{"type":27,"tag":41,"props":2057,"children":2058},{},[2059],{"type":33,"value":2060},"Buying commitments before understanding the baseline.",{"type":33,"value":2062}," Reserved Instances and Savings Plans make sense once you understand what's stable. Buying them on an account you don't fully understand yet is premature — you might commit to resources you're about to change.",{"type":27,"tag":35,"props":2064,"children":2065},{},[2066,2071],{"type":27,"tag":41,"props":2067,"children":2068},{},[2069],{"type":33,"value":2070},"Turning this into a platform project.",{"type":33,"value":2072}," You don't need a cost allocation taxonomy, a FinOps tool, or a chargeback model to reduce your bill. Do the review, make the changes, set the alerts. That's it.",{"type":27,"tag":1559,"props":2074,"children":2075},{},[],{"type":27,"tag":59,"props":2077,"children":2079},{"id":2078},"closing",[2080],{"type":33,"value":2081},"Closing",{"type":27,"tag":35,"props":2083,"children":2084},{},[2085],{"type":33,"value":2086},"If you work through this checklist honestly, most small teams find 15–30% in waste within the first pass — primarily from idle resources, over-provisioned compute, and missing lifecycle policies.",{"type":27,"tag":35,"props":2088,"children":2089},{},[2090],{"type":33,"value":2091},"The goal isn't a perfect bill. It's a sensible one.",{"type":27,"tag":35,"props":2093,"children":2094},{},[2095],{"type":33,"value":2096},"If you get through this and the costs still don't make sense, or you've inherited an account with no clear ownership, that's usually when it's worth bringing in an outside perspective. Not to run a FinOps programme — just to spend a few days finding what the internal team doesn't have time to dig into.",{"type":27,"tag":35,"props":2098,"children":2099},{},[2100,2102,2109],{"type":33,"value":2101},"If that sounds like your situation, ",{"type":27,"tag":2103,"props":2104,"children":2106},"a",{"href":2105},"/en/services/ongoing-cloud-support",[2107],{"type":33,"value":2108},"a free cloud review with AstralDeploy",{"type":33,"value":2110}," is built exactly for that.",{"title":8,"searchDepth":1403,"depth":1403,"links":2112},[2113,2114,2115,2124,2125],{"id":1487,"depth":1403,"text":1490},{"id":1521,"depth":1403,"text":1524},{"id":1564,"depth":1403,"text":1567,"children":2116},[2117,2118,2119,2120,2121,2122,2123],{"id":1570,"depth":1409,"text":1573},{"id":1612,"depth":1409,"text":1615},{"id":1686,"depth":1409,"text":1689},{"id":1762,"depth":1409,"text":1765},{"id":1830,"depth":1409,"text":1833},{"id":1914,"depth":1409,"text":1917},{"id":1969,"depth":1409,"text":1972},{"id":2024,"depth":1403,"text":2027},{"id":2078,"depth":1403,"text":2081},"content:en:blog:aws-cost-review-small-teams.md","en/blog/aws-cost-review-small-teams.md","en/blog/aws-cost-review-small-teams",1777568346299]