O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Managing Internal and External Services for a High Uptime Goal

658 visualizações

Publicada em

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1Csfk7Z.

Shobana Radhakrishnan shares details about best practices adopted in implementing API integration with third party services, how to manage change and deal with failures. Filmed at qconsf.com.

Shobana Radhakrishnan is responsible for technology and engineering execution at Mindflash Technologies Inc, a cloud-hosted Learning Management System, where she is Vice President of Engineering.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Managing Internal and External Services for a High Uptime Goal

  1. 1. November 2014 Managing Service Integration for High Uptime In a Lean Startup Shobana Radhakrishnan Vice President of Engineering, Mindflash
  2. 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /api-integration-services
  3. 3. Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide Presented at QCon San Francisco www.qconsf.com
  4. 4. Agenda • Services at Scale • Mindflash Customer API • Mindflash Integration with External Services • Approach and Lessons Learned 2
  5. 5. Questions • How do you manage service deployment for high uptime and quality? • How can you guarantee high uptime when relying on several external services? • How can you do these in a lean startup? 3
  6. 6. Mindflash At a Glance 4 Mindflash App Mindflash Customer API Services Course Videos Player Developer ManagerTrainer/P rospect
  7. 7. Lean Startup** 5 **Eric Weis: http://theleanstartup.com/principles
  8. 8. Lean Startup Principles at Mindflash • Minimum Viable Product (MVP) • Ship Frequently • Monitor Outcome • Iterate 6
  9. 9. Typical Constraints • Budget • Resources • High Release Frequency 7
  10. 10. Monolithic vs. Microservices Monolithic • N-tier Application • Code dependencies • Shared database • Larger units of deployment Microservices • Independent services • Easier to manage and deploy • Loose Coupling 8
  11. 11. Our Journey • Started with a monolithic service – FLEX, .NET • Independent service and middle layers • Shared database with read rep • 20+ external services -> microservices architecture 9
  12. 12. Our Goals • Uptime and Response Time • High website performance • Low error rates 10
  13. 13. Key Metrics for Mindflash • Course Creation Rate • Course Completion Rate • Uptime and Response Time 11
  14. 14. Mindflash API 12
  15. 15. Why • Bulk Operations with UX flexibility • Varied needs for same functionality • Users more self-sufficient 13
  16. 16. API Functionality • REST Services • User and User Group Management • User Enrollment • Reporting 14
  17. 17. API Call Flow 15 API Customer 1 API Customer 2 API Customer 3 API Customer 4 API Customer 5 Services Layer API Gateway
  18. 18. API Considerations • Heterogeneous Needs • User release cycles vary • Backwards compatibility • Objects evolve continuously 16
  19. 19. Mindflash External Service Integration 17
  20. 20. Trends • Growth of PaaS Services • Evolution of Hub and Data Analysis Solutions • Public API and Open Source 18
  21. 21. Services we Integrate With 19
  22. 22. Integration • Building and Maintaining Component • API Migration and Upgrades • Security and Bug Patches 20
  23. 23. Approach and Lessons Learned 21
  24. 24. Mindflash Development Philosophy • Reuse, don’t reinvent • Action and Iteration • Upgrade continuously 22
  25. 25. System Design Best Practices • Loose Coupling • Chain-of-responsibility pattern • Single Responsibility Principle 23
  26. 26. Programming Best Practices • Defensive Programming • Critical vs. non-critical operations • Real-time vs. Asynchronous • Feature Flags 24
  27. 27. Real-time Vs. Asynchronous 25 MF Trainers and Prospects Trainees Hydra Billing RDS Analytics File Conversion Feature Integration Developers MF API Gateway
  28. 28. Critical vs. Non-Critical 26 MF Trainers and Prospects Trainees Hydra Billing RDS Analytics File Conversion Feature Integration Developers MF API Gateway
  29. 29. Feature Flags – our implementation • Feature Flags persisted in DB • Set per account and pricing tier • Common Uses – Manage rollout for risky changes – Adjust feature offering based on pricing tier – Enable limited testing of a feature 27
  30. 30. Feature Flipping in Node /* Defining a Feature */ var flipper = require(‘flipper’); flipper.add (‘newPlayer’); /* Testing for a Feature */ Var flipper = require(‘flipper’); If (flipper.newPlayer) { } Else { } /* Another Way */ Flipper.isEnabled(‘newPlayer’); 28
  31. 31. Enabling and Disabling /* Enable */ flipper.enable(‘newPlayer’); /*Disable */ Flipper.disable(‘newPlayer’); /* Finding out all current features */ flipper.allFeatures(); 29
  32. 32. Continuous Deployment 30 Build Deploy to QA Check in Run Tests Deploy to PROD Rule-based subset that needs to be rebuilt/deplo yed
  33. 33. Process Best Practices • Agile, Continuous Deployment • Early customer beta • Automate, automate more • Monitor, monitor more 31
  34. 34. Results • Releases without fallout • Shorter deployment cycles • Much lower error rates • Consistently high uptime 32
  35. 35. Lessons Learned • Chain-of-responsibility pattern effective • Design for easy migration • Comprehensive monitoring • Failure Detection and Recovery • Environment Convergence 33
  36. 36. Future Improvements • Staging Environment • Blue Green Deployment • Nightly Performance Testing 34
  37. 37. References • http://mindflash.github.io/mf-api- example/app/index.html#/sandbox • Developer Blog – http://www.mindflash.com/developers 35
  38. 38. Thank you! • https://www.linkedin.com/in/shob anaradhakrishnan • @shobanarad 36
  39. 39. Questions?
  40. 40. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/api- integration-services

×