1. Dev Ops in Big Data
Sujesh Chirackkal
github: https://github.com/sujeshchirackkal
LinkedIn: https://in.linkedin.com/in/sujesh-chirackkal-60270b51
2. Dev OPS Eco System
Continuous
Improvement
Continuous
Delivery
Process
Simplification
Agile
Continuous
Integration
3. “It is painful to upgrade, let us not do
it”
Are we ready to upgrade our cluster and applications any time
“It is going to impact business, let us live with current version for some more
time”
4. Challenges
• Environment readiness
• Changes without backward compatibility
• Time, Resource constraints etc.
Automated system tests using
• Create a pseudo cluster, as a Docker container, of the new version to be
used.
• Write code to perform automated system/integration test along with unit test
cases.
What we did
5. /**
* testSettings to invoke as "it:run"
*/
def testSettings(): Seq[Setting[_]] = {
// override the run settings, run command on sbt will invoke the tests
run := {
val dockerImg = docker.dockerImage.value
val containerId = dockerImg.startContainer().substring(0, 12)
if(dockerImg.checkIfContainerReady(containerId)) {
val result = dockerImg.runJob(containerId)
} else {
System.exit(-1)
}
dockerImg.stopContainer(containerId)
}
}
Leveraging SBT(Scala Build Tool) test settings
7. Linux package mapping plugins in SBT(Scala Build Tool)
• Final deployable is a single file (an rpm file)
• A single command to deploy the application (yum install or yum
update)
• Application artifacts are immutable on the deployed server (only root
can access), also you need root to deploy the same.