{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T21:04:17Z","timestamp":1779829457312,"version":"3.53.1"},"reference-count":35,"publisher":"Elsevier BV","license":[{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/tdm\/userlicense\/1.0\/"},{"start":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T00:00:00Z","timestamp":1785542400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/legal\/tdmrep-license"},{"start":{"date-parts":[[2026,3,30]],"date-time":"2026-03-30T00:00:00Z","timestamp":1774828800000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100003246","name":"Dutch Research Council","doi-asserted-by":"publisher","award":["OCENW.M20.243"],"award-info":[{"award-number":["OCENW.M20.243"]}],"id":[{"id":"10.13039\/501100003246","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["elsevier.com","sciencedirect.com"],"crossmark-restriction":true},"short-container-title":["Journal of Systems and Software"],"published-print":{"date-parts":[[2026,8]]},"DOI":"10.1016\/j.jss.2026.112870","type":"journal-article","created":{"date-parts":[[2026,3,30]],"date-time":"2026-03-30T15:02:35Z","timestamp":1774882955000},"page":"112870","update-policy":"https:\/\/doi.org\/10.1016\/elsevier_cm_policy","source":"Crossref","is-referenced-by-count":0,"special_numbering":"C","title":["Towards sustainable cloud deployments: A cost (anti)patterns catalog for terraform and CloudFormation"],"prefix":"10.1016","volume":"238","author":[{"given":"Koen","family":"Bolhuis","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Allia","family":"Neamt","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9371-232X","authenticated-orcid":false,"given":"Daniel","family":"Feitosa","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7937-0247","authenticated-orcid":false,"given":"Vasilios","family":"Andrikopoulos","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"78","reference":[{"issue":"2","key":"10.1016\/j.jss.2026.112870_bib0001","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/2870634","article-title":"Multiobjective optimization for brokering of multicloud service composition","volume":"16","author":"Amato","year":"2016","journal-title":"ACM Trans. Internet Technol. (TOIT)"},{"issue":"6","key":"10.1016\/j.jss.2026.112870_bib0002","doi-asserted-by":"crossref","first-page":"493","DOI":"10.1007\/s00607-012-0248-2","article-title":"How to adapt applications for the cloud environment","volume":"95","author":"Andrikopoulos","year":"2013","journal-title":"Computing"},{"issue":"2","key":"10.1016\/j.jss.2026.112870_bib0003","doi-asserted-by":"crossref","DOI":"10.1007\/s10664-021-10081-7","article-title":"An empirical study on self-admitted technical debt in dockerfiles","volume":"27","author":"Azuma","year":"2022","journal-title":"Empirical Software Eng."},{"key":"10.1016\/j.jss.2026.112870_bib0004","series-title":"Proceedings of the 13th International Conference on Mining Software Repositories","article-title":"How android app developers manage power consumption?","author":"Bao","year":"2016"},{"key":"10.1016\/j.jss.2026.112870_bib0005","series-title":"Site Reliability Engineering: How Google Runs Production Systems","author":"Beyer","year":"2016"},{"key":"10.1016\/j.jss.2026.112870_bib0006","first-page":"27","article-title":"Characterizing co-located insecure coding patterns in infrastructure as code scripts","author":"Bhuiyan","year":"2020","journal-title":"Proceedings - 2020 35th IEEE\/ACM International Conference on Automated Software Engineering Workshops, ASEW 2020"},{"key":"10.1016\/j.jss.2026.112870_bib0007","series-title":"2024 50th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)","first-page":"399","article-title":"A catalog of cost patterns and antipatterns for infrastructure as code","author":"Bolhuis","year":"2024"},{"key":"10.1016\/j.jss.2026.112870_bib0008","unstructured":"Bolhuis, K., Neamt, A., Feitosa, D., Andrikopoulos, V., 2024b. IaC cost patterns. 10.5281\/zenodo.14501829."},{"key":"10.1016\/j.jss.2026.112870_bib0009","series-title":"Antipatterns: Refactoring Software, Architectures, and Projects in Crisis","author":"Brown","year":"1998"},{"issue":"5","key":"10.1016\/j.jss.2026.112870_bib0010","doi-asserted-by":"crossref","DOI":"10.1007\/s10664-022-10137-2","article-title":"How do android developers improve non-functional properties of software?","volume":"27","author":"Callan","year":"2022","journal-title":"Empirical Software Eng."},{"key":"10.1016\/j.jss.2026.112870_bib0011","series-title":"2020 20th IEEE\/ACM International Symposium on Cluster, Cloud and Internet Computing (CCGRID)","article-title":"Performance comparison of terraform and cloudify as multicloud orchestrators","author":"de Carvalho","year":"2020"},{"issue":"4","key":"10.1016\/j.jss.2026.112870_bib0012","doi-asserted-by":"crossref","first-page":"599","DOI":"10.1002\/spe.2409","article-title":"Architecting cloud-enabled systems: a systematic survey of challenges and solutions","volume":"47","author":"Chauhan","year":"2017","journal-title":"Softw. Pract. Exper."},{"key":"10.1016\/j.jss.2026.112870_bib0013","first-page":"124","article-title":"An approach to identifying error patterns for infrastructure as code","author":"Chen","year":"2018","journal-title":"Proceedings - 29th IEEE International Symposium on Software Reliability Engineering Workshops, ISSREW 2018"},{"key":"10.1016\/j.jss.2026.112870_bib0014","doi-asserted-by":"crossref","first-page":"2209","DOI":"10.1007\/s10664-019-09682-0","article-title":"Catalog of energy patterns for mobile applications","volume":"24","author":"Cruz","year":"2019","journal-title":"Empirical Software Eng."},{"key":"10.1016\/j.jss.2026.112870_bib0015","series-title":"2016 IEEE International Conference on Software Maintenance and Evolution (ICSME)","first-page":"443","article-title":"A quantitative and qualitative investigation of performance-related commits in android apps","author":"Das","year":"2016"},{"key":"10.1016\/j.jss.2026.112870_bib0016","doi-asserted-by":"crossref","DOI":"10.1016\/j.jss.2024.112112","article-title":"Mining for cost awareness in the infrastructure as code artifacts of cloud-based applications: an exploratory study","author":"Feitosa","year":"2024","journal-title":"J. Sys. Software"},{"issue":"1","key":"10.1016\/j.jss.2026.112870_bib0017","doi-asserted-by":"crossref","first-page":"80","DOI":"10.1177\/160940690600500107","article-title":"Demonstrating rigor using thematic analysis: a hybrid approach of inductive and deductive coding and theme development","volume":"5","author":"Fereday","year":"2006","journal-title":"Int. J. Qual. Methods"},{"key":"10.1016\/j.jss.2026.112870_bib0018","series-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma","year":"1994"},{"issue":"4","key":"10.1016\/j.jss.2026.112870_bib0019","doi-asserted-by":"crossref","first-page":"1639","DOI":"10.1007\/s10922-020-09553-w","article-title":"Service selection using multi-criteria decision making: a comprehensive overview","volume":"28","author":"Hosseinzadeh","year":"2020","journal-title":"J. Netw. Syst. Manage."},{"issue":"2","key":"10.1016\/j.jss.2026.112870_bib0020","doi-asserted-by":"crossref","first-page":"142","DOI":"10.1109\/TCC.2013.10","article-title":"Cloud migration research: a systematic review","volume":"1","author":"Jamshidi","year":"2013","journal-title":"IEEE Trans. Cloud Comput."},{"key":"10.1016\/j.jss.2026.112870_bib0021","series-title":"2025 IEEE\/ACM 22nd International Conference on Mining Software Repositories (MSR)","first-page":"801","article-title":"Smells-sus: sustainability smells in IAC","author":"Kosbar","year":"2025"},{"key":"10.1016\/j.jss.2026.112870_bib0022","doi-asserted-by":"crossref","unstructured":"Mell, P., Grance, T., et al., 2011. The NIST definition of cloud computing. NIST Special Publication 800-145.","DOI":"10.6028\/NIST.SP.800-145"},{"key":"10.1016\/j.jss.2026.112870_bib0023","series-title":"Infrastructure as code: managing servers in the cloud","author":"Morris","year":"2016"},{"key":"10.1016\/j.jss.2026.112870_bib0024","series-title":"2015 IEEE\/ACM 12th Working Conference on Mining Software Repositories","article-title":"Mining energy-aware commits","author":"Moura","year":"2015"},{"key":"10.1016\/j.jss.2026.112870_bib0025","unstructured":"Neamt, A., Feitosa, D., Andrikopoulos, V., 2025. IaC cost patterns - practitioner evaluation. 10.5281\/zenodo.18001003."},{"key":"10.1016\/j.jss.2026.112870_bib0026","series-title":"Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering","first-page":"890","article-title":"Automatically recommending test code examples to inexperienced developers","author":"Pham","year":"2015"},{"key":"10.1016\/j.jss.2026.112870_bib0027","series-title":"Proceedings of the 11th Working Conference on Mining Software Repositories","first-page":"22","article-title":"Mining questions about software energy consumption","author":"Pinto","year":"2014"},{"issue":"5","key":"10.1016\/j.jss.2026.112870_bib0028","doi-asserted-by":"crossref","first-page":"3430","DOI":"10.1007\/s10664-020-09841-8","article-title":"The \u2018as code\u2019 activities: development anti-patterns for infrastructure as code","volume":"25","author":"Rahman","year":"2020","journal-title":"Empirical Software Eng."},{"key":"10.1016\/j.jss.2026.112870_bib0029","series-title":"Pattern-oriented software architecture, patterns for concurrent and networked objects","author":"Schmidt","year":"2013"},{"key":"10.1016\/j.jss.2026.112870_bib0030","first-page":"220","article-title":"Code smells in infrastructure as code","author":"Schwarz","year":"2018","journal-title":"Proceedings - 2018 International Conference on the Quality of Information and Communications Technology, QUATIC 2018"},{"key":"10.1016\/j.jss.2026.112870_bib0031","first-page":"189","article-title":"Does your configuration code smell?","author":"Sharma","year":"2016","journal-title":"Proceedings - 13th Working Conference on Mining Software Repositories, MSR 2016"},{"key":"10.1016\/j.jss.2026.112870_bib0032","first-page":"387","article-title":"Why adopting cloud is still a challenge?-A review on issues and challenges for cloud migration in organizations","author":"Shuaib","year":"2019","journal-title":"Proceedings - 3rd International Conference on Recent Advancement in Computer, Communication and Computational Sciences, RACCCS 2018"},{"key":"10.1016\/j.jss.2026.112870_bib0033","unstructured":"van Solingen, R., Basili, V., Caldiera, G., Rombach, H.D., 2002. Goal question metric (GQM) approach. 10.1002\/0471028959.sof142."},{"key":"10.1016\/j.jss.2026.112870_bib0034","series-title":"Experimentation in Software Engineering","author":"Wohlin","year":"2012"},{"key":"10.1016\/j.jss.2026.112870_bib0035","series-title":"2015 IEEE\/ACM 37th IEEE International Conference on Software Engineering","first-page":"292","article-title":"Do security patterns really help designers?","volume":"Vol. 1","author":"Yskout","year":"2015"}],"container-title":["Journal of Systems and Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S0164121226001032?httpAccept=text\/xml","content-type":"text\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S0164121226001032?httpAccept=text\/plain","content-type":"text\/plain","content-version":"vor","intended-application":"text-mining"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T20:29:12Z","timestamp":1779827352000},"score":1,"resource":{"primary":{"URL":"https:\/\/linkinghub.elsevier.com\/retrieve\/pii\/S0164121226001032"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,8]]},"references-count":35,"alternative-id":["S0164121226001032"],"URL":"https:\/\/doi.org\/10.1016\/j.jss.2026.112870","relation":{},"ISSN":["0164-1212"],"issn-type":[{"value":"0164-1212","type":"print"}],"subject":[],"published":{"date-parts":[[2026,8]]},"assertion":[{"value":"Elsevier","name":"publisher","label":"This article is maintained by"},{"value":"Towards sustainable cloud deployments: A cost (anti)patterns catalog for terraform and CloudFormation","name":"articletitle","label":"Article Title"},{"value":"Journal of Systems and Software","name":"journaltitle","label":"Journal Title"},{"value":"https:\/\/doi.org\/10.1016\/j.jss.2026.112870","name":"articlelink","label":"CrossRef DOI link to publisher maintained version"},{"value":"article","name":"content_type","label":"Content Type"},{"value":"\u00a9 2026 The Author(s). Published by Elsevier Inc.","name":"copyright","label":"Copyright"}],"article-number":"112870"}}