{"id":8503,"date":"2022-09-02T11:50:07","date_gmt":"2022-09-02T11:50:07","guid":{"rendered":"https:\/\/clustercs.com\/kb\/?docs=docly-documentation\/development-environment\/development-environment-concepts"},"modified":"2022-09-19T12:34:12","modified_gmt":"2022-09-19T12:34:12","slug":"development-environment-concepts","status":"publish","type":"docs","link":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/","title":{"rendered":"Development Environment &#8211; Concepts"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>Time is&nbsp;important&nbsp;and at&nbsp;ClusterCS&nbsp;we value this resource&nbsp;immensely.&nbsp;Development environments&nbsp;(Dev Env)&nbsp;is one of the most powerful features of&nbsp;ClusterCS&nbsp;and it really helps save a lot of time.<\/p>\n\n\n\n<p>The&nbsp;workflow&nbsp;for making updates to a website&nbsp;by creating a&nbsp;development&nbsp;environment where changes&nbsp;are made and tested&nbsp;and then migrated back to live can be a very&nbsp;time-consuming&nbsp;process.&nbsp;ClusterCS&nbsp;helps reduce&nbsp;time spent in this repetitive migration actions by a&nbsp;very high degree. Automating this process also means we avoid&nbsp;human error&nbsp;which&nbsp;ensures&nbsp;a higher quality of&nbsp;the work and saves time spent in debugging&nbsp;such errors.<\/p>\n\n\n\n<p>A website requires&nbsp;continuous maintenance and\/or development of new features. The bad way is to&nbsp;do such work directly on the live environment \u2013 installing a plugin, working on a theme or some code. This can expose&nbsp;errors to the visitors that are being active on the website. The right way is to create a separate development environment where changes can be made, verified and then&nbsp;copied back on the live website.&nbsp;But this normally comes with some costs, generally in time spent&nbsp;in creating the development environment&nbsp;and then migrating back and forth&nbsp;but for a lot of people&nbsp;that are not technical enough it&nbsp;can also get to be&nbsp;a&nbsp;pretty impossible&nbsp;good practice.<\/p>\n\n\n\n<p>ClusterCS&nbsp;automates this process by providing an easy interface to manage the&nbsp;process of creating environments and migrating from Production to dev and then back. A process that can often take a few hours, can be now done within a few minutes&nbsp;by developers and non-technical people alike.<\/p>\n\n\n\n<p>The idea is simple. A&nbsp;ClusterCS&nbsp;domain&nbsp;contains the primary \u201cProduction\u201d environment which is the live website visitors see&nbsp;and then multiple development environments&nbsp;can be created behind the&nbsp;so that work can be done behind the&nbsp;scenes and pushed to Production only when ready and verified.&nbsp;Let consider a couple&nbsp;of workflow examples.<\/p>\n\n\n\n<p>Let\u2019s suppose I am a blogger, writing articles and I am pretty good at managing my WordPress edit, publish and eventually plugin management workflow.&nbsp;I would like to&nbsp;update&nbsp;my&nbsp;WordPress core or plugins&nbsp;from time to time and&nbsp;sometimes I find nice plugins that enhance the blog functionality. My problem is that I don\u2019t know if these updates&nbsp;will&nbsp;break&nbsp;my website and cause downtime that affects my visitors. With&nbsp;ClusterCS&nbsp;workflow&nbsp;I can create a new&nbsp;development environment, migrate from Production to dev, make changes, test everything under the dev environment and&nbsp;then migrate back to Production when I am satisfied.&nbsp;All these actions are simplified to mostly single clicks and where more options are available to&nbsp;accommodate advanced scenarios,&nbsp;everything is preconfigured that works well for such simple cases.&nbsp;Between&nbsp;migrating from Production to dev and then back, I need to make my updates and test. Each development environment has a special link&nbsp;in the interface that&nbsp;opens&nbsp;that environment specifically for me,&nbsp;under the same domain URL,&nbsp;while the rest of the world sees the normal&nbsp;Production website. This is very important in cases such as WordPress where a URL change would imply&nbsp;changes in the database to replace the live domain URL with the development URL. This is not the case with&nbsp;ClusterCS&nbsp;because you can \u201csee\u201d and update the development website under the same URL without affecting website users.&nbsp;I can now login in this development instance of my WordPress blog, update or install plugins, test the front end and when I am&nbsp;satisfied&nbsp;I can use the Migrate section to publish my updated website&nbsp;to the Production environment for all users.<\/p>\n\n\n\n<p>If I am a developer&nbsp;and I want to have a more solid approach by using GIT between my development branches,&nbsp;ClusterCS&nbsp;can automatically enable GIT support and manage each environment&nbsp;as a GIT branch.&nbsp;Each domain will have&nbsp;its&nbsp;own GIT repository which contains a branch for each development environment created.&nbsp;Migrating from one environment to the other can be done with the \u201cgit push\u201d mechanism to ensure correct workflow&nbsp;and git tracking. I can simply make updates through FTP\/SFTP to the specific environment code&nbsp;and when migrating to Production or another environment,&nbsp;ClusterCS&nbsp;will execute a \u201cgit commit\u201d on the source branch and use \u201cgit push\u201d&nbsp;with post-update hooks&nbsp;as the migration mechanism. Multiple developers can work in this manner in parallel on a dedicated environment and multiple environments can be used for various features that can be developed in parallel.&nbsp;The GIT repository can also be accessed directly&nbsp;through&nbsp;SSH for&nbsp;direct management of operations.<\/p>\n\n\n\n<p>Development environments&nbsp;support&nbsp;advanced&nbsp;scenarios.&nbsp;ClusterCS&nbsp;can manage simple standalone servers&nbsp;and large web clusters.&nbsp;The migration and tracking options allow&nbsp;managing more complicated cases just as easy.&nbsp;A section called \u201cTracked Items\u201d allows you to manage and define special&nbsp;files that can be automatically overwritten after a migration with environment specific variables.<\/p>\n\n\n\n<p>A&nbsp;license addon is required&nbsp;in order to use \u201cDevelopment Environments\u201d.&nbsp;A trial period is also available&nbsp;to experience this feature. The paid license&nbsp;is a single addon paid monthly and is not a per server&nbsp;or per domain&nbsp;cost. Since&nbsp;ClusterCS&nbsp;can allow you to manage all your servers under the same interface, enabling this license add-on&nbsp;gives you access to this feature for all the servers and domains under your&nbsp;ClusterCS&nbsp;instance.<\/p>\n\n\n\n<p>Do try it and see how easy and time saving this is. Any feedback is very welcome&nbsp;and doesn\u2019t hesitate to contact the support department for the assistance you require.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Time is&nbsp;important&nbsp;and at&nbsp;ClusterCS&nbsp;we value this resource&nbsp;immensely.&nbsp;Development environments&nbsp;(Dev Env)&nbsp;is one of the most powerful features of&nbsp;ClusterCS&nbsp;and it really helps save a lot of time. The&nbsp;workflow&nbsp;for making updates to a website&nbsp;by creating a&nbsp;development&nbsp;environment where changes&nbsp;are made and tested&nbsp;and then migrated back to live can be a very&nbsp;time-consuming&nbsp;process.&nbsp;ClusterCS&nbsp;helps reduce&nbsp;time spent in this repetitive migration actions by a&nbsp;very high [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":8445,"menu_order":2,"comment_status":"open","ping_status":"closed","template":"","doc_tag":[],"class_list":["post-8503","docs","type-docs","status-publish","hentry","no-post-thumbnail"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Development Environment - Concepts - ClusterCS Knowledge Base<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Development Environment - Concepts - ClusterCS Knowledge Base\" \/>\n<meta property=\"og:description\" content=\"Time is&nbsp;important&nbsp;and at&nbsp;ClusterCS&nbsp;we value this resource&nbsp;immensely.&nbsp;Development environments&nbsp;(Dev Env)&nbsp;is one of the most powerful features of&nbsp;ClusterCS&nbsp;and it really helps save a lot of time. The&nbsp;workflow&nbsp;for making updates to a website&nbsp;by creating a&nbsp;development&nbsp;environment where changes&nbsp;are made and tested&nbsp;and then migrated back to live can be a very&nbsp;time-consuming&nbsp;process.&nbsp;ClusterCS&nbsp;helps reduce&nbsp;time spent in this repetitive migration actions by a&nbsp;very high [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/\" \/>\n<meta property=\"og:site_name\" content=\"ClusterCS Knowledge Base\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T12:34:12+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/\",\"url\":\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/\",\"name\":\"Development Environment - Concepts - ClusterCS Knowledge Base\",\"isPartOf\":{\"@id\":\"https:\/\/clustercs.com\/kb\/#website\"},\"datePublished\":\"2022-09-02T11:50:07+00:00\",\"dateModified\":\"2022-09-19T12:34:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/clustercs.com\/kb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ClusterCS Documentation\",\"item\":\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Development Environment\",\"item\":\"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Development Environment &#8211; Concepts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/clustercs.com\/kb\/#website\",\"url\":\"https:\/\/clustercs.com\/kb\/\",\"name\":\"ClusterCS Knowledge Base\",\"description\":\"Welcome to ClusterCS Documentation\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/clustercs.com\/kb\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Development Environment - Concepts - ClusterCS Knowledge Base","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/","og_locale":"en_US","og_type":"article","og_title":"Development Environment - Concepts - ClusterCS Knowledge Base","og_description":"Time is&nbsp;important&nbsp;and at&nbsp;ClusterCS&nbsp;we value this resource&nbsp;immensely.&nbsp;Development environments&nbsp;(Dev Env)&nbsp;is one of the most powerful features of&nbsp;ClusterCS&nbsp;and it really helps save a lot of time. The&nbsp;workflow&nbsp;for making updates to a website&nbsp;by creating a&nbsp;development&nbsp;environment where changes&nbsp;are made and tested&nbsp;and then migrated back to live can be a very&nbsp;time-consuming&nbsp;process.&nbsp;ClusterCS&nbsp;helps reduce&nbsp;time spent in this repetitive migration actions by a&nbsp;very high [&hellip;]","og_url":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/","og_site_name":"ClusterCS Knowledge Base","article_modified_time":"2022-09-19T12:34:12+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/","url":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/","name":"Development Environment - Concepts - ClusterCS Knowledge Base","isPartOf":{"@id":"https:\/\/clustercs.com\/kb\/#website"},"datePublished":"2022-09-02T11:50:07+00:00","dateModified":"2022-09-19T12:34:12+00:00","breadcrumb":{"@id":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/development-environment-concepts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/clustercs.com\/kb\/"},{"@type":"ListItem","position":2,"name":"ClusterCS Documentation","item":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/"},{"@type":"ListItem","position":3,"name":"Development Environment","item":"https:\/\/clustercs.com\/kb\/docs\/clustercs\/development-environment\/"},{"@type":"ListItem","position":4,"name":"Development Environment &#8211; Concepts"}]},{"@type":"WebSite","@id":"https:\/\/clustercs.com\/kb\/#website","url":"https:\/\/clustercs.com\/kb\/","name":"ClusterCS Knowledge Base","description":"Welcome to ClusterCS Documentation","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/clustercs.com\/kb\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/docs\/8503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/comments?post=8503"}],"version-history":[{"count":1,"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/docs\/8503\/revisions"}],"predecessor-version":[{"id":8713,"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/docs\/8503\/revisions\/8713"}],"up":[{"embeddable":true,"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/docs\/8445"}],"wp:attachment":[{"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/media?parent=8503"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/clustercs.com\/kb\/wp-json\/wp\/v2\/doc_tag?post=8503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}