<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:17:53 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-2057] SPIKE: explore AWS K8s cost models</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2057</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Cost will vary depending on the approach:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;spot EC2 instances vs EKS vs reserved EC2 instances&lt;/li&gt;
	&lt;li&gt;Postgres on EC2 vs RDS&lt;/li&gt;
	&lt;li&gt;container for the UI vs S3 bundles&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Factors to take into account:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;number of clusters (potentially low for development purposes)&lt;/li&gt;
	&lt;li&gt;if there are any reason for why we would need to split clusters&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="81269">FOLIO-2057</key>
            <summary>SPIKE: explore AWS K8s cost models</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10003">Done</resolution>
                                                        <assignee accountid="5cd423bebc70090d6ce241b1">Ian Hardy</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Fri, 31 May 2019 05:55:33 +0000</created>
                <updated>Wed, 3 Jun 2020 16:39:51 +0000</updated>
                            <resolved>Thu, 13 Jun 2019 13:33:27 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                <comments>
                                                            <comment id="195704" author="5cd423bebc70090d6ce241b1" created="Wed, 5 Jun 2019 20:52:52 +0000"  >&lt;p&gt;Doing some initial exploration it looks like RDS instances: Using m4.large size instances (2 cpu, 5 gb ram, 500) for example, a naive estimate for monthly compute/storage costs might be,&lt;/p&gt;

&lt;p&gt;ec2:&lt;br/&gt;
On Demand: $123&lt;br/&gt;
Reserved (1 year no upfront): 92&lt;/p&gt;

&lt;p&gt;RDS:&lt;br/&gt;
On Demand: $185&lt;br/&gt;
Reserved (1 year no upfront): $145&lt;/p&gt;

&lt;p&gt;RDS pricing is broken up into Database storage, Backup Storage, and Data Transfer.&lt;/p&gt;

&lt;p&gt;Database storage:&lt;br/&gt;
The above estimate is for SSD. The base performance would be 1500 IOPS on a 500GB SSD. Its also possible to pay for provisioned IOPS instead of SSD storage. Complete details on RDS storage are here: &lt;a href=&quot;https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Backup Storage:&lt;br/&gt;
Backup storage equal to the amount of provisioned storage is free, and likely sufficient for CI.&lt;/p&gt;

&lt;p&gt;An initial guess is that we could pay up to 2x the upfront cost of running ec2 instances with the same computer resources/storage (not factoring any additional backup storage for ec2) for the benefits of RDS. If our initial goal is to provide storage for the CI environment it seems like RDS is not cost prohibitive and offers some real savings on the labor required to sysadmin PSQL on EC2. &lt;/p&gt;</comment>
                                                            <comment id="195705" author="5fca8bef7cc1030069d4f186" created="Mon, 10 Jun 2019 03:48:09 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cd423bebc70090d6ce241b1&quot; class=&quot;user-hover&quot; rel=&quot;5cd423bebc70090d6ce241b1&quot; data-account-id=&quot;5cd423bebc70090d6ce241b1&quot; accountid=&quot;5cd423bebc70090d6ce241b1&quot; rel=&quot;noreferrer&quot;&gt;Ian Hardy&lt;/a&gt; I have provided information on EKS and EC2 K8s costs within a markdown gist. &lt;a href=&quot;https://gist.github.com/mbstacy/50e5cfa5c4faad560c513595977ad096&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://gist.github.com/mbstacy/50e5cfa5c4faad560c513595977ad096&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="195706" author="5cd423bebc70090d6ce241b1" created="Tue, 11 Jun 2019 20:29:36 +0000"  >&lt;p&gt;Thanks for the writeup Mark. &lt;/p&gt;

&lt;p&gt;A few other updates since this ticket was first written.&lt;/p&gt;

&lt;p&gt;&amp;gt;number of clusters (potentially low for development purposes)&lt;br/&gt;
One cluster, running EKS is all that is needed.&lt;br/&gt;
&amp;gt;if there are any reason for why we would need to split clusters&lt;br/&gt;
Not planning on splitting across regions. Cluster has worker nodes in different AZs for the us east region&lt;br/&gt;
&amp;gt;container for the UI vs S3 bundles&lt;br/&gt;
S3 bundles are preferred since no compute resources are required&lt;/p&gt;

&lt;p&gt;Since we&apos;re running the one cluster, I think it would make sense to EKS (already using) and RDS. Should there be a need to run a large number of database instances in the future we could try to optimize for cost by using ec2. It seems reasonable to me to start with reserved reserved instances for worker nodes. There&apos;s some additional overhead to use spot instances to make sure the cluster can handle an instance disappearing on short notice&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="79601">FOLIO-2072</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="81241">FOLIO-2019</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="10721">UXPROD-1827</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81340">FOLIO-2117</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81341">FOLIO-2118</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13064">UXPROD-1823</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzx6qv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1154">CP: sprint 65</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10044" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 5 Jun 2019 20:52:52 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>