Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture

8,017 views

Published on

A look at the searches related to the term “microservices” on Google Trends revealed that the top searches are now technology driven. This implies that the time of general search terms such as “What is microservices?” has now long passed. Not only are software vendors (for example, IBM and Microsoft) using microservices and DevOps practices, but also content providers (for example, Netflix and the BBC) have adopted and are using them.
I report on experiences and lessons learned during incremental migration and architectural refactoring of a commercial mobile back end as a service to microservices architecture. I explain how we adopted DevOps and how this facilitated a smooth migration towards Microservices architecture.

Published in: Software
  • Be the first to comment

Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture

  1. 1. Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture Armin Balalaie, Abbas Heydarnoori Sharif University of Technology Pooyan Jamshidi Imperial College London
  2. 2. Trend (DevOps-Microservices) A. Balalaie, A. Heydarnoori, P. Jamshidi, Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture, IEEE Software, will appear in May/June 2016 special issue on Software Engineering for DevOps. Please drop me an email for the pre-print. 2 IEEE SOFTWARE | PUBLISHED BY THE IEEE COMPUTER SOCIETY 0 7 4 0 - 7 4 5 9 / 1 6 / $ 3 3 . 0 0 © 2 0 1 6 I E E E Microservices Architecture Enables DevOps Migration to a Cloud-Native Architecture Armin Balalaie and Abbas Heydarnoori, Sharif University of Technology Pooyan Jamshidi, Imperial College London // This article reports on experiences and lessons learned during incremental migration and architectural refactoring of a commercial mobile back end as a service to microservices architecture. It explains how the researchers adopted DevOps and how this facilitated a smooth migration. // A LOOK AT the searches related to the term “microservices” on Google Trends revealed that the top searches are now technology driven. This im- plies that the time of general search terms such as “What is microser- vices?” has now long passed. Not only are software vendors (for ex- ample, IBM and Microsoft) using microservices and DevOps practices, but also content providers (for exam- ple, Netflix and the BBC) have ad- opted and are using them. In addition, Google Trends re- veals that both DevOps and mi- croservices are growing concepts, with an equal rate of growth after 2014 (see Figure 1). Although Dev- Ops can also be applied to mono- lithic software systems, microservices enable effective implementation of DevOps by promoting the impor- tance of small teams.1 (For more on DevOps and Microservices, see the related sidebar.) A microservices architecture is a cloud-native architecture that aims to realize software systems as a package of small services. Each ser- vice is independently deployable on a potentially different platform and technological stack. It can run in its own process while communicat- ing through lightweight mechanisms such as RESTful or RPC-based APIs—for example, Finagle. (REST stands for Representational State Transfer.) In this setting, each ser- vice is a business capability that can utilize various programming lan- guages and data stores and is devel- oped by a small team.2 Migrating monolithic architec- tures to microservices brings in many benefits. In particular, it pro- vides adaptability to technological changes to avoid technology lock-in and, more important, reduced time- to-market and better development team structuring around services.3 Here we explain our experiences and lessons learned during incre- mental migration of Backtory (www. backtory.com), a commercial mo- bile back end as a service (MBaaS), to microservices in the context of DevOps. Microservices help Back- tory in various ways, especially in shipping new features more fre- quently and providing scalability for the collective set of users from differ- ent mobile-app developers. Furthermore, we report on migra- tion patterns we developed on the basis of our observations in migra- tion projects. Practitioners can use these patterns to migrate monolithic software systems to microservices. In addition, system consultants can use FOCUS: DEVOPS
  3. 3. Popular Search Terms on Google building microservices docker microservices java microservices microservice microservices architecture microservices example microservices fowler netflix microservices soa microservices spring microservices agile devops chef devops cloud devops devops aws devops engineer devops jobs devops puppet devops reactions devops tools
  4. 4. Microservices A cloud-native architecture
  5. 5. Developing a single application as a suite of small services Source: http://martinfowler.com/articles/microservices.html
  6. 6. There is a bare minimum of centralized management of the services (Polyglot-ness) Source: http://martinfowler.com/articles/microservices.html
  7. 7. SSaaS (Server Side as a Service) A platform that makes mobile application development easier
  8. 8. Features of SSaaS • Mobile application developers can use server-side capabilities without knowing any server-side programming languages • RDBMS as a Service • Define data models in SSaaS dashboard • Use the models’ objects in mobile application development • Built-in user management • Chat as a Service • Integration with RDBMSaaS user authentication
  9. 9. Architecture of SSaaS before the migration
  10. 10. Reasons for migration • On-demand capability of Chat as a Service • The need for a reusable resource manager • Management of resources like relational database instances, e.g. MySQL. • The need for decentralized data governance • Chat service’s metadata needed a dedicated place • The need for automated deployment • The need for built-in scalability
  11. 11. Target Architecture of SSaaS
  12. 12. Migration Steps Incremental steps
  13. 13. Preparing the Continuous Integration Pipeline
  14. 14. Transforming DeveloperData to a Service
  15. 15. Introducing Continuous Delivery
  16. 16. Introducing Edge Server
  17. 17. Introducing Dynamic Service Collaboration
  18. 18. Introducing Resource Manager
  19. 19. Introducing ChatServices and DeveloperInfoServices
  20. 20. Clusterization
  21. 21. Monitoring
  22. 22. Delivery Pipeline
  23. 23. Team Formation
  24. 24. Lessons Learned Experiences in migrating to microservices
  25. 25. Deployment in the development environment is difficult for a typical developer
  26. 26. Service contracts are double important
  27. 27. Distributed system development needs skilled developers
  28. 28. Creating service development templates is important
  29. 29. The research on Microservices has started only in 2015, Plenty of opportunities ahead! 1. Kratzke, N.: About microservices, containers and their underestimated impact on network performance, CLOUD (March 2015). 2. Levcovitz, A., Terra, R., Valente, M.T.: Towards a technique for extracting microservices from monolithic enterprise systems,VEM (September 2015). 3. Rahman, M., Gao, J.: A reusable automated acceptance testing architecture for microservices in behavior-driven development,SOSE (March 2015). 4. Stubbs, J., Moreira, W., Dooley, R.: Distributed systems of microservices using docker and serfnode, IWSG (June 2015). 5. Viennot, N., L´ ecuyer, M., Bell, J., Geambasu, R., Nieh, J.: Synapse: A microservices architecture for heterogeneous-database web applications, EuroSys (April 2015). 6. Knoche, H., Sustaining Runtime Performance while Incrementally Modernizing Transactional Monolithic Software towards Microservices, ICPE (2016). More details? http://arxiv.org/abs/1507.08217
  30. 30. Migration Transition Graph
  31. 31. Cloud Migration through Pattern Composition • The migration patterns can be seen as a sequence of activities by which an application is gradually migrated to the micro-services. • The migration patterns can be composed (i.e., executed sequentially) to move a monolithic application to micro-services.
  32. 32. Migration Pattern Selection Objective MP1 MP2 MP3 MP4 MP5 MP6 MP7 MP8 MP9 MP10 MP11 MP12 MP13 MP14 MP15 Time to market -- -- -- -- -- New capabilities -- -- -- -- Reduce operational cost -- -- -- -- -- -- Leverage investments -- -- -- Free up on-premise resources Scalability -- -- -- -- -- -- -- Operational efficiency -- -- -- -- -- -- -- -- Re-host Cloudification Relocation Refactor Rebinding Replacement Modernization
  33. 33. Assembly-based Situational Migration Objective MP1 MP2 MP3 MP4 MP5 MP6 MP7 MP8 MP9 MP10 MP11 MP12 MP13 MP14 MP15 Time to market -- -- -- -- -- New capabilities -- -- -- -- -- Reduce operational cost -- -- -- -- -- -- -- Leverage investments -- -- -- -- -- -- Free up on premise resources Scalability -- -- -- -- -- -- -- Operational efficiency -- -- -- -- -- -- -- --
  34. 34. Assembly-based Migration Plan Construction Objective MP1 MP2 MP3 MP4 MP5 MP6 MP7 MP8 MP9 MP10 MP11 MP12 MP13 MP14 MP15 Time to market -- -- -- -- -- New capabilities -- -- -- -- -- Reduce operational cost -- -- -- -- -- -- -- Leverage investments -- -- -- -- -- -- Free up on premise resources Scalability -- -- -- -- -- -- -- Operational efficiency -- -- -- -- -- -- -- --
  35. 35. Migration Pattern Meta-Model
  36. 36. Migration Patterns in the context of Cloud-RMM P. Jamshidi, A. Ahmad, C. Pahl, "Cloud Migration Research: A Systematic Review", IEEE Transactions on Cloud Computing, 2013, DOI:10.1109/TCC.2013.10. Migration patterns Primarily facilitate planning Enable Auto-Deployment of Multi-Tier Systems in Hybrid Cloud Environment
  37. 37. Developing asingle application asasuite of small services Source: http://martinfowler.com/articles/microservices.html Architecture of SSaaSbefore the migration Target Architecture of SSaaS Clusterization Servicesare built around businesscapabilities Source: http://martinfowler.com/articles/microservices.html Servicesare independently deployable by fully automated deployment machinery Source: http://martinfowler.com/articles/microservices.html There isabare minimum of centralized management of the services(Polyglot-ness) Source: http://martinfowler.com/articles/microservices.html Transforming DeveloperData to aService Introducing ContinuousDelivery Introducing Edge Server Introducing Dynamic Service Collaboration Introducing Resource Manager Deployment in the development environment isdifficult for a typical developer Service contractsare double important Distributedsystemdevelopment needsskilleddevelopers Creatingservicedevelopment templatesisimportant

×