Immutable Infrastructure Calls for Immutable Architecture

With the advent of cloud computing and the concept of immutable infrastructure, the scaling and deployment of applications has become significantly easier. This increases the possibility of “configuration drift” as an operations team manages this cluster of machines, both virtual and actual. In this paper we propose a revised view on configuration and architecture. We propose that software deployed on a public or private cloud should, to the furthest possible extent, be immutable and source controlled. This reduces configuration drift and ensures no configuration problems in production as a result of updates or changes. We will show an example of a software project deployed on Amazon Web Services with an immutable Jenkins setup which manages updating the whole cluster and is self-regenerating. We will also discuss how this lends itself naturally to interoperability between clouds, because of the infrastructure-agnostic nature of this approach.

[1]  Michael Keeling Lightweight and Flexible: Emerging Trends in Software Architecture from the SATURN Conferences , 2015, IEEE Softw..

[2]  Liming Zhu,et al.  Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices , 2017, IEEE Access.

[3]  Alexander Lenk,et al.  TIOSA: Testing VM Interoperability at an OS and Application Level -- A Hypervisor Testing Method and Interoperability Survey , 2014, 2014 IEEE International Conference on Cloud Engineering.

[4]  Michael Le,et al.  Container and Microservice Driven Design for Cloud Infrastructure DevOps , 2016, 2016 IEEE International Conference on Cloud Engineering (IC2E).

[5]  Yuanfang Cai,et al.  A Case Study in Locating the Architectural Roots of Technical Debt , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[6]  Mojtaba Shahin Architecting for DevOps and Continuous Deployment , 2015, ASWEC.

[7]  T. H. Tse,et al.  A Tale of Clouds: Paradigm Comparisons and Some Thoughts on Research Issues , 2008, 2008 IEEE Asia-Pacific Services Computing Conference.

[8]  Paolo Di Francesco Architecting Microservices , 2017, 2017 IEEE International Conference on Software Architecture Workshops (ICSAW).

[9]  Chintan Amrit,et al.  Effectiveness of Test-Driven Development and Continuous Integration: A Case Study , 2018, IT Professional.

[10]  Rami Bahsoon,et al.  Microservices and Their Design Trade-Offs: A Self-Adaptive Roadmap , 2016, 2016 IEEE International Conference on Services Computing (SCC).

[11]  Matt Callanan,et al.  DevOps: Making It Easy to Do the Right Thing , 2016, IEEE Software.

[12]  Liming Zhu,et al.  Achieving Reliable High-Frequency Releases in Cloud Environments , 2015, IEEE Software.

[13]  Hans-Peter Fröschle DevOps , 2017, HMD Praxis der Wirtschaftsinformatik.

[14]  Chris Rose,et al.  A Break in the Clouds: Towards a Cloud Definition , 2011 .

[15]  Neil A. Ernst,et al.  Toward Design Decisions to Enable Deployability: Empirical Study of Three Projects Reaching for the Continuous Delivery Holy Grail , 2014, 2014 44th Annual IEEE/IFIP International Conference on Dependable Systems and Networks.

[16]  Carsten Binnig,et al.  How is the weather tomorrow?: towards a benchmark for the cloud , 2009, DBTest '09.

[17]  Cesare Pautasso,et al.  Microservices in Practice, Part 2: Service Integration and Sustainability , 2017, IEEE Software.

[18]  Richard Hill,et al.  Towards an understanding of microservices , 2017, 2017 23rd International Conference on Automation and Computing (ICAC).

[19]  Ian Sommerville,et al.  The Cloud Adoption Toolkit: supporting cloud adoption decisions in the enterprise , 2010, Softw. Pract. Exp..

[20]  Cesare Pautasso,et al.  Microservices in Practice, Part 1: Reality Check and Service Design , 2017, IEEE Software.