Kyle

Using DevOps Jetpack (a.k.a. Jet Stream)

8012602928_ab1fceb489_z

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

Part I

  1. QA person adds edge case data to a copy of production data
  2. QA person then bookmarks the edge case data and production data
  3. QA person then runs destructive testing
  4. QA person then restores to the bookmark of data just after adding edge case data so they are ready to run destructive tests again

Part II

  1. QA person finds some data that causes a problem and wants to log a bug on it
  2. QA person bookmarks data state with problem data
  3. QA person shares bookmark with developer so the developer can reproduce it
  4. Developer selects bookmark and activates that data set to investigate bug

Part I

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:

Screen Shot 2015-10-12 at 5.37.10 PM

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:

Screen Shot 2015-10-12 at 5.50.47 PMTo snapshot the data state, click the point on the farthest right, then click the bookmark on the bottom left. Give the bookmark at name like “after the edge case data”.

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”

Screen Shot 2015-10-12 at 5.53.36 PM

After the “restore” finishes, then QA is back to the original data, along with edgecase data and can run destructive tests again

Part II

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.

Step 1

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.

Screen Shot 2015-10-12 at 5.50.47 PM

  1. Now the Developer can come in and select bookmarks in the bottom of the screen.
  2. Then select the “Bug XXXX data” bookmark
  3. Then click the branch icon on the bottom right of the screen

Screen Shot 2015-10-13 at 3.26.06 PM

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).

Screen Shot 2015-10-13 at 3.45.13 PM

 

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

Screen Shot 2015-10-13 at 3.54.35 PM

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)

Screen Shot 2015-10-13 at 3.54.48 PM

Summary

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.