Agile-methodology in Project and Query-Driven methodology in Cassandra?

208 Views Asked by At

We want to start a new project. Our DB will be Cassandra; and we do our project in a scrum team, based on agile.
My question is that, one of the most important issue is changes, that agile can handle this.

Agile software development teams embrace change, accepting the idea that requirements will evolve throughout a project. Agilists understand that because requirements evolve over time that any early investment in detailed documentation will only be wasted.

But we have:

Changes to just one of these query requirements will frequently warrant a data model change for maximum efficiency.

in Basic Rules of Cassandra Data Modeling article.
How can we manage our project gathering both rules together? the first one accept changes, but, the second one, want us to know every query that will be answered in our project. New requirements, causes new queries, that will changes our DB, and it will influence the quality(throughput).

2

There are 2 best solutions below

2
On BEST ANSWER

How can we manage our project gathering both rules together? the first one accept changes easily, but, the second one, want us to know every query that will be answered in our project. New requirements, causes new queries, that will changes our DB, and it will influence the quality

The first rule does not suggest you accept changes easily just that you accept that changes to requirements will be a fact of life. Ie, you need to decide how to deal with that, rather than try to ignore it ore require sign off on final requirements up front.

I'd suggest you make part of your 'definition of done' (What you agree a piece of code must meet to be considered complete within a sprint) to include the requirements for changes to your DB code. This may mean changes to this code get higher estimates to allow you to complete the work in the sprint. In this way you are open to change, and have a plan to make sure it doesn't disrupt your work.

0
On

Consider the ways in which you can reduce the impact of a database change.

One good way to do this will be to have automated regression tests that cover the functionality that relies on the database. It will also be useful to have the database schema built regularly as a part of continuous integration. That then helps to remove the fear of refactoring the data model and encourages you to make the changes as often as necessary.

The work cycle then becomes:

Developer commits new code and new data model

Continuous integration tears down the test database

Continuous integration creates a new database based on the new data model

Continuous integration adds in some appropriate dummy data

Continuous integration runs a suite of regression tests to ensure nothing has been broken by the changes.

Team continues working with the confidence that nothing is broken

You may feel that writing automated tests and configuring continuous integration is a big commitment of time and resources. But think of the payoff in terms of how easily you can accept change during the project and in the future.

This kind of up-front investment in order to make change easier is a cornerstone of the agile approach.