{"componentChunkName":"component---src-templates-blog-post-js","path":"/blog/2019-11-07-first-take-on-aws-savings-plans/","result":{"data":{"site":{"siteMetadata":{"title":"Gatsby Starter Personal Blog","author":"Gatsby"}},"mdx":{"id":"2d523ace-0da5-5f6d-881b-d0aee6221f21","excerpt":"There was a huge announcement about a new service, or rather a feature, with the bit monstrous name \" Savings Plans for AWS Compute Services \". Let's just call…","body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"First take on AWS Savings Plans\",\n  \"date\": \"2019-11-07\",\n  \"thumb\": \"aws_savings.png\",\n  \"tags\": [\"AWS\", \"Business\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"There was a huge announcement about a new service, or rather a feature, with the bit monstrous name \\u201D\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://aws.amazon.com/about-aws/whats-new/2019/11/introducing-savings-plans/\"\n  }, \"Savings Plans for AWS Compute Services\"), \"\\u201D. Let\\u2019s just call it as Savings Plans for short for now, OK?\"), mdx(\"p\", null, \"There is a \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://aws.amazon.com/blogs/aws/new-savings-plans-for-aws-compute-services/\"\n  }, \"AWS blog post\"), \" and a very recent \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.lastweekinaws.com/blog/aws-begins-sunsetting-ris-replaces-them-with-something-much-much-better/\"\n  }, \"Last Week in AWS post\"), \" about the launch, so I am going to cover the basic here really short and then make some additional points, which I think should be noted.\"), mdx(\"h2\", null, \"So what is Savings Plans\"), mdx(\"p\", null, \"In short, you commit to a baseline cost with either On Demand model of with fixed timeframe. More you commit, more you get discounted.\"), mdx(\"p\", null, \"So that is it, plain and simple. No more fiddling around with long term strategies for RI purchases, if you don\\u2019t want to.\"), mdx(\"h2\", null, \"Flexibility beyond instances\"), mdx(\"p\", null, \"One huge different, and arguably a benefit, is the possibility to apply Savings Plans to other type of compute than the traditional instance driven services. That list previously was limited to EC2, RDS, Redshift and ElastiCache.\"), mdx(\"p\", null, \"Now it really does not matter, where you run your capacity. In addition to the list above, capacity inside for example ECS and EKS clusters is eligible for savings as well. And it covers \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://aws.amazon.com/fargate/\"\n  }, \"Fargate\"), \" as well.\"), mdx(\"h2\", null, \"Flexibility beyond Operating Systems\"), mdx(\"p\", null, \"One huge limitation in RIs had to do with the kind of instances, where you had paid, commercially licensed operating system on your instance. For Windows instances, you were stuck with the exact size you selected. With Open Source OS\\u2019s you had the possibility to scale up and down (with limitations) inside the instance family, but not with commercial ones.\"), mdx(\"p\", null, \"So now, if you want to make your Windows instance larger (or smaller), you can do that any time without taking a hit in the cost department.\"), mdx(\"h2\", null, \"Flexibility beyond lifecycle\"), mdx(\"p\", null, \"One huge advantage of moving on to Savings Plans is that you do not need to plan for instance generation lifecycles.\"), mdx(\"p\", null, \"Usually this time of year, you are anticipating for new instance generations to be launched and price cuts announced at AWS reInvent. So you would not do three year commitments at this time of year, would you? (Personally I fell that three years in IT is so long time, that making any kind of commitment to that long of a timeframe need special circumstances to warrant the risk). So using Savings Plans effectively gives you the possibility to move to newer and cheaper instance types, when they become available.\"), mdx(\"p\", null, \"And that brings me to my other point on the lifecycle planning: this gives you the ability to migrate to whole another technology stack. Want to move on EKS or \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://aws.amazon.com/fargate/\"\n  }, \"Fargate\"), \"? No problem, you do not need to write down the RI cost any more.\"), mdx(\"h2\", null, \"Capacity reservations caveat\"), mdx(\"p\", null, \"If you are after ensuring that you have always the type of capacity (instance types) you need, then the Cost Savings is not the right tool to do that.\"), mdx(\"p\", null, \"As \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/reserved-instances-scope.html\"\n  }, \"laid out here\"), \", you only had the reservations before, only if you selected Zonal scope in your reservation anyway. Most of the people I work with, waived that reservation in any case in favour of regional flexibility and the ability to change instance type inside the instance family.\"), mdx(\"p\", null, \"So for most, this is not a dealbreaker for using Cost Savings, but if this is something that matters to you, make a note of that.\"), mdx(\"h2\", null, \"Multi-account setup caveat\"), mdx(\"p\", null, \"There is not yet much information, that if Savings Plan can be used for commitments from child accounts, as was the case with RIs and if there is similar inheritance model as with RIs. But I will update the post when I have more information.\"), mdx(\"p\", null, \"For now, let\\u2019s assume that the Savings Plan is activated at master account level and that\\u2019s it.\"), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"Edit\"), \": from the FAQ: By default, the benefit provided by Savings Plans is applicable to usage across linked accounts within a consolidated billing family. However you can also choose to restrict the benefit of Savings Plans to only the account that purchased them.\")), mdx(\"p\", null, \"So it seems it shares the logic with RI inheritance after all.\"), mdx(\"h2\", null, \"Flexibility for all\"), mdx(\"p\", null, \"If you were doing something in a really small scale or had some other specific circumstances, it might have been that optimizing cost with Ris was not for you. But with this approach, you are able to save some cost, no matter how small your environment is.\"), mdx(\"p\", null, \"Doing it is easy, just select your comfort level for the commitment and take the benefit.\"), mdx(\"h2\", null, \"Finally - saving cost does not make you efficient\"), mdx(\"p\", null, \"I feel that this is a very good addition to how AWS sells services. It simplifies a lot of things for a lot of customers.\"), mdx(\"p\", null, \"But you should understand that saving cost does not in any way ensure that you are using correctly sized resources at correct times and using even the correct solutions to correct problems. Using Savings Plans gives you the ability to pay less for the capacity you are committed to using. But it does not in any way make sure that you are paying for the things you should be using.\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"/img/AWS-Well-Architected-logo.png\",\n    \"alt\": null\n  })), mdx(\"p\", null, \"Taking the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://d1.awsstatic.com/whitepapers/architecture/AWS-Cost-Optimization-Pillar.pdf\"\n  }, \"Well-Architected cost optimization\"), \" route will be beneficial in the long term, when you actually want to optimize your usage and not your cost - and I feel that they are greatly different things.\"), mdx(\"h2\", null, \"Conclusion\"), mdx(\"p\", null, \"My motto in the cost optimization has always been \\u201CBig wins instead of quick things\\u201D and I still stand by it.\"), mdx(\"p\", null, \"But if you want something achieved quickly or complete replatforming is not a viable option - this will be a great tool to simply just cut down of the cost of the exact same thing you have been running for years.\"), mdx(\"style\", {\n    \"className\": \"grvsc-styles\"\n  }, \"\\n  .grvsc-container {\\n    overflow: auto;\\n    -webkit-overflow-scrolling: touch;\\n    padding-top: 1rem;\\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\\n    padding-bottom: 1rem;\\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\\n    border-radius: 8px;\\n    border-radius: var(--grvsc-border-radius, 8px);\\n    font-feature-settings: normal;\\n  }\\n  \\n  .grvsc-code {\\n    display: inline-block;\\n    min-width: 100%;\\n  }\\n  \\n  .grvsc-line {\\n    display: inline-block;\\n    box-sizing: border-box;\\n    width: 100%;\\n    padding-left: 1.5rem;\\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\\n    padding-right: 1.5rem;\\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\\n  }\\n  \\n  .grvsc-line-highlighted {\\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\\n  }\\n  \\n\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"First take on AWS Savings Plans","date":"November 07, 2019","description":null}}},"pageContext":{"slug":"/2019-11-07-first-take-on-aws-savings-plans/","previous":{"fields":{"slug":"/posts/2019-10-31-aws-user-group-finland-october-meetup-sponsored-by-s-group/"},"frontmatter":{"title":"AWS User Group Finland October Meetup - Sponsored by S-Group"}},"next":{"fields":{"slug":"/awesome-images/"},"frontmatter":{"title":"Awesome Images"}}}},"staticQueryHashes":["3663586608","63159454"]}