diff --git a/admin/config.yml b/admin/config.yml
new file mode 100644
index 0000000..c3138e8
--- /dev/null
+++ b/admin/config.yml
@@ -0,0 +1,116 @@
+# Sveltia CMS configuration
+
+# This is where we configure the CMS repo and its collections and fields
+# Sveltia CMS generally follows the Decap CMS configuration spec
+# Decap CMS docs: https://decapcms.org/docs/intro/
+# Sveltia CMS docs: https://github.com/sveltia/sveltia-cms#features
+
+local_backend: true
+
+# Enter your GitHub repo path and branch (defaults to master)
+backend:
+ name: github
+ repo: dyvenia/site-thescalableway
+ branch: main
+
+# The folder used to store uploaded images
+media_folder: "assets/images"
+
+# The CMS collections and their fields
+collections:
+
+ - name: "home"
+ label: "Home Page"
+ icon: "home"
+ create: false
+ extension: "njk"
+ format: "frontmatter"
+ files:
+ - file: "src/pages/index.njk"
+ label: "Home"
+ name: "home"
+ fields:
+ - { label: "Hero Title", name: "hero.title", widget: "string" }
+ - { label: "Hero Subtitle", name: "hero.subtitle", widget: "markdown" }
+ - { label: "Learn More Button Text", name: "hero.button_text", widget: "string" }
+ - { label: "Learn More Button Target", name: "hero.button_target", widget: "string" }
+ - { label: "Introduction Title", name: "intro.title", widget: "string" }
+ - { label: "Introduction Content", name: "intro.content", widget: "markdown" }
+ - { label: "Highlight One Title", name: "highlight_one.title", widget: "string" }
+ - { label: "Highlight One Subtitle", name: "highlight_one.subtitle", widget: "markdown" }
+ - { label: "Highlight Two Title One", name: "highlight_two.title1", widget: "string" }
+ - { label: "Highlight Two Title Two", name: "highlight_two.title2", widget: "string" }
+ - { label: "Highlight Two Content", name: "highlight_two.content", widget: "markdown" }
+ - { label: "5 Foundations Title One", name: "foundations_titles.title1", widget: "string" }
+ - { label: "5 Foundations Title Two", name: "foundations_titles.title2", widget: "string" }
+ - label: "Foundations Keys"
+ name: "foundations_elements" #<- this doesn't seem to work
+ widget: "list"
+ fields:
+ - { label: "Title", name: "title", widget: "string" }
+ - { label: "Content", name: "content", widget: "string" }
+ - { label: "About Us", name: "about.title", widget: "string" }
+ - { label: "About Us", name: "about.content", widget: "markdown" }
+ - { label: "Why Us", name: "whyus_intro.title", widget: "string" }
+ - { label: "Why Us Intro", name: "whyus_intro.content", widget: "string" }
+ - label: "Why Us - Elements"
+ name: "whyus_elements"
+ widget: "list"
+ fields:
+ - { label: "Title", name: "title", widget: "string" }
+ - { label: "Content", name: "content", widget: "string" }
+ - { label: "Our Services", name: "our_services.title", widget: "string" }
+ - label: "Our Services Items"
+ name: "our_services_items"
+ widget: "list"
+ fields:
+ - { label: "Title", name: "title", widget: "string" }
+ - { label: "Prefix", name: "prefix", widget: "string" }
+ - { label: "Description", name: "description", widget: "markdown" }
+
+ - name: "blog"
+ label: "Posts"
+ label_singular: "Post"
+ folder: "src/posts/2024"
+ create: true
+ slug: "{{slug}}"
+ fields:
+ - { label: "Title", name: "title", widget: "string" }
+ - { label: "Publish Date", name: "date", widget: "datetime" }
+ - { label: "Author", name: "author", widget: "string"}
+ - { label: "Description", name: "description", widget: "text" }
+ - { label: "Tags", name: "tags", widget: "list", default: ["post"], hint: "Enter tags separated by a comma" }
+ - { label: "Body", name: "body", widget: "markdown" }
+
+ - name: "imprint"
+ label: "Imprint"
+ icon: "policy"
+ extension: "yaml"
+ format: "yaml"
+ files:
+ - file: "src/_data/personal.yaml"
+ label: "Site Imprint"
+ name: "site"
+ fields:
+ - { label: "Email", name: "email", widget: "string", hint: "Public company email address i.e. hello@company.com" }
+ - { label: "Address", name: "address", widget: "text", hint: "Your company legal address" }
+
+ - name: "team"
+ label: "Team"
+ icon: "group"
+ create: true
+ extension: "yaml"
+ format: "yaml"
+ files:
+ - file: "src/_data/team.yaml"
+ label: "Team"
+ name: "team"
+ fields:
+ - label: "Admins"
+ name: "admin"
+ widget: "list"
+ fields:
+ - { label: "Name", name: "name", widget: "string" }
+ - { label: "Profile Picture", name: "image", widget: "image" }
+ - { label: "Short Description", name: "description_short", widget: "text" }
+ - { label: "Long Description", name: "description_long", widget: "text" }
diff --git a/assets/images/Screenshot 2022-03-24 160548.png b/assets/images/Screenshot 2022-03-24 160548.png
new file mode 100644
index 0000000..d551014
Binary files /dev/null and b/assets/images/Screenshot 2022-03-24 160548.png differ
diff --git a/eleventy.config.js b/eleventy.config.js
index 44e088d..ee24db6 100644
--- a/eleventy.config.js
+++ b/eleventy.config.js
@@ -84,6 +84,12 @@ export default async function (eleventyConfig) {
// --------------------- Passthrough File Copy
+ eleventyConfig.addPassthroughCopy("admin/"); // don't process the CMS folder
+ // Disable 11ty dev server live reload when using CMS locally
+ eleventyConfig.setServerOptions({
+ liveReload: false
+ });
+
// -- same path
['src/assets/fonts/', 'src/assets/images/template', 'src/assets/og-images'].forEach(path =>
eleventyConfig.addPassthroughCopy(path)
diff --git a/readme.md b/readme.md
index 6659693..228934d 100644
--- a/readme.md
+++ b/readme.md
@@ -1,7 +1,27 @@
# The Scalable Way
-Based on [eleventy-excellent](https://github.com/madrilene/eleventy-excellent).
+The website of thescalable way dyvenia division.
+### Blog Contribution Guidelines
-### To Dos
-- optimize the syntax css load in css-inline.njk (now using a CDN)
\ No newline at end of file
+Blog articles are markdown files inside the `src/posts` folder. The top of the markdown has a YAML section to define article metadata such as title, description and publish date.
+
+**Code Blocks** are possible with the typical "```" opening and closing. Documentation on syntax highlighting and code blocks is [here](https://www.11ty.dev/docs/plugins/syntaxhighlight/).
+
+**images** should be stored in `src/images`.
+
+### Running the Site Locally
+
+This site is using a static page generator called `eleventy`, you can read its documentation [here](https://www.11ty.dev/).
+
+If you have `npm` installed, you should be able to run a local version running the commands below. Typically the local site will run on `http://127.0.0.1:8080/`.
+
+```bash
+cd site-thescalableway
+
+npm run start
+```
+
+### Theme Support
+
+For support see: [eleventy-excellent](https://github.com/madrilene/eleventy-excellent).
\ No newline at end of file
diff --git a/src/_data/personal.yaml b/src/_data/personal.yaml
index 644c22a..a50b72d 100644
--- a/src/_data/personal.yaml
+++ b/src/_data/personal.yaml
@@ -1,11 +1,7 @@
-email: hola@eyourmail.lol
+email: hello@dyvenia.com
address: |-
- Organization name
- Your street
- 12345, city
- Tel: +34 928231911
+ DYVENIA SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ
+ Kraków 31-047, ul. Józefa Sarego 26/14
+ VAT 6762600902
platforms:
- github: ''
- mastodon: ''
- bluesky: ''
- kofi: ''
+ github: ""
diff --git a/src/_data/team.yaml b/src/_data/team.yaml
index 910c97f..7e6b982 100644
--- a/src/_data/team.yaml
+++ b/src/_data/team.yaml
@@ -1,26 +1,27 @@
-- name: Alessio Civitillo
- image: alessio.jpg
- description_short: |
- An experienced financial analyst and software engineer, Alessio brings a unique blend of expertise and vision to the world of data, ensuring that our clients unlock the hidden connections in their data and deliver value to their stakeholders.
- description_long: |
- Alessio Civitillo has spent over a decade blending financial analysis with software engineering. His work focuses on helping clients discover valuable insights hidden in complex datasets.
+admin:
+ - name: Alessio Civitillo
+ image: alessio.jpg
+ description_short: |
+ An experienced financial analyst and software engineer, Alessio brings a unique blend of expertise and vision to the world of data, ensuring that our clients unlock the hidden connections in their data and deliver value to their stakeholders.
+ description_long: |
+ Alessio Civitillo has spent over a decade blending financial analysis with software engineering. His work focuses on helping clients discover valuable insights hidden in complex datasets.
- By merging data science with strategic thinking, Alessio consistently delivers solutions that drive measurable business success.
+ By merging data science with strategic thinking, Alessio consistently delivers solutions that drive measurable business success.
-- name: Karol
- image: karol.jpg
- description_short: |
- A dedicated data strategist focused on actionable insights and innovative data-driven solutions.
- description_long: |
- Karol specializes in developing data-driven strategies tailored to client goals. His keen analytical skills turn raw data into powerful insights.
+ - name: Karol
+ image: karol.jpg
+ description_short: |
+ A dedicated data strategist focused on actionable insights and innovative data-driven solutions.
+ description_long: |
+ Karol specializes in developing data-driven strategies tailored to client goals. His keen analytical skills turn raw data into powerful insights.
- With a background in finance and tech, Karol bridges the gap between complex data sets and meaningful business decisions.
+ With a background in finance and tech, Karol bridges the gap between complex data sets and meaningful business decisions.
-- name: Mateusz
- image: mateusz.jpg
- description_short: |
- Passionate about turning complex data into clear, actionable intelligence for better decision-making.
- description_long: |
- Mateusz brings expertise in data analytics and process optimization. His focus is on making complex data easy to understand and act upon.
+ - name: Mateusz
+ image: mateusz.jpg
+ description_short: |
+ Passionate about turning complex data into clear, actionable intelligence for better decision-making.
+ description_long: |
+ Mateusz brings expertise in data analytics and process optimization. His focus is on making complex data easy to understand and act upon.
- He thrives on designing solutions that transform insights into competitive advantages, driving client success through precision and clarity.
+ He thrives on designing solutions that transform insights into competitive advantages, driving client success through precision and clarity.
diff --git a/src/_data/tteam.yaml b/src/_data/tteam.yaml
new file mode 100644
index 0000000..21344f8
--- /dev/null
+++ b/src/_data/tteam.yaml
@@ -0,0 +1,27 @@
+
+- name: Alessio Civitillo
+ image: alessio.jpg
+ description_short: |
+ An experienced financial analyst and software engineer, Alessio brings a unique blend of expertise and vision to the world of data, ensuring that our clients unlock the hidden connections in their data and deliver value to their stakeholders.
+ description_long: |
+ Alessio Civitillo has spent over a decade blending financial analysis with software engineering. His work focuses on helping clients discover valuable insights hidden in complex datasets.
+
+ By merging data science with strategic thinking, Alessio consistently delivers solutions that drive measurable business success.
+
+- name: Karol
+ image: karol.jpg
+ description_short: |
+ A dedicated data strategist focused on actionable insights and innovative data-driven solutions.
+ description_long: |
+ Karol specializes in developing data-driven strategies tailored to client goals. His keen analytical skills turn raw data into powerful insights.
+
+ With a background in finance and tech, Karol bridges the gap between complex data sets and meaningful business decisions.
+
+- name: Mateusz
+ image: mateusz.jpg
+ description_short: |
+ Passionate about turning complex data into clear, actionable intelligence for better decision-making.
+ description_long: |
+ Mateusz brings expertise in data analytics and process optimization. His focus is on making complex data easy to understand and act upon.
+
+ He thrives on designing solutions that transform insights into competitive advantages, driving client success through precision and clarity.
diff --git a/src/admin/index.html b/src/admin/index.html
new file mode 100644
index 0000000..80fd08e
--- /dev/null
+++ b/src/admin/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Sveltia CMS
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/og-images/just-a-test-preview.jpeg b/src/assets/og-images/just-a-test-preview.jpeg
deleted file mode 100644
index 57a42c1..0000000
Binary files a/src/assets/og-images/just-a-test-preview.jpeg and /dev/null differ
diff --git a/src/assets/og-images/what-is-a-modern-data-platform-and-why-should-you-care-preview.jpeg b/src/assets/og-images/what-is-a-modern-data-platform-and-why-should-you-care-preview.jpeg
deleted file mode 100644
index f6d11cd..0000000
Binary files a/src/assets/og-images/what-is-a-modern-data-platform-and-why-should-you-care-preview.jpeg and /dev/null differ
diff --git a/src/pages/about.njk b/src/pages/about.njk
index 9c469c4..0ca7a05 100644
--- a/src/pages/about.njk
+++ b/src/pages/about.njk
@@ -19,7 +19,7 @@ intro: |
{{ intro | markdownFormat | safe }}
- {% for member in team %}
+ {% for member in team.admin %}
diff --git a/src/pages/index.njk b/src/pages/index.njk
index 1b1ac80..b236cf4 100644
--- a/src/pages/index.njk
+++ b/src/pages/index.njk
@@ -1,101 +1,86 @@
---
-layout: base
-permalink: /index.html
-title: 'The Scalable Way'
-description: 'Eleventy starter using modern CSS, fluid type, fluid spacing, flexible layout and progressive enhancement.'
-bodyClass: home
-
hero:
- title: 'Empowering Data Platforms with Precision and Scale'
- subtitle: |
- **The Scalable Way** is a professional services agency focusing on "as a code" data platform infrastructure, analytics and data science workflows.
+ title: Empowering Analytics Teams with Scalable & Automated Data Platforms
+ subtitle: "**The Scalable Way** is a professional services agency bringing software engineering practices to data platforms in order to achieve higher scalability, cost effectiveness, usability and reliability."
button_text: Learn more
- button_target: #
-
+ button_target: ""
intro:
- title: 'Is your data tech stack working with you or against you?'
- content: |
+ title: Is your data tech stack working with you or against you?
+ content: |-
Most data professionals are stuck navigating complex analytics workflows. They deal with fragmented access, manual maintenance, “ad hoc” pipelines, and weak security and governance—largely because they rely on a patchwork of poorly integrated tools instead of a cohesive data platform.
In contrast, high-performing analytics teams prioritize scalable solutions, borrowing best practices from software development. These solutions are automated, provide streamlined workflows, ensure a strong developer experience, are secure by default, and consistently deliver reliable production insights. A well-designed data platform is essential to achieve these outcomes.
-
highlight_one:
- title: 'We help data analytics teams & departments achieve greater efficiency and more robust solutions in production'
- subtitle: 'by helping with developing infrastructure, ingestion, transformation, and documentation as code; training your teams on the enhanced development workflow; servicing recurring data ops and data platform needs.'
-
+ title: We help data analytics teams & departments achieve greater efficiency and more robust solutions in production
+ subtitle: by helping with developing infrastructure, ingestion, transformation, and documentation as code; training your teams on the enhanced development workflow; servicing recurring data ops and data platform needs.
highlight_two:
title1: The ultimate data platform goal?
title2: Stuff just works!
- content: 'Unfortunately, data analytics departments I meet often don’t end up where they had hoped. They struggle to build reliable data pipelines. They don’t manage to automate, and because of that they have problems onboarding users and excessive manual work.'
-
-foundations:
+ content: Unfortunately, data analytics departments I meet often don’t end up where they had hoped. They struggle to build reliable data pipelines. They don’t manage to automate, and because of that they have problems onboarding users and excessive manual work.
+foundations_titles:
title1: The 5 data platform
title2: foundations
- keys:
- - title: Automation
- content: 'with solid CI/CD and documentation'
- - title: Developer Experience
- content: 'Intuitive tools, clear APIs, and robust frameworks'
- - title: Scalability
- content: 'Growing usage without exponentially growing tech debt and costs'
- - title: Governance & Security
- content: 'Data governance, networking, and access'
- - title: Data Readiness
- content: 'Clean, consistent, and enriched data for analysis'
-
+foundations_elements:
+ - title: Automation
+ content: with solid CI/CD and documentation
+ - title: Developer Experience
+ content: Intuitive tools, clear APIs, and robust frameworks
+ - title: Scalability
+ content: Growing usage without exponentially growing tech debt and costs
+ - title: Governance & Security
+ content: Data governance, networking, and access
+ - title: Data Readiness
+ content: Clean, consistent, and enriched data for analysis
about:
title: About us
- content: |
+ content: |-
We believe in automation and good developer experience!
With a combined 30+ years of experience in infrastructure, data platforms, and data engineering, we are on a mission to help data analytics teams build more robust and scalable solutions.
-
-why:
- title: 'Why do clients come to us?'
- intro: >
- Analytics Departments and Teams typically suffer from one or more of these **11 challenges**
- keys:
- - title: Unscalable.
- content: 'Lacking strong tech foundations to build a scalable and long term solution'
- - title: Unclear reference architecture.
- content: 'Struggling to define a target architecture and to address specific analytics pain points'
- - title: Unclear security model.
- content: 'Not being sure what security and access management is needed to fulfil company policies'
- - title: Shaky production.
- content: 'Lacking a proper split of dev and prod environments and thereby making production less stable'
- - title: Increasing tech debt.
- content: 'Lacking a robust code review process to avoid accumulation of tech debt'
- - title: Inadequate networking configuration.
- content: 'Networking designed with applications in mind, making it difficult to stay secure and fast when developing analytical capabilities'
- - title: Manual operations.
- content: 'Time intensive, error prone, tedious daily manual work'
- - title: Slow data ingestions.
- content: 'Experiencing difficulties ingesting data from many applications and APIs'
- - title: Struggling with best practices.
- content: 'Lacking guidance in what tools to choose and avoiding making expensive mistakes'
- - title: Difficulty in retaining key talent.
- content: 'Experiencing challenges in keeping team members motivated'
- - title: Difficulty in onboarding talent.
- content: 'Experiencing challenges when onboarding new analysts to the complex web of tools in use'
-
-services:
- title: 'Our Services'
- items:
- - title: Development
- prefix: Data Platform
- description: >
- Build scalable, reliable, and efficient data infrastructure with modern "as code" practices, enabling seamless data integration, transformation, and analysis.
-
- - title: Operations
- prefix: Data Platform
- description: >
- Ensure continuous, reliable data platform performance through proactive monitoring, maintenance, and automated operational workflows.
-
+whyus_intro:
+ title: Why do clients come to us?
+ content: Analytics Departments and Teams typically suffer from one or more of these **11 challenges**
+whyus_elements:
+ - title: Unscalable.
+ content: Lacking strong tech foundations to build a scalable and long term solution
+ - title: Unclear reference architecture.
+ content: Struggling to define a target architecture and to address specific analytics pain points
+ - title: Unclear security model.
+ content: Not being sure what security and access management is needed to fulfil company policies
+ - title: Shaky production.
+ content: Lacking a proper split of dev and prod environments and thereby making production less stable
+ - title: Increasing tech debt.
+ content: Lacking a robust code review process to avoid accumulation of tech debt
+ - title: Inadequate networking configuration.
+ content: Networking designed with applications in mind, making it difficult to stay secure and fast when developing analytical capabilities
+ - title: Manual operations.
+ content: Time intensive, error prone, tedious daily manual work
+ - title: Slow data ingestions.
+ content: Experiencing difficulties ingesting data from many applications and APIs
+ - title: Struggling with best practices.
+ content: Lacking guidance in what tools to choose and avoiding making expensive mistakes
+ - title: Difficulty in retaining key talent.
+ content: Experiencing challenges in keeping team members motivated
+ - title: Difficulty in onboarding talent.
+ content: Experiencing challenges when onboarding new analysts to the complex web of tools in use
+our_services:
+ title: Our Services
+our_services_items:
+ - title: Development
+ prefix: Data Platform
+ description: Build scalable, reliable, and efficient data infrastructure with modern "as code" practices, enabling seamless data integration, transformation, and analysis.
+ - title: Operations
+ prefix: Data Platform
+ description: Ensure continuous, reliable data platform performance through proactive monitoring, maintenance, and automated operational workflows.
+description: Eleventy starter using modern CSS, fluid type, fluid spacing, flexible layout and progressive enhancement.
+bodyClass: home
blog:
- title: 'Our Insights'
- intro: 'Selected Articles. Check our blog for more.'
+ title: Our Insights
+ intro: Selected Articles. Check our blog for more.
+layout: base
+permalink: /index.html
+title: The Scalable Way
---
-
- {% for key in why.keys %}
+ {% for key in whyus_elements %}
{{ key.title }}
{{ key.content }}
@@ -203,9 +188,9 @@ blog:
{% svg "brand/arrows" %}
-
{{ services.title }}
+
{{ our_services.title }}
- {% for item in services.items %}
+ {% for item in our_services_items %}
{{ item.prefix }} {{ item.title }}
diff --git a/src/pages/legal.md b/src/pages/legal.md
index bc97310..9503a31 100644
--- a/src/pages/legal.md
+++ b/src/pages/legal.md
@@ -7,6 +7,4 @@ description: Imprint infos
layout: page
---
-Edit your details in `_data/personal.yaml`
-
{{ personal.address }}
diff --git a/src/posts/2024/2024-12-21-prefect-1-to-2-migration.md b/src/posts/2024/2024-12-21-prefect-1-to-2-migration.md
index a044341..8a02b1d 100644
--- a/src/posts/2024/2024-12-21-prefect-1-to-2-migration.md
+++ b/src/posts/2024/2024-12-21-prefect-1-to-2-migration.md
@@ -1,14 +1,16 @@
---
-title: 'Prefect 1.0 to 2.0 Migration: Motivation, Process and Workflow'
-description: 'This article outlines the motivation and steps for migrating from Prefect 1 to Prefect 2. Additionally, it provides guidance on how to coordinate work between teams to ensure the migration is performed with zero downtime'
+title: "Prefect 1.0 to 2.0 Migration: Motivation, Process and Workflow"
date: 2024-12-21
+author: Alessio Civitillo
+description: This article outlines the motivation and steps for migrating from Prefect 1 to Prefect 2. Additionally, it provides guidance on how to coordinate work between teams to ensure the migration is performed with zero downtime
+tags:
+ - prefect
---
-
-
Prefect 1.x was the original version of Prefect, a data orchestration platform designed to streamline the development, scheduling, and monitoring of workflows. It used a monolithic server that acted as an API layer and a task scheduler.
Prefect 2.x brings several architectural changes that offer a more flexible, scalable, and cloud-native solution for orchestrating workflows. With the focus on Kubernetes, containers, and a more modular API, Prefect 2.x aims to be a better fit for modern cloud infrastructure and CI/CD pipelines.
+
## Why Migrate?
Scalability: Prefect 2.x offers better scalability through dynamic task mapping and execution in various environments (Kubernetes, Docker).
@@ -16,6 +18,7 @@ Scheduling: Prefect 2.x introduces more powerful scheduling and retry logic.
Cloud-Native: Enhanced integration with cloud-native tools, such as Kubernetes, and an improved deployment model.
Flexibility: Granular control over deployments and orchestration.
+
1. Key Differences Between Prefect 1 and Prefect 2
2.1 Architecture Changes
Prefect 1.x used a single monolithic server and agent system for managing workflows and executions.
@@ -65,6 +68,7 @@ def my_task():
with Flow("my_flow") as flow:
my_task()
```
+
Prefect 2.x:
@@ -112,6 +116,7 @@ o In the Prefect UI, navigate to the storage block and set the correct product
Set Notifications:
+
1. Define Trigger Events:
Use Prefect's event triggers or monitor task/flow state transitions. Specifically:
o Failed state for deployments (e.g., using a StateHandler or flow/task callbacks).
@@ -123,7 +128,7 @@ o Configure these in the Prefect UI under Blocks.
o Example: Slack Notification Block to send messages on failures.
-4. Common Migration Issues and How to Resolve Them
+3. Common Migration Issues and How to Resolve Them
4.1 Task State Issues
In Prefect 1.x, task states were relatively simple. In Prefect 2.x, the task state model is more granular, including states like Pending, Running, Failed, Success, and custom states.
@@ -148,14 +153,13 @@ The transition from the old scheduler to the new scheduling system in Prefect 2.
Solution:
Double-check the cron syntax, and ensure that the IntervalSchedule and CronSchedule are configured correctly.
-5. Conclusion
+4. Conclusion
Migrating from Prefect 1.x to Prefect 2.x can be an involved process, but the flexibility, scalability, and performance improvements offered by Prefect 2.x are well worth the effort. With better integration into cloud-native tools, an object-oriented approach to flows and tasks, and improved scheduling and retry logic, Prefect 2.x provides a future-proof solution for orchestrating modern data flows.
-
-
2 Zero-Downtime Migration Workflow Between Teams
+
1. Planning Phase
1.1 Define the Migration Scope
Identify the flows to be migrated, including their dependencies and critical components.
@@ -196,10 +200,10 @@ o Use tools such as Prometheus, Grafana, or Datadog to track metrics.
3.1 Continuous Validation and Monitoring
· Run Validation Tests (samples, cols name): After migrating, validate that all flows and services are functioning as expected. This includes end-to-end tests for data pipelines, integrations, and error handling.
For example, within the ingestion layer, where data flows from the data source to ADLS, a parallel architecture can be implemented: Prefect 1 pointing to the Production ADLS, and Prefect 2 pointing to the Development ADLS. There are two levels of validation:
-1. Path Validation
+2. Path Validation
o The paths where data is loaded into the Production and Development ADLS must be identical.
o Note: If the file name includes a timestamp, remove the date portion before performing the comparison.
-2. Data Frame Validation
+3. Data Frame Validation
o Ensure that the number of rows in the Development ADLS matches the order of the values extracted from the Production ADLS.
o Verify that all columns in the Production data are present in the Development data. Any differences can be attributed to new columns added in the updated flow version.
@@ -240,4 +244,3 @@ Once Prefect 2 is fully operational, stop Prefect 1 workflows and switch to Pref
6 Conclusion
Zero-downtime migration requires meticulous planning, careful execution, and proactive monitoring. By adopting strategies such as incremental migration, dual-environment deployment, real-time monitoring, and automated rollback mechanisms, teams can successfully migrate workflows without impacting day-to-day operations.
As recap, the chart shown below represents a state-flow of the migration process:
-