2. Agenda
● What We Do
● The Problem(s)
● Solution Space
● What Do You Think?
3. 'Democratize Apps for the World' *
of WordPress : http:
* adapted from Matt Mullenweg
e-publishing-for-
// 1mx1.com/2011/07/democratiz
the-world/
4. What Mippin Does
● Mobile Apps
● Cross Platform
● Self Service
● Easy
● Award Winning
5. The Pr oblem(s)
● Generate custom apps on demand
● Provide 'App Store Ready' binaries
● Scale (especially on updates)
● Signing
● Dependencies on an OS
● Concurrency
● Bad builds
6. Solu tion Space
● Distributed system
● Cloud and real hardware
● Fault tolerance
● Persist previous versions of an app
8. Solu tion Space
MongoDB
● Replica Set
● Files in Documents
● GridFS?
● Dynamic Queries
● Mixed Scala & Java
9. case SignRequest(server, mippinId, fileName, responseChannel) =>
val mippinServer = MippinServer.whichServer(server)
fileRepo.srcZipFile(mippinServer, mippinId, fileName) map {
aSrcZipFile =>
// run builder
val signer = fileSigner(mippinId, aSrcZipFile)
signer.build map {
aSignedFile =>
// save result into mongo
fileRepo.putSignedFile(mippinServer, mippinId, aSignedFile)
// continues on next slide ...
st
* Signer Actor handles SignReque
10. } getOrElse {
log warn "sign error"
fileRepo.recordBuildStatus(mippinServer, mippinId, fileName,
500, "Build and Sign Failed")
responseChannel ! SignError(server, mippinId, fileName)
}
} getOrElse {
log warn "no src zip file"
fileRepo.recordBuildStatus(mippinServer, mippinId, fileName,
404, "No Cod File")
responseChannel ! NoFileError(server, mippinId, fileName)
}
* When Good Builds Go Bad
11. What do you think?
back?
Sugestions, Questions, Feed