building universal servers (on-prem meets azure paas)
TRANSCRIPT
Automating visual software testing
BUILDINGUNIVERSALSERVERSON-PREM MEETS AZURE PAAS
Adam CarmiApplitools Co-Founder & CTO
Automating visual software testing
ABOUT ME
Automating visual software testing
AGENDA
• About Applitools
• Why Azure?
• Applitools’ universal server
• Q&A
Automating visual software testing
WHAT IS VISUAL TESTING?
A quality assurance activity aimed to verify that a Graphical User Interface appears correctly to users
Automating visual software testing
Automating visual software testing
Automating visual software testing
THE WORKFLOWDrive the AUT and take screenshots
Compare screenshots with baseline images
Report differences
Update the baseline
Automating visual software testing
DEMO
Automating visual software testing
AGENDA
• About Applitools
• Why Azure?
• Applitools’ universal server
• Q&A
Automating visual software testing
OPERATIONAL REQUIREMENTS• A 30K tenant public cloud• 5M CPU and memory intensive tests / month• Multiple single tenant dedicated clouds• On-Prem installations• Massive image uploads that are rarely fully downloaded• 1Y data retention• Permanent availability• Growing 50% Q/Q
Automating visual software testing
SYSTEM ARCHITECTURE
API Server
Tests, Image processing, Tasks, Auth, Admin, Externals, App
APP Server
Tests, Image processing, Tasks, Auth, Admin, Externals, App
SDK
Data+
State
Eyes Server (On-Prem / Azure Web-Role) User
APP
Tests
Automating visual software testing
AZURE WEB-ROLEA collection of identical, auto-managed, load-balanced VMs that run IIS compatible web-applications• Same web-apps (binaries and resources)
• Same configuration
Automating visual software testing
WHY AZURE WEB-ROLE?• Infinite scale and high availability• Extremely reliable• No hardware / OS maintenance concerns• Rolling deployments• Immediate emergency rollback to staging• A thin wrapper around a standard IIS web-site (VS Project)• .NET
Automating visual software testing
AGENDA
• About Applitools
• Why Azure?
• Applitools’ universal server
• Q&A
Automating visual software testing
APPLITOOLS’ UNIVERSAL SERVER• Design• Deployment• Runtime• Storage• Framework• Testability
Automating visual software testing
DESIGN TOWARDS THE WEB-ROLE• Multiple stateless instances (scale-out, rolling
upgrades)• Optimistic concurrency and eventual consistency• Data partitioning• Automatic instance recycling• Transient local storage• Async long running tasks (hard timeouts)
Automating visual software testing
BUT DEPEND ON AS FEW PAAS ARTIFACTS AS POSSIBLE...In order to keep the On-Prem deployment simple.
Automating visual software testing
APPLITOOLS’ UNIVERSAL SERVER• Design• Deployment• Runtime• Storage• Framework• Testability
Automating visual software testing
ON-PREM DEPLOYMENT
Automating visual software testing
CLOUD-SERVICE DEFINITION
Packaging
Automating visual software testing
• Deployed together with a cloud-service package• Initial instance count
• SSL certificate
• Configuration settings
CLOUD-SERVICE CONFIGURATION
Automating visual software testing
PUBLISHING OPTIONS• Visual Studio• Azure management portal• REST APIs• Programmatically• Azure PowerShell
Automating visual software testing
APPLITOOLS’ UNIVERSAL SERVER• Design• Deployment• Runtime• Storage• Framework• Testability
Automating visual software testing
RUNTIME ABSTRACTION
IServiceRuntime• Access configuration settings
• Access local file storage paths
• Get the instance name (for logging)
• Register runtime event listeners
Automating visual software testing
APPLITOOLS’ UNIVERSAL SERVER• Design• Deployment• Runtime• Storage• Framework• Testability
Automating visual software testing
NOSQL?• Infinite storage• High availability• Speed• Pricing• No schema migration
Automating visual software testing
NOSQL STORAGE ABSTRACTIONS
IObjectStore<T>, IByteStore, …
• Key/value based
• Atomic update/create with optimistic concurrency
• In-memory, File System, Entity Framework, Azure Table, Azure Blob implementations
Automating visual software testing
STORAGE CONFIGURATIONWeb-Role
On-Prem
Automating visual software testing
APPLITOOLS’ UNIVERSAL SERVER• Design• Deployment• Runtime• Storage• Framework• Testability
Automating visual software testing
FRAMEWORK SERVICES
• Framework services are built on top of the storage abstraction• Access control
• Counters
• Named locks
• Notifications
• Long running tasks
Automating visual software testing
APPLITOOLS’ UNIVERSAL SERVER• Design• Deployment• Runtime• Storage• Framework• Testability
Automating visual software testing
TESTABILITY• Run any version of the server on your local machine
with a simple SVN update command.• Execute thousands of API tests in less than a minute by
using in-memory storage.• Easily debug local code changes step-by-step running
against production data.
Automating visual software testing
SUMMARYUniversalScaleAvailabilityDeploymentTestabilityCost (storage)×Design complexity (storage, PaaS services)
Automating visual software testing
QUESTIONS?
Adam CarmiApplitools Co-Founder & CTO