Using DevOps Jetpack (a.k.a. Jet Stream)
photo by Chase Elliott Clark
Here a video on using Jetstream which I like to call “DevOps Jetpack for Developers” (Remember you can get Delphix Express and Jet Stream for free.) See previous blog post on how to set up Jet Stream.
With Jet Stream, users can control their data. Users can refresh their data from the source, users can bookmark data to rollback to, users can bookmark their data and share those bookmarks with other users so that those uses can access the same data.
In the video
- QA person adds edge case data to a copy of production data
- QA person then bookmarks the edge case data and production data
- QA person then runs destructive testing
- QA person then restores to the bookmark of data just after adding edge case data so they are ready to run destructive tests again
- QA person finds some data that causes a problem and wants to log a bug on it
- QA person bookmarks data state with problem data
- QA person shares bookmark with developer so the developer can reproduce it
- Developer selects bookmark and activates that data set to investigate bug
To access the demo application provided with Delphix Express (Delphix Express optionally comes with a demo application is on the source VM and we provision a thin clone to the target VM) go to http://IP_of_target:1080 after provisioning the application and database onto the target machine.
The application looks like:
On the bottom left we can add employees
On the bottom right we can remove employees
For edge case data, the QA person adds some employees like “-1″, “deleted” etc
After adding the edge case data, then we can snapshot the data in Jet Stream:
Now the QA person can run destructive testing like removing all the Employees.
After the testing is over, we can go back to the bookmark by clicking on the bookmark, then clicking on “restore”
After the “restore” finishes, then QA is back to the original data, along with edgecase data and can run destructive tests again
Now imagine the QA person has added some edge case data that causes bugs. For example the QA person could add an employee called ”” (4 single quotes) which comes out ” (2 single quotes) in the list of employees. Now if I try to remove an employee with 2 single quotes, it doesn’t work. So I want to log a bug on this and bookmark not only the application but also the data.
All the QA user does after they have found the problem data is to create a bookmark in the Jet Stream interface and then click on “Share bookmark.”
Then the developer can go into the Jet Stream interface and make this bookmark data active for the developer. The developer’s copy of the bookmark data is private to the developer meaning that the developer can modify the data without affecting the QA analyst and vice versa. This works because all duplicate data blocks are shared but anytime a data block is modified, that modified block is stored separately and is visible only to the copy that made the change.
QA bookmarks the data and shares that bookmark.
The QA users clicks on the star on the far right, then on “Bookmark” on the bottom menu. After the bookmark is created, then the QA clicks on the bookmark and clicks “Share” on the bottom menu. Now other users will be able to see the bookmark.
- Now the Developer can come in and select bookmarks in the bottom of the screen.
- Then select the “Bug XXXX data” bookmark
- Then click the branch icon on the bottom right of the screen
After the branch has taken place the “bug XXXX data” will be active for the developer.
What this means is that Delphix has shut down the database and application for the “master” branch that the developer was working on and now the data branch with data from “bug XXXX data” has been started and is active.
By default, Delphix only allows user to have one instance of each virtual database(s) and virtual data source(s) active in a container, thus when a user branches a container, Delphix shuts down the running virtual database(s) and virtual data sources and starts up the database(s) and/or virtual data sources(s).
If the developer clicks on “Branches” on the left side of the screen they will see their original “master” branch and the new “bug XXXX data” branch and the developer can switch between the two
If the developer clicks on the “default” branch, then on “Activate” they will be back to their regular data (the master branch or default branch in this case)
In summary, Jetstream allows developers and QA analyst to take actions themselves and have results in minutes that would have otherwise required teams of peoples and days of work (DBAs, system admins, storage admins, storage, data copying, recover etc).
We gave two examples here.
Example 1 was a QA person being able to save a data state and run destructive testing and being able to restore to the baseline data state in minutes.
Example 2 was a QA person being able to bookmark a data set the caused a bug and a developer who was able to spin up that application stack and data set in minutes so they could reproduce and investigate the bug.
Jet stream has many more applications.
As a performance person I like to do A/B testing of database. Jet Stream is awesome for that. Jet Stream allows me to create indexes in one copy, drop indexes in another copy, change init.ora parameters in another copy and to be able to switch between these data branches and run comparative performance tests in minutes.
Other examples are a developer who could have branches for
- Latest full data set from production
- Sub-setted data set from production, used for functional testing of new code
- Data set for upcoming release, new schema supports new features
- Data set imported from a QA users bookmark, used to fix an important bug
or a software architect who could have data branches for
- Database for product A, release scheduled for next month
- Database for product A, release scheduled 6 months from now
- Database for product A, release scheduled for 1 yr from now
- Database for product B, successor to product A
- Empty database, brainstorming area for blue sky ideas
- Hackathon project
or a business analyst who has data branches for
- Latest financial transaction data
- Financial transaction data from last week
- Financial transaction data from last quarter
Data as a Service functionality brought to you by Jet Stream and Delphix is changing the data dynamics of companies and accelerating application development as well as financial data analysis.