{"id":18235,"date":"2022-11-15T15:05:32","date_gmt":"2022-11-15T15:05:32","guid":{"rendered":"https:\/\/showbizztoday.com\/index.php\/2022\/11\/15\/strategies-and-tools-for-performing-migrations-on-platform\/"},"modified":"2022-11-15T15:05:33","modified_gmt":"2022-11-15T15:05:33","slug":"strategies-and-tools-for-performing-migrations-on-platform","status":"publish","type":"post","link":"https:\/\/showbizztoday.com\/index.php\/2022\/11\/15\/strategies-and-tools-for-performing-migrations-on-platform\/","title":{"rendered":"Strategies and Tools for Performing Migrations on Platform"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div>\n        <!-- post title --><\/p>\n<div class=\"posted-by\">\n            <img decoding=\"async\" src=\"https:\/\/engineering.atspotify.com\/wp-content\/themes\/theme-spotify\/images\/icon.png\" alt=\"\"\/><\/p>\n<p>&#13;<br \/>\n                <span class=\"date\">November 15, 2022<\/span>&#13;<br \/>\n                <span class=\"author\">&#13;<br \/>\n                    Published by Raul Herbster (Engineering Manager) and Mariana Ardoino (Staff Engineer)                 <\/span>&#13;\n            <\/p>\n<\/p><\/div>\n<p>        <!-- post details --><\/p>\n<div class=\"img-holder\">\n            <!-- post thumbnail --><\/p>\n<p>                                                <a href=\"https:\/\/engineering.atspotify.com\/2022\/11\/strategies-and-tools-for-performing-migrations-on-platform\/\" title=\"Strategies and Tools for Performing Migrations on Platform\" target=\"_blank\" rel=\"noopener\">&#13;<br \/>\n                        <img src=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Strategies and Tools for Performing Migrations on Platform\" decoding=\"async\" srcset=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform.png 2501w, https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform-250x123.png 250w, https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform-700x344.png 700w, https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform-768x378.png 768w, https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform-1536x755.png 1536w, https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform-2048x1007.png 2048w, https:\/\/storage.googleapis.com\/production-eng\/1\/2022\/11\/Strategies-and-Tools-for-Performing-Migrations-on-Platform-120x59.png 120w\" sizes=\"(max-width: 2501px) 100vw, 2501px\"\/>                    <\/a><br \/>\n                        <!-- \/post thumbnail -->\n        <\/div>\n<p>        <!-- \/post title --><\/p>\n<p>Needing to ship sooner and extra reliably whereas managing a rising variety of contributors and a extra advanced codebase looks as if the destiny of each hyper-growth tech firm. For platform groups, the problem isn&#8217;t any completely different. How can we rapidly roll out and enhance the adoption of latest applied sciences safely with a rising codebase and group?\u00a0<\/p>\n<h3>Problem area<\/h3>\n<p>Spotify\u2019s cellular codebase has been rising tremendously (by 29% in 2019, 49% in 2020, and 23% in 2021). As our enterprise expands, our codebase evolves with new experiences, akin to Spotify Live. At the identical time, Spotify continues to tackle extra engineers, rising the variety of modifications within the cellular codebase over time.<\/p>\n<p>A yr and a half in the past, we kicked off an initiative throughout the Mobile Engineering Strategy program, engaged on a number of migrations to permit shopper options to be developed in an remoted surroundings \u2014 equally to backend microservices.\u00a0<\/p>\n<p>Since then, about 2,200 Android and iOS elements have been related to a system, and most of our Android and iOS codebases have been migrated to construct with Google\u2019s open supply construct system (<a href=\"https:\/\/bazel.build\/\" target=\"_blank\" rel=\"noopener\">Bazel)<\/a>, an enormous effort impacting greater than 100 squads throughout the corporate.\u00a0\u00a0<\/p>\n<h3>Key challenges<\/h3>\n<p>We imagine that migrations will develop into more difficult as our codebase and group develop in measurement and complexity. We want to contemplate such difficult migrations to be the norm going ahead, if we wish to ship platform options effectively and at scale for cellular at Spotify.\u00a0<\/p>\n<p>Below are some challenges that we confronted throughout our journey. We\u2019ve supplied the eventualities with signs (\u201cWhen\u201d), what you need to keep away from when dealing with the state of affairs (\u201cDon\u2019t\u201d), and what we recommend that you simply do (\u201cDo\u201d).<\/p>\n<h4>Challenge 1: Defining the scope<\/h4>\n<p>How can we create change and produce standardized architectural options that help most use circumstances with out undermining others?<\/p>\n<p><strong>WHEN:\u00a0<\/strong><\/p>\n<ul>\n<li>The scope appears large \u2014 there\u2019s a sense that quite a few use circumstances should be addressed.<\/li>\n<li>It\u2019s troublesome to know the place to start with the quantity of tech debt, modifications required, and use circumstances to help.<\/li>\n<li>Stakeholders attain out a number of occasions, not totally understanding what they&#8217;re presupposed to do through the migration.<\/li>\n<\/ul>\n<p><strong>DON\u2019T:<\/strong><\/p>\n<ul>\n<li>Try to establish all doable eventualities earlier than rolling out the answer.<\/li>\n<li>Start a big migration with out an estimated roadmap and definition of success.<\/li>\n<li>Reach out to stakeholders and not using a clear definition of what they should do.<\/li>\n<\/ul>\n<p><strong>DO:<\/strong><\/p>\n<ul>\n<li>Know your objectives. Create a product transient that explains what you might be doing, why you might be doing it, and the way you&#8217;re going to do it.<\/li>\n<li>Focus on the values. Changing them is time-consuming, however reframe objectives to higher align when wanted.<\/li>\n<li>Address your viewers. Understand their psychological fashions so that you could speak about what\u2019s related, join the place their wants are, and discover proxies to broaden your attain.<\/li>\n<li>Start small. Create a proof of idea, validate it with stakeholders, and get the migration by means of alpha, beta, and GA product lifecycles. Add use circumstances as you uncover them, mapping out the commonest ones first. This will mean you can get sufficient suggestions and incrementally help the completely different use circumstances.<\/li>\n<li>Collaborate! Collaboration is vital within the early phases. Find early adopters who&#8217;re wanting to attempt your options and can develop into ambassadors in their very own tribes. This will finally assist with scalability as properly.\u00a0<\/li>\n<\/ul>\n<h4>Challenge 2: Scaling up<\/h4>\n<p>How can we drive massive architectural and infrastructure modifications sooner in a hyper-growing group?\u00a0<\/p>\n<p><strong>WHEN:\u00a0<\/strong><\/p>\n<ul>\n<li>Large numbers of squads are impacted by the modifications (greater than 100 squads).<\/li>\n<li>There is a big quantity of labor \u2014 together with guide refactorings that should be performed by the squads through the migration.<\/li>\n<li>Progress is sluggish \u2014 there\u2019s an enormous variety of stakeholders and dependencies.<\/li>\n<li>Stakeholders are overwhelmed with the continuing migrations.<\/li>\n<\/ul>\n<p><strong>DON\u2019T:<\/strong><\/p>\n<ul>\n<li>Believe that enormous infrastructure and structure modifications are inconceivable or not wanted in a big group.<\/li>\n<li>Conform with shifting slower when making infrastructure\/architectural modifications.\u00a0<\/li>\n<\/ul>\n<p><strong>DO:<\/strong><\/p>\n<ul>\n<li>Focus on stakeholder administration. Identify the completely different stakeholders so as of precedence. Be involved with them (e.g., Slack, e-mail teams). Tell them concerning the significance of your effort.\u00a0<\/li>\n<li>Communicate. Keep your viewers engaged by sharing the progress by means of newsletters and office posts.\u00a0<\/li>\n<li>Look to automation. Simplify the migration course of by investing in automation upfront. Do that you must refactor the code? Could the identical step be performed mechanically utilizing a script?\u00a0<\/li>\n<li>Make time for spike weeks. Partner with squads and tribes to collectively dedicate every week to work on the migration.\u00a0<\/li>\n<li>Use a number of assets to extend your attain. Education applications can assist onboard groups to new ideas and migrations, with the potential for making use of them immediately.\u00a0<\/li>\n<li>Introduce the corporate\u2019s engineering practices within the onboarding applications to make sure that new joiners perceive and comply with the really useful finest practices from the beginning.<\/li>\n<\/ul>\n<h4>Challenge 3: Competing priorities<\/h4>\n<p>What\u2019s the steadiness between having platform groups working to cut back tech debt and undertake new applied sciences versus holding squads accountable for the standard of the code they personal?<\/p>\n<p><strong>WHEN:\u00a0<\/strong><\/p>\n<ul>\n<li>Stakeholders are concerned in high-priority initiatives and have little time to undertake your options.<\/li>\n<li>Stakeholders suppose they&#8217;re slowed down by platform migrations and usually are not motivated to undertake new applied sciences.\u00a0<\/li>\n<li>Projects dilute and the crew(s) driving the migration feels unmotivated, probably with some members leaving.<\/li>\n<li>Code modifications are vital and in battle with the path of the migration.<\/li>\n<\/ul>\n<p><strong>DON\u2019T:<\/strong><\/p>\n<ul>\n<li>Believe that stakeholders perceive the significance and influence of your migration and can prioritize it \u2014 they&#8217;ve loads of different work to do as properly.<\/li>\n<li>Give in. \u201cWe are busy working on a higher-priority bet\u201d is a typical argument to not execute on platform migrations.<\/li>\n<li>Consider the metrics and objectives to be set in stone and troublesome to vary.<\/li>\n<\/ul>\n<p><strong>DO:<\/strong><\/p>\n<ul>\n<li>Motivate. Showcase the optimistic influence of your migration to stakeholders and encourage them to get the work performed.<\/li>\n<li>Continuously consider. Have common checkpoints through the quarter to guage the velocity of the migration to succeed in your quarterly, half-yearly, or yearly objectives.\u00a0<\/li>\n<li>Manage threat. If the migration is shifting slowly, how are you going to tweak the method to succeed in the objectives? Can you streamline the method? Do you want extra engineers? Can you rent contractors? Can you affect different tribes to deliver your efforts to their backlog?<\/li>\n<li>Take the ache on-platform. When doable, make the required modifications on behalf of the group to allow them to concentrate on creating enterprise worth for our customers.<\/li>\n<li>Monitor modifications that go towards migration KPIs and create channels with groups to help them.<\/li>\n<\/ul>\n<h4><strong>Challenge 4: Being accountable<\/strong><\/h4>\n<p>How will we maintain groups accountable and hold them engaged within the adoption of latest applied sciences that require massive infrastructure modifications and refactoring?<\/p>\n<p><strong>WHEN:<\/strong><\/p>\n<ul>\n<li>There\u2019s an absence of accountability within the adoption of latest applied sciences, therefore migrations are taking longer.<\/li>\n<li>It\u2019s exhausting to foretell when the migration will finish.<\/li>\n<\/ul>\n<p><strong>DON\u2019T:<\/strong><\/p>\n<ul>\n<li>Expect there to be inside\/exterior alignment when driving massive modifications over time.<\/li>\n<li>Think that it\u2019s exhausting to measure the progress and influence of infrastructure modifications.<\/li>\n<\/ul>\n<p><strong>DO:<\/strong><\/p>\n<ul>\n<li>Delineate the definition of performed. Use information and pattern graphs to present projections. It\u2019s necessary to grasp the place you might be ranging from and how briskly you might be progressing so that you could estimate how briskly you&#8217;ll transfer sooner or later and whether or not that you must make any changes to hurry up the migration.<\/li>\n<li>Present your progress. Take management of the definition of success and talk typically to maintain your viewers engaged and onboarded together with your modifications.\u00a0<\/li>\n<li>Use dashboards. Metrics and dashboards will talk the progress and influence, in addition to assist prioritize your work at scale over time.\u00a0<\/li>\n<li>Maintain a timeline. Keep your roadmap updated. Over time, your crew and stakeholders may change, they usually\u2019ll want to pay attention to your migration and timeline. A roadmap additionally will increase transparency, allows suggestions and collaboration, and helps establish any roadblocks.<\/li>\n<\/ul>\n<h3>Conclusion<\/h3>\n<p>Migrations of this nature and magnitude may develop into a brand new regular \u2014 in any other case, it may be inconceivable for the corporate to carry out sure modifications. New applied sciences will come, and we are going to do the required migrations, although we must always reduce the disruption for groups. Some platform merchandise will inherently require migrations, and doubtlessly in a big scale, and we must always think about them a part of the event lifecycle, along with testing and design.\u00a0<\/p>\n<p>We\u2019ve discovered a terrific deal from this effort and hope that this information is beneficial for different groups driving massive migrations. If you wish to be taught extra about our challenges and the way we solved them, don&#8217;t hesitate to succeed in out to us.<\/p>\n<p>Special because of Marvin, Foundation, BoB, and Rubik for driving this effort.\u00a0\u00a0<\/p>\n<p><\/p><\/div>\n<p><script async defer crossorigin=\"anonymous\"\n    src=\"https:\/\/connect.facebook.net\/en_US\/sdk.js#xfbml=1&#038;autoLogAppEvents=1&#038;version=v7.0&#038;appId=256751791017051\">\n<\/script><br \/>\n<br \/>[ad_2]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] &#13; November 15, 2022&#13; &#13; Published by Raul Herbster (Engineering Manager) and Mariana Ardoino (Staff Engineer) &#13; &#13; Needing to ship sooner and extra reliably whereas managing a rising variety of contributors and a extra advanced codebase looks as if the destiny of each hyper-growth tech firm. For platform groups, the problem isn&#8217;t any [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":18237,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":{"0":"post-18235","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-spotify"},"_links":{"self":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/posts\/18235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/comments?post=18235"}],"version-history":[{"count":0,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/posts\/18235\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/media\/18237"}],"wp:attachment":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/media?parent=18235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/categories?post=18235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/tags?post=18235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}