Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week3: Presentation Proposal #2404

Merged
merged 6 commits into from
Sep 7, 2024
Merged

Week3: Presentation Proposal #2404

merged 6 commits into from
Sep 7, 2024

Conversation

dvavd
Copy link
Contributor

@dvavd dvavd commented Sep 4, 2024

Assignment Proposal

Title

Flyway: Version Control for Databases

Names and KTH ID

Deadline

  • Week 3

Category

  • Presentation

Description

In this presentation, we will delve into the critical role of automated database version control within the framework of Continuous Deployment. We'll begin by outlining the necessity for managing database schema changes seamlessly alongside application updates to ensure system integrity and performance. We will examine the popular tool Flyway, a popular tool for database vesioning. Flyway has been in continual development since 2010 and remains to be the industry standard for database migration and supports over 50 different database platforms. We will discuss how to integrate Flyway into the CI/CD pipeline, ensuring that every deployment reflects both application and database state changes accurately. This presentation will highlight the importance of database versioning to ensure consistency throughout different environments.

Relevance

Database versioning is essential in CD as it ensures that database schema changes are consistently and accurately applied across all environments. This automation minimizes downtime and reduces the risk of errors during deployments and thus supports the continuous releasing in typical CD practices.

@DD2485-bot
Copy link

Missing student registration :dvavd

If not from your group, fetch the upstream.

@algomaster99 algomaster99 self-assigned this Sep 6, 2024
@algomaster99
Copy link
Collaborator

Very interesting proposal! I like the problem database migration. My only question about this is that you don't migrate databases that often so I wonder about the purpose of integrating it into CD. But if you can motivate it well, I am more than happy to merge!

@dvavd
Copy link
Contributor Author

dvavd commented Sep 6, 2024

@algomaster99 Thanks! I think it is useful for minor changes as well, say developer A wants to add a new column to a table, so they will alter the database. Developer B might want to make a similar change, but since A already changed the table it will result in a conflict. With Flyway there will be a migration history with all changes and developer B will be aware of the change A made. So while a complete database migration might not be that frequent, I think minor changes to the database are quite common. So I think it is a very useful tool to keep the database consistent.

@algomaster99
Copy link
Collaborator

Based on your use-case, it seems more like a database versioning system. Is it correct?

@dvavd
Copy link
Contributor Author

dvavd commented Sep 6, 2024

Yes, exactly. I used the term "migration" to refer to both small and large adjustments, because the changes to the database are called migration script in the flyway community. Flyway essentially manages and tracks database changes using version control principles, so I think calling it a database versioning system is quite accurate.

@algomaster99
Copy link
Collaborator

changes using version control principles, so I think calling it a database versioning system is quite accurate.

"Flyway: Version Control for databases" would be a better title in my opinion.

the changes to the database are called migration scrip

Oh okay. For me, migration script is a script that migrates the current database entries to a different schema.

So in your presentation, you explain concepts like "merging", "conflict resolution" of databases in CD? Merging is clear to me. But for conflict resolution, there would be many strategies I believe - a good idea to show all of them. I am thinking this topic analogous to Git VCS so correct me if my assumption is wrong.

Overall, I would like you to make two changes if you agree and I am correct:

  1. New title: "Flyway: Version Control for databases"
  2. Explain different features analogous to VCS because it would be easier to understand.
  3. Finally, I would like to see the conflict resolution strategies if there are any.

@dvavd
Copy link
Contributor Author

dvavd commented Sep 6, 2024

@algomaster99 Ok, I will incorporate points 1 and 2. However, I think there is not really a conflict resolution mechanism similar to Git in Flyway, incorporating Flyway should prevent conflicts in the first place. Conflicts can only arise if developers make mistakes in their scripts, but not because of miscommunication (as in without using flyway). Is that ok?

@algomaster99
Copy link
Collaborator

I think there is not really a conflict resolution mechanism similar to Git in Flyway, incorporating Flyway should prevent conflicts in the first place.

That is a good point.

I will incorporate points 1 and 2

Great. You can edit the proposal!

@algomaster99 algomaster99 merged commit bc28c0f into KTH:2024 Sep 7, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants