Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cargo-Cult Containers: A Critical View of Conta...

pautasso
August 17, 2022

Cargo-Cult Containers: A Critical View of Containers in Modern Software Development

SOSE2022 talk slides of a paper by Tommi Mikkonen, Cesare Pautasso, Kari Systä, Antero Taivalsaari

Software is increasingly developed and deployed using containers. While the concept of a container is conceptually straightforward, there are various issues to be considered while using them, ranging from technical details inside containers to the orchestration of containers that jointly form a meaningful application. In recent years, the use of containers has become so prevalent that developers have a tendency to resort to cargo-cult containerization – ritual adherence to the use of containers just because so many others are doing the same thing. In this paper, we study advantages and downsides of containers in modern- day software development. We foresee the use of containers to spread into new areas, including IoT systems and embedded devices. At the same time, we caution against indiscriminate use of containers, since excessive containerization can have adverse impacts on software maintenance and overall complexity of a system architecture.

pautasso

August 17, 2022
Tweet

More Decks by pautasso

Other Decks in Technology

Transcript

  1. Cargo-Cult Containerization A Critical View of Containers in Modern So

    tware Development Tommi Mikkonen, Cesare Pautasso, Kari Systä, Antero Taivalsaari
  2. Abstract Software is increasingly developed and deployed using containers. While

    the concept of a container is conceptually straightforward, there are various issues to be considered while using them, ranging from technical details inside containers to the orchestration of containers that jointly form a meaningful application. In recent years, the use of containers has become so prevalent that developers have a tendency to resort to cargo-cult containerization 3 ritual adherence to the use of containers just because so many others are doing the same thing. In this paper, we study advantages and downsides of containers in modern- day software development. We foresee the use of containers to spread into new areas, including IoT systems and embedded devices. At the same time, we caution against indiscriminate use of containers, since excessive containerization can have adverse impacts on software maintenance and overall complexity of a system architecture.
  3. «boundary» C o n t e x t «container» A

    P I [docker] «container» Microservice 1 [docker] «container» Microservice 2 [docker] «container» D a t a b a s e [ M y S Q L ] «component» A P I G a te way [Java] «component» C o m p o n e n t 1 a [Python] «component» Co m p o n e n t 1 b [Python] «component» Co m p o n e n t 2 a [Node.js] «component» Microservice 1 State «component» «external_system» Client «person» U s e r u s e s H T T P S Microservice 2 State «external_system» Dependency
  4. «boundary» C o n t e x t «container» [docker]

    «container» D a t a b a s e [ M y S Q L ] «component» A P I G a te way [Java] «component» C o m p o n e n t 1 a [Python] «component» Co m p o n e n t 1 b [Python] «component» Co m p o n e n t 2 a [Node.js] «component» Microservice 1 State «component» «external_system» Client «person» U s e r u s e s H T T P S Microservice 2 State «external_system» Dependency Monolith
  5. «boundary» C o n t e x t «container» A

    P I [docker] «container» Microservice 1 [docker] «container» Microservice 2 [docker] «container» Database1 [ M y S Q L ] «container» Database2 [MongoDB] «component» A P I G a te way [Java] «component» C o m p o n e n t 1 a [Python] «component» Co m p o n e n t 1 b [Python] «component» Co m p o n e n t 2 a [Node.js] «component» Microservice 1 State «component» «external_system» Client «person» U s e r u s e s H T T P S Microservice 2 State «external_system» Dependency «container» Microservice 3 [docker]
  6. «boundary» C o n t e x t «container» A

    P I [docker] «container» Microservice 1 [docker] «container» Microservice 2 [docker] «container» D a t a b a s e [ M y S Q L ] «component» A P I G a te way [Java] «component» C o m p o n e n t 1 a [Python] «component» Co m p o n e n t 1 b [Python] «component» Co m p o n e n t 2 a [Node.js] «component» Microservice 1 State «component» «external_system» Client «person» U s e r u s e s H T T P S Microservice 2 State «external_system» Dependency Team A Team B Team C Team D
  7. «boundary» C o n t e x t «container» A

    P I [docker] «container» Microservice 1 [docker] «container» Microservice 2 [docker] «container» D a t a b a s e [ M y S Q L ] «component» A P I G a te way [Java] «component» C o m p o n e n t 1 a [Python] «component» Co m p o n e n t 1 b [Python] «component» Co m p o n e n t 2 a [Node.js] «component» Microservice 1 State «component» «external_system» Client «person» U s e r u s e s H T T P S Microservice 2 State «external_system» Dependency
  8. «boundary» C o n t e x t «container» A

    P I [docker] «container» Microservice 1 [docker] «container» Microservice 2 [docker] «container» D a t a b a s e [ M y S Q L ] «component» A P I G a te way [Java] «component» C o m p o n e n t 1 a [Python] «component» Co m p o n e n t 1 b [Python] «component» Co m p o n e n t 2 a [Node.js] «component» Microservice 1 State «component» «external_system» Client «person» U s e r u s e s H T T P S Microservice 2 State «external_system» Dependency
  9. Architecture Explicit Construct Deployment Decisions Required Design Team Boundaries Bloat,

    Redundancy Data Persistency Initial State Dif cult Testing Unit (Log) Integration Deployment Portable Slow Orchestration Automated Complex Con guration Runtime Independent Lifecycle Monitor Performance Faster than VM Slower than Native Security Isolation Isolation?
  10. Conclusions " Containerization has become so successful and prevalent that

    it has effectively become a synonym for good software architecture and design. " Tradeoff between the exibility and portability afforded by containers against the complexity that they inevitably introduce.
  11. References " Tommi Mikkonen, Cesare Pautasso, Kari Systä, Antero Taivalsaari,

    , Proc. 16th IEEE International Conference on Service-Oriented System Engineering (SOSE2022), San Francisco, August 2022 Cargo-Cult Containerization: A Critical View of Containers in Modern Software Development
  12. Olaf Zimmerman Mirko Stocker Daniel Lübke Uwe Zdun Cesare Pautasso

    Patterns for API Design Simplifying Integration with Loosely Coupled Message Exchanges Estimated - December 2022 ISBN: 978-0-13767010-9