{"id":1472,"date":"2024-11-26T06:26:14","date_gmt":"2024-11-26T06:26:14","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2024\/11\/26\/github-enterprise-cloud-with-data-residency-how-we-built-the-next-evolution-of-github-enterprise-using-github\/"},"modified":"2024-11-26T06:26:14","modified_gmt":"2024-11-26T06:26:14","slug":"github-enterprise-cloud-with-data-residency-how-we-built-the-next-evolution-of-github-enterprise-using-github","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2024\/11\/26\/github-enterprise-cloud-with-data-residency-how-we-built-the-next-evolution-of-github-enterprise-using-github\/","title":{"rendered":"GitHub Enterprise Cloud with data residency: How we built the next evolution of GitHub Enterprise using GitHub"},"content":{"rendered":"<p>Today, <a href=\"https:\/\/github.com\/newsroom\/press-releases\/data-residency-in-the-eu\">we announced that GitHub Enterprise Cloud will offer data residency<\/a>, starting with the European Union (EU) on October 29, 2024, to address a critical desire from customers and enable an optimal, unified experience on GitHub for our customers.<\/p>\n<h2>Data residency and what it means for developers<a href=\"https:\/\/github.blog\/engineering\/#data-residency-and-what-it-means-for-developers\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>We\u2019ve heard for years from enterprises that being able to control where their data resides is critical for them. With data residency, organizations can now store their GitHub code and repository data in their preferred geographical region. With this need met, even more developers across the globe can build on the world\u2019s AI-powered developer platform.<\/p>\n<p>Enterprise Cloud with data residency provides enhanced user control and unique namespaces on ghe.com isolated from the open source cloud on github.com. It\u2019s built on the security, business continuity, and disaster recovery capabilities of Microsoft Azure.<\/p>\n\n<p>This is a huge milestone for our customers and for GitHub\u2013a multi-year effort that required extensive time, effort, and dedication across the company. We\u2019re excited to share a behind-the-scenes look at how we leveraged GitHub to develop the next evolution of Enterprise Cloud.<\/p>\n<h2>Designing the architecture for the next evolution of GitHub Enterprise<a href=\"https:\/\/github.blog\/engineering\/#designing-the-architecture-for-the-next-evolution-of-github-enterprise\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>This effort started in summer of 2022 with a proof of concept (PoC) and involved teams across GitHub. We carefully considered which architecture would enable us to be successful. After iterating with different approaches, we decided to build the new offering as a feature set that extends Enterprise Cloud. This approach would allow us to be consistently in sync with features on github.com and provide the performance, reliability, and security that our customers expect. For hosting, we effectively leveraged Microsoft Azure\u2019s scale, security, and regional footprint to produce a reliable and secured product with data residency built-in, without having to build new data centers ourselves.<\/p>\n<p>As the home for all developers, developer experience is critically important for us. We recognized early on that consistency was important, so we sought to minimize differences in developing for Enterprise Cloud and Enterprise Cloud with data residency. To this end, the architecture across both is very similar, reducing complexity, risk, and development costs. The deployment model is familiar to our developers: it builds off of GitHub Actions. Also, changes to github.com and Enterprise Cloud with data residency are deployed minutes apart as part of a unified pipeline.<\/p>\n<p>To accomplish this, we had to organize the work, modify our build and deployment systems, and validate the quality of the platform. We were able to do all three of these by using GitHub.<\/p>\n<h2>Organizing with GitHub Issues and Projects<a href=\"https:\/\/github.blog\/engineering\/#organizing-with-github-issues-and-projects\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>To organize the project, we used GitHub <a href=\"https:\/\/docs.github.com\/enterprise-cloud@latest\/issues\/tracking-your-work-with-issues\/about-issues\">Issues<\/a> and <a href=\"https:\/\/docs.github.com\/enterprise-cloud@latest\/issues\/planning-and-tracking-with-projects\/learning-about-projects\/about-projects\">Projects<\/a>, taking advantage of <a href=\"https:\/\/docs.github.com\/issues\/planning-and-tracking-with-projects\/customizing-views-in-your-project\/changing-the-layout-of-a-view\">multiple views<\/a> to effectively drive work across multiple projects, more than 100 teams, and over 2,000 issues. Different stakeholders and teams could take advantage of these views to focus on the information most relevant to them. Our talented technical project management team helped coordinate updates and used the filtering and <a href=\"https:\/\/docs.github.com\/issues\/planning-and-tracking-with-projects\/customizing-views-in-your-project\/customizing-the-table-layout#slicing-by-field-values\">slicing<\/a> capabilities of Projects to present continuously updated information for each milestone in an easily consumable way.<\/p>\n<p>We also used upcoming features like <a href=\"https:\/\/github.com\/github\/roadmap\/issues\/927\">issues hierarchy<\/a> to help us understand relationships between issues, and <a href=\"https:\/\/github.com\/github\/roadmap\/issues\/837\">issue types<\/a> to help clearly classify issues across repositories. As part of using these features internally we were able to give feedback to the teams working on them and refine the final product. Keep an eye out for future announcements for issues hierarchy and issue types coming soon!<\/p>\n\n<p>All of these powerful features helped us keep the initiative on track. We were able to clearly understand potential risk areas and partner across multiple teams to resolve blockers and complex dependencies, keeping the project effectively moving forward across multiple years.<\/p>\n<h2>Building Enterprise Cloud with data residency using GitHub<a href=\"https:\/\/github.blog\/engineering\/#building-enterprise-cloud-with-data-residency-using-github\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=PMSoHPuD8G8\">GitHub has always been built using GitHub<\/a>. We wanted to continue this practice to set ourselves up for success with the new data residency feature. To this end, we continued leveraging <a href=\"https:\/\/docs.github.com\/codespaces\/overview\">GitHub Codespaces<\/a> for development and <a href=\"https:\/\/docs.github.com\/enterprise-cloud@latest\/actions\">GitHub Actions<\/a> for continuous integration (CI). In addition, we added deployment targets for new regions. This produced a development, testing, and CI model that required no changes for our developers and a deployment process that was tightly integrated into the existing flow.<\/p>\n<p>We have previously discussed our <a href=\"https:\/\/github.blog\/enterprise-software\/devops\/improving-how-we-deploy-github\/\">deploy then merge<\/a> model, where we deploy branches before merging into the main branch. We expanded this approach to include successful deployments to Enterprise Cloud data residency targets before changes could be merged and considered complete, continuing to use the existing <a href=\"https:\/\/github.blog\/engineering\/engineering-principles\/how-github-uses-merge-queue-to-ship-hundreds-of-changes-every-day\/\">GitHub merge queue<\/a>. A visualization of our monolithic deployment pipeline is shown in the figure below.<\/p>\n\n<p>We start by deploying to environments used by GitHub employees in parallel. This includes the internal environment for Enterprise Cloud with data residency discussed more in the next section. As we use GitHub every day to build GitHub, this step helps us catch issues as employees use the product before it impacts our customers. After automated and manual testing, we proceed to roll out to \u201cCanary.\u201d Canary is the name for the stage where we configure our load balancers to gradually direct an increasing percentage of github.com traffic to the updated version of the code in a staged manner. Additional testing occurs in between each stage. Once we successfully deploy the updated version of github.com to all users, we then deploy and validate Enterprise Cloud with data residency in the EU before finishing the process and merging the pull request.<\/p>\n<p>Ensuring all deployments are successful before we merge means changes are deployed in sync across all Enterprise Cloud environments and monitored effectively. Note that in addition to deployments, we also use feature flags to gradually roll out changes to groups of customers to reduce risk. If a deployment to any target fails, we roll back the change completely. Once we have understood the failure and are ready to deploy again, the entire process starts from the beginning with the merge queue.<\/p>\n<p>Finally, to maintain consistency across all teams and services, we created automation to generate deployment pipelines for over 100 services so, as new targets are introduced, each service automatically deploys to the new environment in a consistent order.<\/p>\n<h2>Using Enterprise Cloud with data residency ourselves<a href=\"https:\/\/github.blog\/engineering\/#using-enterprise-cloud-with-data-residency-ourselves\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>To create the best possible product, we also prioritized using it ourselves and stood up an isolated environment for this purpose. Using our <a href=\"https:\/\/docs.github.com\/migrations\/overview\/migration-paths-to-github\">GitHub migration tooling<\/a>, we moved the day-to-day development for the team working on <a href=\"https:\/\/docs.github.com\/migrations\/using-github-enterprise-importer\/understanding-github-enterprise-importer\/about-github-enterprise-importer\">GitHub Enterprise Importer<\/a> to that environment, and invested in updating our build, deploy, and development environments to support working from the data resident environment. Since its creation, we have deployed to this environment over 8,000 times. This gave us invaluable feedback about the experience of working in the product with issues, pull requests, and actions that we were able to address early in the development process. We were also able to iterate on our status page tooling and internal Service Level Objective (SLO) process with the new environment in mind. The team is continuing to work in this environment today and runs over 1,000 actions jobs a month. This is a testament to the stability and quality we\u2019ve been able to deliver and our commitment to this feature.<\/p>\n<h2>What\u2019s next<a href=\"https:\/\/github.blog\/engineering\/#whats-next\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>We are proud that we\u2019ve been able to evolve Enterprise Cloud to offer data residency while using GitHub to organize, build, deploy, and test it. We\u2019re excited to unlock GitHub for even more developers and for you to experience what we have built, starting on October 29, 2024 in the EU, with more regions on the way.<\/p>\n<div class=\"post-content-cta\">\n<p>If you\u2019re excited about Enterprise Cloud with data residency, <a href=\"https:\/\/githubuniverse.com\/?utm_source=Blog&amp;utm_medium=GitHub&amp;utm_campaign=proxima\">please join us at GitHub Universe 2024<\/a> to learn more and hear from other companies how they\u2019ve used this to accelerate software development and innovation.<\/p>\n<\/div>\n<p>The post <a href=\"https:\/\/github.blog\/engineering\/engineering-principles\/github-enterprise-cloud-with-data-residency\/\">GitHub Enterprise Cloud with data residency: How we built the next evolution of GitHub Enterprise using GitHub<\/a> appeared first on <a href=\"https:\/\/github.blog\/\">The GitHub Blog<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Today, we announced that GitHub Enterprise Cloud will offer data residency, starting with the European Union (EU) on October 29, [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8],"tags":[],"class_list":["post-1472","post","type-post","status-publish","format-standard","hentry","category-github-engineering"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/1472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=1472"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/1472\/revisions"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=1472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=1472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=1472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}