610 likes | 924 Views
DevOps Best Practices for Mobile Apps. Sanjeev Sharma, as played by John Lanuti IBM Software Group. Him 18 year in the software industry 15 + years he has been a solution architect with IBM Areas of work: DevOps Enterprise Architecture Agile Transformation Mobile Development
E N D
DevOps Best Practices for Mobile Apps Sanjeev Sharma, as played by John Lanuti IBM Software Group
Him • 18 year in the software industry • 15+ years he has been a solution architect with IBM • Areas of work: • DevOps • Enterprise Architecture • Agile Transformation • Mobile Development • Software Delivery Platforms • Software Supply Chains. • Blog @ bit.ly/sdarchitect • Twitter: @sd_architect Sanjeev Sharma sanjeev.sharma@us.ibm.com IBM Software Group
Me • 15 years in the software industry • 14 years with IBM, developer, PM, IT Specialist • Areas of work: • Application Development • Agile Transformation • Mobile Development • Application Lifecycle Management • Blog http://attaboyjohn.wordpress.com/ • Twitter: @johnlanuti John Lanuti jlanuti@us.ibm.com IBM Rational
Agenda • What is DevOps? • DevOps for Mobile – Challenges • DevOps for Mobile – Best Practices • Implementing DevOps for Mobile • Continuous Integration and Test • Continuous Delivery • Service Virtualization
Addressing delivery challenges Gap Gap Customers Dev & Test Teams Line of Business Operations Team Agile Dev Dev Ops Desire for fast and continuous innovation Requirements Code & Tests Business Services Water-SCRUM-Fall? Addressed by... Addressed by... http://ibm.co/PRQkWL
Key Concepts • Continuous Integration • Continuous Delivery • Continuous Test • Continuous Monitoring • Infrastructure as Code • 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"
DevOps for Mobile - Challenges • Mobile Apps are the front-end to a complex(enterprise) back-end system • Mobile Apps are rapidly becoming a critical user interface to enterprise systems
Mobile Application Architecture: LinkedIn http://engineering.linkedin.com/testing/continuous-integration-mobile
DevOps for Mobile - Challenges • Fragmented Platforms • 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 nativeApps in every situation • 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 • Continuous Delivery become ‘deliver and wait’
Delivery Pipeline Build, Package, & Unit Test Application Binaries & Platform Configuration .jsp .html Deploy .java chef recipes .sh Environment Running System Deployable Artifacts Source Artifacts Library Source Control Management
IBM’s Four DevOps Principles • Collaborate across Disciplines • Develop and test against a production-like system • Deploy frequently • Continuously validate operational quality characteristics
Continuous Integration and Continuous Delivery Ensure end-to-end traceability across all assets Practice continuous integration Maintain separate streams for each mobile OS, SDK supported Use automated build and deploy scripts DevOps Best Practices for Mobile Apps
Continuous Testing and Continuous Monitoring Test each build on simulated and physical devices Virtualize and simulate back end services Monitor the deployed mobile app and back end services’ performance DevOps Best Practices for Mobile Apps
Mobile App Delivery Governance of provisioning profiles, certificates and API keys Use a Private Development App Store to test device deployment Convert user feedback into user stories DevOps Best Practices for Mobile Apps
iOS Developer Enterprise Services Developer Android Developer Continuous Integration and Continuous Delivery • End-to-endTraceability, across all Components Deliver App Code Library Source Control Build Fetch Deliver App Code Automate SourceArtifacts Deployable Artifacts Deliver Back-end Services
Continuous Integration and Continuous Delivery • Practice Continuous Integration Mobile App Developent Teams Enterprise Services Developent Teams
Continuous Integration and Continuous Delivery • Maintain separate build areas for each SDK version <manifestxmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdkandroid:minSdkVersion="4"android:targetSdkVersion="15"/> ... </manifest>
Continuous Integration and Continuous Delivery • Automated Build and Deploy scripts Automated Scripts
Continuous Testing and Continuous Monitoring • Test each build on each supported device
Continuous Testing and Continuous Monitoring Mobile App • Simulate Back-end Services App Under Test Third-partyServices Third-partyServices Simulated Service Actual Service Portals Directory Identity Enterprise Service Bus Data Warehouse Mainframe Heterogeneous Environments Mobile App Test Environments to Production
Continuous Testing and Continuous Monitoring • Monitor deployed apps and back end services performance
Mobile App Delivery • Governance of provisioning profiles, certificates and API keys
Mobile App Delivery • Use a ‘Private’ App store to test device deployment
Mobile App Delivery • Convert App Store feedback into user stories
Mobile Delivery Pipeline Mobile IDE API keys, Provisioning Profiles… Build, Package, & Unit Test Application Binaries & Platform Configuration .jsp .html .java Deploy chef recipes .sh Deployable Artifacts Source Artifacts Source Control Management Library Enterprise Services IDE Environment Running System
DevOpsReference Architecture Release Engineering Continuous Integration Deployment Library Continuous Delivery Development Operations Incident Management Release Management Change Management Source Control Management Configuration Automation Service Simulation Environment Provisioning Automation Application Monitoring Data Management Quality Management Requirements Management Test Automation Mobile App IDE Enterprise Services IDE
IBM’s DevOps for Mobile Solution – Continuous Integration and Test
IBM Mobile FoundationEnabling the development and delivery of mobile apps IBM Mobile Foundation • Includes: • IBM Worklight • IBM WebSphere Cast Iron • IBM Endpoint Manager for Mobile Devices • Plus New Services Offering • IBM Software Services for Mobile Foundation Build, connect, manage and secure your mobile enterprise
IBM WorklightOpen, 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
Worklightruntime architecture Worklight Server Device Runtime Application Code Client-side App Resources Server-side Application Code • Cross Platform Technology JSON Translation Direct Update Stats Aggregation • Security and Authentication • Back-end Data Integration • Post-deployment control and Diagnostics Mobile Web Apps Authentication Unified Push Notifications Adapter Library
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 Open Lifecycle Integration Platform Rational Solution for Collaborative Lifecycle Management IBM Worklight Development Business Design Code Test Deploy Test Traceability acrossthe entire development lifecycle Construct, debug, and test mobile UIs Application Lifecycle Management Mobile Application Platform IBM provides the only comprehensive mobile development solution currently in the market combining a mobile application platform, construction tools, and lifecycle management
IBM SmartCloud Continuous Delivery https://jazz.net/products/smartcloud-continuous-delivery/
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