{"id":58103,"date":"2023-08-27T16:39:19","date_gmt":"2023-08-27T11:09:19","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=58103"},"modified":"2023-09-06T17:04:00","modified_gmt":"2023-09-06T11:34:00","slug":"successful-migration-to-aws-graviton-and-the-results-achieved","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/successful-migration-to-aws-graviton-and-the-results-achieved\/","title":{"rendered":"Successful Migration to AWS Graviton and the Results Achieved"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-58102 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/08\/graviton-1024x427.png\" alt=\"\" width=\"625\" height=\"261\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/08\/graviton-1024x427.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/08\/graviton-300x125.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/08\/graviton-768x320.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/08\/graviton-1536x640.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/08\/graviton-624x260.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/08\/graviton.png 1920w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<h2><b>Introduction<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Our customer is one of the companies that provide broadband connections to thousands of customers throughout the country. Our DevOps Team manages the mobile application and web application for the customer.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Our Team was looking to lower the cost and improve the performance of the overall infrastructure of our customer\u2019s web and mobile application by migrating the essential services to AWS Graviton-based instances<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>Challenge<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Our customer\u2019s web application uses Drupal, and our Mobile application uses Java. There were other services that were using X86 and AMD-based instances, which were impacting the overall cost of infrastructure.<\/span><\/p>\n<h3><b>High-Level Idea<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">AWS Graviton2 processors are custom-designed for the cloud. They offer up to 40% better price performance than comparable x86-based processors. So, it was a challenge to test these technologies with the Graviton-based instances.<br \/>\n<\/span><\/p>\n<h3><b>Solution<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">We<\/span><span style=\"font-weight: 400;\"> started with Finding the services that were compatible with Graviton-based instances and used a phased approach for migrating the infrastructure.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We started exploring the services that we were going to migrate to Graviton; we started by analyzing one service at a time. After researching, we started migrating the non-production resources to Graviton. We started migrating after taking a proper backup of the data after successfully migrating the service. We asked our tester to do a proper sanity check of the environment in which we migrated the resources.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After performing the Graviton migration in non-production, we found that our infrastructure was performing better than the previous one, and we were able to save 15-20% of the cost in our non-prod environment.<\/span><\/p>\n<h2><b>Detailed Migration Steps:<\/b><\/h2>\n<h3><b>1. Migrating Standalone Instances<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">We were using Elk and Redis in standalone servers for our non-production environment. We started by finding the compatible versions supported in Graviton instances. Then, we created the new Graviton-based instances and started installing the services in them. <\/span>With the help of this approach, we were able to shift our elk and Redis instances to Graviton-based instances.<\/p>\n<p><b>Note: <\/b><span style=\"font-weight: 400;\">You can not migrate these servers by creating snapshots from arm\/X86 Based instances because it will cause an architecture mismatch for Graviton<\/span><b>.<\/b><\/p>\n<h3><b>2. Migrating The RDS and Elasticache Servers<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">We had two ways to migrate the RDS to Graviton-based instances.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">By migrating your current Mysql RDS to Aurora Graviton type. You can use the create aurora read replica option and select the Graviton instances there. After that, you can promote the read replica to <\/span><b>cluster. <\/b><span style=\"font-weight: 400;\">It hardly takes 1 minute to promote the read replica to the <\/span><b>cluster<\/b><span style=\"font-weight: 400;\">. After promoting the read replica to cluster the read replica becomes a writer instance. This procedure also involves minimal data loss and downtime.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">By creating a new Graviton-based RDS from the latest snapshot of RDS, in this case, you will have a data loss as there will be a delay by the time you take the snapshot and migrate it to a newer one.<\/span><\/li>\n<\/ol>\n<p><b>Migrated Instances and Cost Saving:<\/b><\/p>\n<table dir=\"ltr\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col width=\"100\" \/>\n<col width=\"235\" \/>\n<col width=\"229\" \/>\n<col width=\"100\" \/><\/colgroup>\n<tbody>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Service&quot;}\"><strong>Service<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Instance Before Migration and Cost&quot;}\"><strong>Instance Before Migration and Cost<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Instance After Migration and Cost&quot;}\"><strong>Instance After Migration and Cost<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Cost saved&quot;}\"><strong>Cost saved<\/strong><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;ELK(Prod)&quot;}\">ELK(Prod)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;t3a.xlarge($71.98)&quot;}\">t3a.xlarge($71.98)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;t4g.xlarge($65.41)&quot;}\">t4g.xlarge($65.41)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:6.57}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0.00&quot;,&quot;3&quot;:1}\">$6.57<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;ELK(Non-Prod)&quot;}\">ELK(Non-Prod)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;t3a.medium($17.96)&quot;}\">t3a.medium($17.96)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;t4g.medium($16.35)&quot;}\">t4g.medium($16.35)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:1.61}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0.00&quot;,&quot;3&quot;:1}\">$1.61<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">We used the first approach for migrating our infrastructure as it ensured minimal data loss and minimal downtime. It depends on your use case and the type of RDS instance you are using.<\/span><\/p>\n<p><b>Migrating Elasticache<\/b><span style=\"font-weight: 400;\">: For migrating Elasticache we created a new Elasticache server based on the Graviton instance type and then updated the Elasticache endpoints that were used in the application.<\/span><\/p>\n<p><b>Migrated Instances and Cost Saving:<\/b><\/p>\n<table dir=\"ltr\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col width=\"149\" \/>\n<col width=\"216\" \/>\n<col width=\"183\" \/>\n<col width=\"100\" \/>\n<col width=\"123\" \/><\/colgroup>\n<tbody>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Instance Before Migration and Cost&quot;}\"><strong>Instance Before Migration and Cost<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Instance After Migration and Cost&quot;}\"><strong>Instance After Migration and Cost<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Cost SavingCost Saving&quot;}\"><strong>Cost SavingCost Saving<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;No of nodes&quot;}\"><strong>No of nodes<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Total Cost saved&quot;}\"><strong>Total Cost saved<\/strong><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:237}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">$237<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:226}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">$226<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:11}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">$11<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:5}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0.00&quot;,&quot;3&quot;:1}\">$5.00<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:55}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">$55<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><b style=\"font-size: 1rem;\">3. Migrating AutoScaling Group Instances for ECS services<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">For migrating ECS services to Graviton-based instances, we need to create docker images through which we can run docker containers suitable for Graviton-based instances.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For building docker images suitable for Graviton-type instances, we used the <\/span><b>dockebuildx <\/b><span style=\"font-weight: 400;\">tool<\/span> <span style=\"font-weight: 400;\">and<\/span><b> the <\/b><span style=\"font-weight: 400;\">latest OS versions that helped us create Graviton-supported docker containers.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We were using 15 instances based on AMD\/x86 based instances for our mobile application.<\/span><\/p>\n<p><b>Migrated Instances and Cost Saving:<\/b><\/p>\n<table dir=\"ltr\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col width=\"149\" \/>\n<col width=\"216\" \/>\n<col width=\"183\" \/>\n<col width=\"123\" \/><\/colgroup>\n<tbody>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Instance Before Migration and Cost&quot;}\"><strong>Instance Before Migration and Cost<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Instance After Migration and Cost&quot;}\"><strong>Instance After Migration and Cost<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Total instance&quot;}\"><strong>Total instance<\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Total Cost saved&quot;}\"><strong>Total Cost saved<\/strong><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;m5a.xlarge ($8103)&quot;}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">m5a.xlarge ($8103)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;m6g.xlarge ($7381)&quot;}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">m6g.xlarge ($7381)<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:50}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">$50<\/td>\n<td data-sheets-value=\"{&quot;1&quot;:3,&quot;3&quot;:722}\" data-sheets-numberformat=\"{&quot;1&quot;:4,&quot;2&quot;:&quot;\\&quot;$\\&quot;#,##0&quot;,&quot;3&quot;:1}\">$722<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>Results<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">After Migration, we achieved savings of 15% on these migrated services and also achieved improvement in the performance of the overall architecture.<\/span><\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The migration to AWS Graviton was a success for our customers; They achieved cost savings and improvement in performance without affecting the functionality of the services.<\/span><\/p>\n<div class=\"ap-custom-wrapper\"><\/div><!--ap-custom-wrapper-->","protected":false},"excerpt":{"rendered":"<p>Introduction Our customer is one of the companies that provide broadband connections to thousands of customers throughout the country. Our DevOps Team manages the mobile application and web application for the customer. Our Team was looking to lower the cost and improve the performance of the overall infrastructure of our customer\u2019s web and mobile application [&hellip;]<\/p>\n","protected":false},"author":1625,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":98},"categories":[1174,4308,2348],"tags":[2366],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/58103"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1625"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=58103"}],"version-history":[{"count":2,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/58103\/revisions"}],"predecessor-version":[{"id":58378,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/58103\/revisions\/58378"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=58103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=58103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=58103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}