DevOps Best Practices for Mobile Apps Sanjeev Sharma IBM Software Group
Me 18 year in the software industry 15+ years he has been a solution architect with IBM Areas of work: o DevOps o Enterprise Architecture o Agile Transformation o Mobile Development o Software Delivery Platforms o Software Supply Chains. Blog @ bit.ly/sdarchitect Twitter: @sd_architect Sanjeev Sharma sanjeev.sharma@us.ibm.com IBM Software Group
Agenda What is DevOps? DevOps for Mobile Challenges DevOps for Mobile Best Practices Implementing DevOps for Mobile o o o Continuous Integration and Test Continuous Delivery Service Virtualization
What is DevOps?
Addressing delivery challenges Water-SCRUM-Fall? Customers Line of Business Dev & Test Teams Operations Team Gap Gap Desire for fast and continuous innovation Requirements Code & Tests Business Services Addressed by... Addressed by... Agile Dev Dev Ops http://ibm.co/prqkwl
Key Concepts 1. Continuous Integration 2. Continuous Delivery 3. Continuous Test 4. Continuous Monitoring 5. Infrastructure as Code 6. Build and Delivery Pipeline
1. Continuous Integration http://bit.ly/prq4a7
2. Continuous Delivery http://bit.ly/prq4a7
3. Continuous Test http://bit.ly/prq9dq
4. Continuous Monitoring http://bit.ly/prq9dq
5. Infrastructure as Code package "apache2" do package_name node['apache']['package'] end service "apache2" do case node['platform_family'] when "rhel", "fedora", "suse" service_name "httpd" # If restarted/reloaded too quickly httpd has a habit of failing. # This may happen with multiple recipes notifying apache to restart - like # during the initial bootstrap. restart_command "/sbin/service httpd restart && sleep 1" reload_command "/sbin/service httpd reload && sleep 1"
6. Build & Delivery Pipeline
DevOps for Mobile Challenges
DevOps for Mobile Challenges Mobile Apps are the front-end to a complex(enterprise) back-end system o Mobile Apps are rapidly becoming a critical user interface to enterprise systems
DevOps for Mobile Challenges Fragmented Platforms o ios forked when ipad came out. Android forked multiple times with each vendor, Kindle Fire, Nook
DevOps for Mobile Challenges HTML5, PhoneGap/ Cordova still cannot fully replace native Apps in every situation o o Mobile Web is not an acceptable solution. Users want an App Hybrid Apps are the optimal solution for Apps with non-native needs
DevOps for Mobile Challenges App stores add additional asynchronous deployment step o Continuous Delivery become deliver and wait
Mobile Application Architecture: LinkedIn http://engineering.linkedin.com/testing/co ntinuous integration mobile
Delivery Pipeline.jsp.java.html Build, Package, & Unit Test Application Binaries & Platform Configuration Deploy.sh chef recipes Source Artifacts Source Control Management Deployable Artifacts Library Environment Running System
IBM s Four DevOps Principles 1. Collaborate across Disciplines 2. Develop and test against a production-like system 3. Deploy frequently 4. Continuously validate operational quality characteristics
DevOps Best Practices for Mobile Apps
DevOps Best Practices for Mobile Apps Continuous Integration and Continuous Delivery 1. Ensure end-to-end traceability across all assets 2. Practice continuous integration 3. Maintain separate streams for each mobile OS, SDK supported 4. Use automated build and deploy scripts
DevOps Best Practices for Mobile Apps Continuous Testing and Continuous Monitoring 5. Test each build on simulated and physical devices 6. Virtualize and simulate back end services 7. Monitor the deployed mobile app and back end services performance
DevOps Best Practices for Mobile Apps Mobile App Delivery 8. Governance of provisioning profiles, certificates and API keys 9. Use a Private Development App Store to test device deployment 10. Convert user feedback into user stories
Continuous Integration and Continuous Delivery 1. End-to-end Traceability, across all ios Developer Components Android Developer Deliver App Code Source Control Build Library Fetch Automate Source Artifacts Deployable Artifacts Enterprise Services Developer
Continuous Integration and Continuous Delivery 2. Practice Continuous Integration Mobile App Developent Teams Enterprise Services Developent Teams
Continuous Integration and Continuous Delivery 3. Maintain separate build areas for each SDK version <manifest xmlns:android="http://schemas.android.com/apk/res/android"... > <uses-sdk android:minsdkversion="4" android:targetsdkversion="15" />... </manifest>
Continuous Integration and Continuous Delivery 4. Automated Build and Deploy scripts Automated Scripts
Continuous Testing and Continuous Monitoring 5. Test each build on each supported device
Continuous Testing and Continuous Monitoring 6. Simulate Back-end Services Mobile App Third-party Services App Under Test Third-party Services Test Environments to Production Actual Service Simulated Service Mobile App Data Warehouse Directory Identity Portals Mainframe Enterprise Service Bus Heterogeneous Environments
Continuous Testing and Continuous Monitoring 7. Monitor deployed apps and back end services performance
Mobile App Delivery 8. Governance of provisioning profiles, certificates and API keys
Mobile App Delivery 9. Use a Private App store to test device deployment
Mobile App Delivery 10. Convert App Store feedback into user stories
Implementing DevOps for Mobile Apps
Mobile Delivery Pipeline Mobile IDE API keys, Provisioning Profiles.jsp.java.htm l Build, Package, & Unit Test Application Binaries & Platform Configuration Deploy.sh chef recipe s Source Artifacts Source Control Management Enterprise Services IDE Deployable Artifacts Library Environment Running System
Mobile Continuous Delivery Pipeline Backend Development Common tools Private Dev App Store Publish Public App Store Install Mobile Development Execute tests Get Packages, Profiles, Keys Mobile Device Op Engineer Notify results SCM Repository Store changes Trigger build Post results to build Publish packages, Profiles, Keys Media Library Publish packages Build Engine(s) Put configuration version Get Packages Automation Framework Apply configurations to system Deployed Mobile Application Execute tests Virtual System Application or Mobile Developer Enterprise Services IDE Mobile App IDE Provision pattern with build Provision system from pattern Cloud Provisioning System Install
DevOps Reference Architecture Release Engineering Continuous Integration Continuous Delivery Deployment Library Development Operations Change Management Source Control Management Service Simulation Configuration Automation Incident Management Release Management Requirement s Management Quality Management Test Automation Environment Provisioning Automation Application Monitoring Data Management Enterprise Services IDE Mobile App IDE
IBM s DevOps for Mobile Solution Continuous Integration and Test
IBM Mobile Foundation Enabling the development and delivery of mobile apps IBM Mobile Foundation Includes: IBM Worklight IBM WebSphere Cast Iron IBM Endpoint Manager for Mobile Devices Build, connect, manage and secure your mobile enterprise Plus New Services Offering IBM Software Services for Mobile Foundation
IBM Worklight Open, cost-effective, cross-platform app development App development using native and/or familiar web technologies: HTML5 CSS3 JavaScript App delivery in variety of forms: Mobile Web app Hybrid app Native Compatible with prominent HTML5 libraries and tools:
Worklight mobile platform overview Worklight Studio The most complete, extensible development environment with maximum code reuse and per device optimization Worklight Server Mobile middleware offering unified push notifications, version management, security and integration Worklight Runtime Components Extensive libraries and client APIs that expose and interface with native device functionality and the Worklight Server Worklight Console A web based console for real time analytics and control of your mobile apps and infrastructure
Mobile simulator to simplify unit test
Worklight runtime architecture Worklight Server Device Runtime Server side Application Code JSON Translation Authentication Adapter Library Stats Aggregation Client side App Resources Direct Update Mobile Web Apps Unified Push Notifications Cross Platform Technology Security and Authentication Back end Data Integration Post deployment control and Diagnostics Application Code
Application distribution (for development and test) A cross platform private mobile application store similar to public app stores but focused on the needs of an organization or a team Key capabilities: delivers distribution and management of mobile applications within a company / teams easy distribution of ios and Android apps within a team provides versioning and updates centralizes rating and feedback information controls who can modify or install an application easy to install and simple to run
Mobile Application Lifecycle Management IBM Worklight Rational Solution for Collaborative Lifecycle Management Business Development Design Test Code Test Deploy Traceability across the entire development lifecycle Construct, debug, and test mobile UIs Mobile Application Platform Open Lifecycle Integration Platform Application Lifecycle Management IBM provides the only comprehensive mobile development solution currently in the market combining a mobile application platform, construction tools, and lifecycle management
Continuous Integration for Mobile
IBM s DevOps for Mobile Solution Continuous Delivery
IBM SmartCloud Continuous Delivery https://jazz.net/products/smartcloud continuous delivery/ 49
IBM SmartCloud Continuous Delivery packaging Extending Agile Development with Continuous Delivery Build -> Publish -> Deploy -> Test Mobile ALM (Rational Team Concert) IBM SmartCloud Provisioning Agile Development Deployment to Virtual Systems 50
Extending IBM SmartCloud Continuous Delivery Optional and alternative Integrations Extending CLM with Continuous delivery Deployment to Cloud & Virtual Systems Mobile ALM (Rational Team Concert) Continuous Delivery IBM SmartCloud Provisioning IBM PureSystems IBM Workload Deployer Design Management Continuous Integration Test Automation Deployment Automation Performance Management Incident Management IBM Rational Software Architect Design Manager IBM Rational Build Forge. Hudson. Jenkins. IBM Rational... Quality Manager IBM Green Hat IBM Rational Automation Framework Chef IBM SmartCloud Application. Performance Management IBM SmartCloud Control Desk.. 51
2012 Product Implementations Rational Build Forge Jenkins Release Engineering Continuous Integration Continuous IBM SmartCloud Delivery Continuous Delivery Deployment Library Change Management Rational Team Concert Development Source Control Management Rational Green Hat Service Simulation Rational Automation Configuration Framework Automation Operations Chef IBM SmartCloud Control Desk Incident Management Release Management Requirement s Management Rational Requirement Management Quality Management Rational Quality Management Selenium Test Automation Rational Performance Tester Rational Functional Tester Environment Provisioning IBM Automation IBM SmartCloud PureApplication Provisioning System IBM Workload Deployer Application Monitoring IBM SmartCloud Application Performance Management Data Management Required product At least one is required
IBM s DevOps for Mobile Solution Service Virtualization
Routing Service What is Service Simulation and Test Virtualization? Public Cloud Mobile App Under Test Collaboration Third-party Services Portals Data Warehouse Directory Identity File systems Mainframe Content Providers Archives Private Cloud Enterprise Service Bus Heterogeneous Environments Business EJB Partners Shared Services Messaging Services Capture & Model Databases Mobile App Under Test Mainframe applications Third-party Services Packaged apps, messaging services, etc. Virtual Services System dependencies are a key challenge in setting up test environments: Unavailable/inaccessible: Testing is constrained due to production schedules, security restrictions, contention between teams, or because they are still under development Costly 3rd party access fees: Developing or testing against Cloud based or other shared services can result in costly usage fees Impractical hardware based virtualization: Systems are either too difficult (mainframes) or remote (thirdparty services) to replicate via traditional hardwarebased virtualization approaches Test Virtualization enables to create virtual services : ovirtual Services simulate the behavior of an entire application or system during testing ovirtual Services can run on commodity hardware, private cloud, public cloud oeach developer, tester can easily have their own test environment odeveloper and testers continue to use their testing tools (Manual, Web performance, UI test automation) 54
IBM Rational Test Virtualization Solution Test Virtualization is an enabler for continuous Integration Testing Services, applications, systems are introduced into the continuous integration cycle in a prioritized, controlled fashion. Actual Service/App Virtual Service/App Mobile App under Test Incremental Integration Testing
IBM Rational Test Virtualization Solution for continuous integration and testing Avoid time spent installing and configuring software just to discover basic build issues Smoke tests can be integrated as part of the continuous integration process through deployment automation and test virtualization Smoke test results are made available to the entire team to shorten resolution Cloud Environment Order Mgr CRM Virtual Lab Manager VM Catalog App Server Virtual Machines Assets Build Product Increment Smoke Tests Sandboxes Self provisionning
Wrap up: DevOps Best Practices for Mobile Apps
DevOps Best Practices for Mobile Apps Continuous Integration and Continuous Delivery 1. Ensure end-to-end traceability across all assets 2. Practice continuous integration 3. Maintain separate streams for each mobile OS, SDK supported 4. Use automated build and deploy scripts
DevOps Best Practices for Mobile Apps Continuous Testing and Continuous Monitoring 5. Test each build on simulated and physical devices 6. Virtualize and simulate back end services 7. Monitor the deployed mobile app and back end services performance
DevOps Best Practices for Mobile Apps Mobile App Delivery 8. Governance of provisioning profiles, certificates and API keys 9. Use a Private Development App Store to test device deployment 10. Convert user feedback into user stories
Where to get more information? My Blog: o http://bit.ly/sdarchitect Leveraging DevOps in a water-scrum-fall World o http://ibm.co/prqkwl IBM Enterprise DevOps blog o http://ibm.co/jrpvgr