diff --git a/website/blog/2023-11-14-specify-prod-environment.md b/website/blog/2023-11-14-specify-prod-environment.md new file mode 100644 index 00000000000..c6ad2b31027 --- /dev/null +++ b/website/blog/2023-11-14-specify-prod-environment.md @@ -0,0 +1,73 @@ +--- + +title: Why you should specify a production environment in dbt Cloud +description: "The bottom line: You should split your Environments in dbt Cloud based on their purposes (e.g. Production and Staging/CI) and mark one environment as Production. This will improve your CI experience and enable you to use dbt Explorer." +slug: specify-prod-environment + +authors: [joel_labes] + +tags: [dbt Cloud] +hide_table_of_contents: false + +date: 2023-11-14 +is_featured: false + +--- + +:::tip The Bottom Line: +You should [split your Jobs](#how) across Environments in dbt Cloud based on their purposes (e.g. Production and Staging/CI) and set one environment as Production. This will improve your CI experience and enable you to use dbt Explorer. +::: + +[Environmental segmentation](/docs/environments-in-dbt) has always been an important part of the analytics engineering workflow: + +- When developing new models you can [process a smaller subset of your data](/reference/dbt-jinja-functions/target#use-targetname-to-limit-data-in-dev) by using `target.name` or an environment variable. +- By building your production-grade models into [a different schema and database](https://docs.getdbt.com/docs/build/custom-schemas#managing-environments), you can experiment in peace without being worried that your changes will accidentally impact downstream users. +- Using dedicated credentials for production runs, instead of an analytics engineer's individual dev credentials, ensures that things don't break when that long-tenured employee finally hangs up their IDE. + +Historically, dbt Cloud required a separate environment for _Development_, but was otherwise unopinionated in how you configured your account. This mostly just worked – as long as you didn't have anything more complex than a CI job mixed in with a couple of production jobs – because important constructs like deferral in CI and documentation were only ever tied to a single job. + +But as companies' dbt deployments have grown more complex, it doesn't make sense to assume that a single job is enough anymore. We need to exchange a job-oriented strategy for a more mature and scalable environment-centric view of the world. To support this, a recent change in dbt Cloud enables project administrators to [mark one of their environments as the Production environment](/docs/deploy/deploy-environments#set-as-production-environment-beta), just as has long been possible for the Development environment. + +Explicitly separating your Production workloads lets dbt Cloud be smarter with the metadata it creates, and is particularly important for two new features: dbt Explorer and the revised CI workflows. + + + +## Make sure dbt Explorer always has the freshest information available + +**The old way**: Your dbt docs site was based on a single job's run. + +**The new way**: dbt Explorer uses metadata from across every invocation in a defined Production environment to build the richest and most up-to-date understanding of your project. + +Because dbt docs could only be updated by a single predetermined job, users who needed their documentation to immediately reflect changes deployed throughout the day (regardless of which job executed them) would find themselves forced to run a dedicated job which did nothing other than run `dbt docs generate` on a regular schedule. + +The Discovery API that powers dbt Explorer ingests all metadata generated by any dbt invocation, which means that it can always be up to date with the applied state of your project. However it doesn't make sense for dbt Explorer to show docs based on a PR that hasn't been merged yet. + +To avoid this conflation, you need to mark an environment as the Production environment. All runs completed in _that_ environment will contribute to dbt Explorer's, while others will be excluded. (Future versions of Explorer will support environment selection, so that you can preview your documentation changes as well.) + +## Run Slimmer CI than ever with environment-level deferral + +**The old way**: [Slim CI](/guides/set-up-ci?step=2) deferred to a single job, and would only detect changes as of that job's last build time. + +**The new way**: Changes are detected regardless of the job they were deployed in, removing false positives and overbuilding of models in CI. + +Just like dbt docs, relying on a single job to define your state for comparison purposes leads to a choice between unnecessarily rebuilding models which were deployed by another job, or creating a dedicated job that runs `dbt compile` on repeat to keep on top of all changes. + +By using the environment as the arbiter of state, any time a change is made to your Production deployment it will immediately be taken into consideration by subsequent Slim CI runs. + +## The easiest way to break apart your jobs {#how} + + + +For most projects, changing from a job-centric to environment-centric approach to metadata is straightforward and immediately pays dividends as described above. Assuming that your Staging/CI and Production jobs are currently intermingled, you can extricate them as follows: + +1. Create a new dbt Cloud environment called Staging +2. For each job that belongs to the Staging environment, edit the job and update its environment +3. Tick the ["Mark as Production environment" box](/docs/deploy/deploy-environments#set-as-production-environment-beta) in your original environment's settings + +## Conclusion + +Until very recently, I only thought of Environments in dbt Cloud as a way to use different authentication credentials in different contexts. And until very recently, I was mostly right. + +Not anymore. The metadata dbt creates is critical for effective data teams – whether you're concerned about cost savings, discoverability, increased development speed or reliable results across your organization – but is only fully effective if it's segmented by the environment that created it. + +Take a few minutes to clean up your environments - it'll make all the difference. diff --git a/website/blog/categories.yml b/website/blog/categories.yml index 8103f58cc33..45acf246dff 100644 --- a/website/blog/categories.yml +++ b/website/blog/categories.yml @@ -19,3 +19,5 @@ display_title: SQL magic description: Stories of dbt developers making SQL sing across warehouses. is_featured: true +- name: dbt Cloud + description: Using dbt Cloud to build for scale \ No newline at end of file diff --git a/website/static/img/blog/2023-11-06-differentiate-prod-and-staging-environments/data-landscape.excalidraw b/website/static/img/blog/2023-11-06-differentiate-prod-and-staging-environments/data-landscape.excalidraw new file mode 100644 index 00000000000..be8a0923345 --- /dev/null +++ b/website/static/img/blog/2023-11-06-differentiate-prod-and-staging-environments/data-landscape.excalidraw @@ -0,0 +1,1008 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 129, + "versionNonce": 1482751856, + "isDeleted": false, + "id": "Udy5rK-Jz8k0Fq4imQCvd", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 341.8627251519098, + "y": 39.92541164822043, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 2156.810506184896, + "height": 1036.2360975477432, + "seed": 1146131484, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163923, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 93, + "versionNonce": 432336784, + "isDeleted": false, + "id": "yFoHv_ZLVYq5DdwJxTXrQ", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 393.7163289388021, + "y": 248.74700927734375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 142.6879425048828, + "height": 70, + "seed": 1947174180, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163923, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Data \nWarehouse", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Data \nWarehouse", + "lineHeight": 1.25, + "baseline": 60 + }, + { + "type": "text", + "version": 147, + "versionNonce": 82809200, + "isDeleted": false, + "id": "18XKDb5pYJYJQPYEshmg4", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 411.73432668050134, + "y": 485.4708455403644, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 106.65194702148438, + "height": 35, + "seed": 574631460, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163923, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "git repo", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "git repo", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 72, + "versionNonce": 815824272, + "isDeleted": false, + "id": "5eUI6A7oSEvd69NrXYNoc", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 398.70032246907556, + "y": 803.185655381944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 132.71995544433594, + "height": 35, + "seed": 1782580380, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163923, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "dbt Cloud", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "dbt Cloud", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 138, + "versionNonce": 98296688, + "isDeleted": false, + "id": "L_y_veh-MeHyKFX1eH_jc", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 625.8938259548611, + "y": 154.95136854383676, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 506.8489583333335, + "height": 875.4567464192709, + "seed": 89476252, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163923, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 353, + "versionNonce": 1088048016, + "isDeleted": false, + "id": "cXSP5cBcW7nCrji0UWwUB", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1247.2498236762153, + "y": 154.95136854383676, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 506.8489583333335, + "height": 875.4567464192709, + "seed": 303420452, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 211, + "versionNonce": 158201200, + "isDeleted": false, + "id": "Zx2HStRZKGZ9rinR0kE5E", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1868.892550998264, + "y": 155.0846964518229, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 506.8489583333335, + "height": 875.4567464192709, + "seed": 650869924, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 91, + "versionNonce": 78272912, + "isDeleted": false, + "id": "epO5kSyuGRV5wTUD-s9zZ", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 853.561743842231, + "y": 97.15853542751734, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 51.79998779296875, + "height": 35, + "seed": 2015553052, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Dev", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Dev", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 209, + "versionNonce": 887998320, + "isDeleted": false, + "id": "fT31nBE0B8HbloZlX-nDt", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1484.1716715494792, + "y": 97.15853542751734, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 33.2919921875, + "height": 35, + "seed": 549760924, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "CI", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "CI", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 184, + "versionNonce": 793290640, + "isDeleted": false, + "id": "eTKqHyL2wEJwRjyzONlcj", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 2091.321043226454, + "y": 97.15853542751734, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 61.991973876953125, + "height": 35, + "seed": 1462334492, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Prod", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Prod", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 96, + "versionNonce": 1151555952, + "isDeleted": false, + "id": "VhROTjE1abDd9ZOeAMg-U", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 689.6759711371528, + "y": 201.00466579861114, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 376.7974175347222, + "height": 165.48468695746527, + "seed": 2047365540, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 141, + "versionNonce": 1290614160, + "isDeleted": false, + "id": "k5MJxECeWuQJb8SwV3oVW", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 721.2427775065105, + "y": 248.74700927734375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 313.3758544921875, + "height": 70, + "seed": 1555453724, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Dev DB\n(user-specific schemas)", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Dev DB\n(user-specific schemas)", + "lineHeight": 1.25, + "baseline": 60 + }, + { + "type": "rectangle", + "version": 184, + "versionNonce": 36425616, + "isDeleted": false, + "id": "BO6Wxrm4rZ1QDt8vBFRFl", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1293.0316162109375, + "y": 201.0046657986111, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 376.7974175347222, + "height": 165.48468695746527, + "seed": 334336668, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413166096, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 284, + "versionNonce": 621357968, + "isDeleted": false, + "id": "Xavgjps0qvZVKUHlsPVna", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1317.1822781032986, + "y": 248.74700927734375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 330.65185546875, + "height": 70, + "seed": 1180229404, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413169453, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "QA DB\n(temporary PR schemas)", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "QA DB\n(temporary PR schemas)", + "lineHeight": 1.25, + "baseline": 60 + }, + { + "type": "rectangle", + "version": 284, + "versionNonce": 886029680, + "isDeleted": false, + "id": "oDdg4x6QABrYXglaDBIHt", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1926.055840386285, + "y": 201.0046657986111, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 376.7974175347222, + "height": 165.48468695746527, + "seed": 576422428, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 376, + "versionNonce": 254349712, + "isDeleted": false, + "id": "iTxeg4gQp5KRDrzokIgmt", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1973.012624104818, + "y": 248.74700927734375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 282.88385009765625, + "height": 70, + "seed": 1079828124, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Prod DB\n(production schemas)", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Prod DB\n(production schemas)", + "lineHeight": 1.25, + "baseline": 60 + }, + { + "type": "text", + "version": 139, + "versionNonce": 550932336, + "isDeleted": false, + "id": "HQeJiZeuOVrvP9ru2C-78", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 689.5203925238716, + "y": 467.98152669270837, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 379.5958251953125, + "height": 70, + "seed": 508113948, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "branches:\nfeature branches from main", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "branches:\nfeature branches from main", + "lineHeight": 1.25, + "baseline": 60 + }, + { + "type": "text", + "version": 125, + "versionNonce": 1764777872, + "isDeleted": false, + "id": "M7ejyx8utxANmCPivcWvL", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1370.0543535020618, + "y": 485.48152669270837, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 261.2398986816406, + "height": 35, + "seed": 558908580, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "PRs targeting main", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "PRs targeting main", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 27, + "versionNonce": 1211310448, + "isDeleted": false, + "id": "QmOKeCjEaTMIfbw46sNFl", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2041.1730711195205, + "y": 485.48152669270837, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 162.2879180908203, + "height": 35, + "seed": 672916900, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "branch: main", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "branch: main", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 355, + "versionNonce": 1629351312, + "isDeleted": false, + "id": "L8G-_VdBlPmtNgQKn0G2x", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 649.1752794053821, + "y": 426.521769205729, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1692.284138997396, + "height": 153.18637424045136, + "seed": 1687815964, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 110, + "versionNonce": 976057200, + "isDeleted": false, + "id": "rUcnW6bo9uKCXl1tVfZXO", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 668.4320305718317, + "y": 397.55624728732636, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 89.83990478515625, + "height": 25, + "seed": 1724197028, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "dbt_repo", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "dbt_repo", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 552, + "versionNonce": 1613347728, + "isDeleted": false, + "id": "1L7lF8fe7tHoTO95AB_6Z", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 649.1752794053821, + "y": 666.7112833658852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1704.8221164279514, + "height": 306.15851508246516, + "seed": 147107236, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 290, + "versionNonce": 1561167216, + "isDeleted": false, + "id": "br8j-OyjfCajGYHkvT2_0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 668.4320305718317, + "y": 635.5079413519964, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 176.5398406982422, + "height": 25, + "seed": 1051154724, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "dbt Cloud Project", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "dbt Cloud Project", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 84, + "versionNonce": 1753991568, + "isDeleted": false, + "id": "HaZZKdXMOfsniJsylOZZA", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 698.8494194878472, + "y": 706.6618109809027, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 365.6057400173611, + "height": 232.40898980034729, + "seed": 1118957596, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 144, + "versionNonce": 236672880, + "isDeleted": false, + "id": "GVw8HsZ3jf_eN3qat8EnV", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 752.6179436577692, + "y": 726.0786539713541, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 256.78790283203125, + "height": 175, + "seed": 36319388, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Env Name:\nDevelopment (IDE)\n\nJobs:\nnone", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Env Name:\nDevelopment (IDE)\n\nJobs:\nnone", + "lineHeight": 1.25, + "baseline": 165 + }, + { + "type": "rectangle", + "version": 306, + "versionNonce": 1971066768, + "isDeleted": false, + "id": "25b7C18GbdjocbHu7mNFv", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1272.3475477430557, + "y": 697.7114122178818, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 456.6535101996529, + "height": 232.40898980034729, + "seed": 503421476, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 321, + "versionNonce": 1100933488, + "isDeleted": false, + "id": "YGODDCDk9jIVk8fCbxC-f", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1290.6323869493274, + "y": 726.2222222222222, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 420.0838317871094, + "height": 175, + "seed": 1720890788, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Env Name:\nCI\n\nJobs:\nSlim CI: feature branch > main", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Env Name:\nCI\n\nJobs:\nSlim CI: feature branch > main", + "lineHeight": 1.25, + "baseline": 165 + }, + { + "type": "rectangle", + "version": 246, + "versionNonce": 1530045840, + "isDeleted": false, + "id": "--xRdulSAOVkraMLOgPcU", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1904.9254014756943, + "y": 697.5177951388889, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 434.7832573784722, + "height": 232.40898980034729, + "seed": 807301284, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 287, + "versionNonce": 585120624, + "isDeleted": false, + "id": "7C0I5zrwwMb_rw70yiGVh", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 2022.917074415419, + "y": 726.3555501302083, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 198.79991149902344, + "height": 175, + "seed": 2077277220, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Env Name:\nProducation\n\nJobs:\nScheduled jobs", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Env Name:\nProducation\n\nJobs:\nScheduled jobs", + "lineHeight": 1.25, + "baseline": 165 + }, + { + "type": "text", + "version": 43, + "versionNonce": 652702608, + "isDeleted": false, + "id": "0vfDvWeVlJv5WnFpmnAXX", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 1139.5400729709202, + "y": -17.269870334201613, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 561.455810546875, + "height": 45, + "seed": 2048509604, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1699413163924, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Organization's Data Landscape", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Organization's Data Landscape", + "lineHeight": 1.25, + "baseline": 32 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/website/static/img/blog/2023-11-06-differentiate-prod-and-staging-environments/data-landscape.png b/website/static/img/blog/2023-11-06-differentiate-prod-and-staging-environments/data-landscape.png new file mode 100644 index 00000000000..71f94531fcf Binary files /dev/null and b/website/static/img/blog/2023-11-06-differentiate-prod-and-staging-environments/data-landscape.png differ