ABSTRACT
The development of architectural connectors as first-class software entities is a long-standing software engineering promise that has not been fully realized thus far. This observation is especially true in self-adaptive software systems, where most advances within academia and industry have targeted software components as the primary locus for run-time adaptation. In this paper, we revisit the evolutionary history of architectural connectors and discuss the challenges of implementing architectural connectors as first-class self-adaptation entities in the domain of modern microservice applications. We then make a case for our ongoing work on a cloud-native self-adaptive service mesh framework that builds on recent container orchestration, self-adaptation, and service mesh technologies.
- 2003. UNIX Network Programming Volume 1: The Sockets Networking API. Vol. 3. Addison-Wesley Professional.Google Scholar
- C. M. Aderaldo 2019. Kubow: An Architecture-Based Self-Adaptation Service for Cloud Native Applications. In 13th European Conference on Software Architecture–Volume 2. 42–45.Google ScholarDigital Library
- E. Albassam 2016. Model-based Recovery Connectors for Self-adaptation and Self-healing. In 11th International Joint Conference on Software Technologies – Volume 1: ICSOFT-EA. 79–90.Google Scholar
- J. Aldrich 2019. Model-Based Adaptation for Robotics Software. IEEE Software 36, 2 (2019), 83–90.Google ScholarDigital Library
- Amazon Web Services. [n.d.]. AWS App Mesh: Application-level networking for all your services. Retrieved 2021/07/26 21:09:38 from https://aws.amazon.com/app-mesh/Google Scholar
- Apache Foundation. [n.d.]. Apache ActiveMQ: Flexible & Powerful Open Source Multi-Protocol Messaging. Retrieved 2021/07/26 21:09:38 from https://activemq.apache.org/Google Scholar
- Apache Foundation. [n.d.]. Apache Kafka: A Distributed Streaming Platform. Retrieved 2021/07/26 21:09:38 from https://kafka.apache.org/Google Scholar
- G. Banavar 1999. A Case for Message Oriented Middleware. In International Symposium on Distributed Computing(Lecture Notes in Computer Science, Vol. 1693). Springer, 1–17.Google ScholarCross Ref
- A. D. Birrell and B. J. Nelson. 1984. Implementing Remote Procedure Calls. ACM Transactions on Computer Systems (TOCS) 2, 1 (1984), 39–59.Google ScholarDigital Library
- D. Box 2000. Simple Oject Access Protocol (SOAP) 1.1. Retrieved 2021/07/26 21:09:38 from https://www.w3.org/TR/2000/NOTE-SOAP-20000508/Google Scholar
- B. Burns and D. Oppenheimer. 2016. Design patterns for container-based distributed systems. In 8th {USENIX} Workshop on Hot Topics in Cloud Computing (HotCloud 16).Google Scholar
- L. Calcote. 2018. The Enterprise Path to Service Mesh Architectures. O’Reilly.Google Scholar
- J. Cámara 2016. Incorporating architecture-based self-adaptation into an adaptive industrial software system. Journal of Systems and Software 122 (2016), 507–523.Google ScholarDigital Library
- D. A. Chappell. 2004. Enterprise Service Bus. O’Reilly Media, Inc.Google Scholar
- S.-W. Cheng and D. Garlan. 2012. Stitch: A language for architecture-based self-adaptation. Journal of Systems and Software 85, 12 (2012), 2860–2875.Google ScholarDigital Library
- R. De Lemos 2013. Software Engineering for Self-Adaptive Systems: A Second Research Roadmap. In Software Engineering for Self-Adaptive Systems II. Springer, 1–32.Google Scholar
- M. DeLaney. 2020. What Is Progressive Delivery All About?Retrieved 2021/07/26 21:09:38 from https://launchdarkly.com/blog/what-is-progressive-delivery-all-about/Google Scholar
- EnvoyProxy. [n.d.]. Envoy. Retrieved 2021/07/26 21:09:38 from https://www.envoyproxy.io/Google Scholar
- R. T. Fielding. 2000. REST: Architectural Styles and the Design of Network-based Software Architectures. Ph.D. Dissertation. University of California, Irvine. Retrieved 2021/07/26 21:09:38 from http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htmGoogle Scholar
- Flagger.app. [n.d.]. Flagger: Progressive Delivery Operator for Kubernetes. Retrieved 2021/07/26 21:09:38 from https://flagger.app/Google Scholar
- Omitted for blind review. [n.d.]. An Empirical Evaluation of Two Microservice Resiliency Patterns: Retry and Circuit Breaker. Submitted for publication.Google Scholar
- D. Garlan 1995. Architectural Mismatch: Why Reuse is So Hard. IEEE Software 12, 6 (1995), 17–26.Google ScholarDigital Library
- D. Garlan 2004. Rainbow: Architecture-Based Self-Adaptation with Reusable Infrastructure. Computer 37, 10 (2004), 46–54.Google ScholarDigital Library
- D. Garlan, R. T. Monroe, and D. Wile. 2000. Acme: Architectural Description of Component-Based Systems. Foundations of Component-Based Systems 68 (2000), 47–68.Google Scholar
- gRPC. [n.d.]. gRPC: A high-performance, open source universal RPC framework. Retrieved 2021/07/26 21:09:38 from https://grpc.io/Google Scholar
- HashiCorp. [n.d.]. Consul Connect. Retrieved 2021/07/26 21:09:38 from https://www.consul.io/docs/connectGoogle Scholar
- P. Inverardi 2005. Synthesis of correct and distributed adaptors for component-based systems: an automatic approach. In 20th IEEE/ACM international Conference on Automated software engineering (ASE). 405–409.Google ScholarDigital Library
- Istio. [n.d.]. Istio: Connect, secure, control, and observe services. Retrieved 2021/07/26 21:09:38 from https://istio.io/Google Scholar
- P. Jamshidi 2018. Microservices: The Journey So Far and Challenges Ahead. IEEE Software 35, 3 (2018), 24–35.Google ScholarCross Ref
- J. O. Kephart and D. M. Chess. 2003. The Vision of Autonomic Computing. Computer 36, 1 (2003), 41–50.Google ScholarDigital Library
- Kubernetes. [n.d.]. Horizontal Pod Autoscaler. Retrieved 2021/07/26 21:09:38 from https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/Google Scholar
- Kubernetes. [n.d.]. Kubernetes: Production-Grade Container Orchestration. Retrieved 2021/07/26 21:09:38 from https://kubernetes.io/Google Scholar
- Kuma.io. [n.d.]. Kuma: The universal Envoy service mesh for distributed service connectivity. Retrieved 2021/07/26 21:09:38 from https://kuma.io/Google Scholar
- J. Lewis and M. Fowler. 2014. Microservices: a definition of this new architectural term. Retrieved 2021/07/26 21:09:38 from https://martinfowler.com/articles/microservices.htmlGoogle Scholar
- Linkerd. [n.d.]. Linkerd: Ultralight, security-first service mesh for Kubernetes. Retrieved 2021/07/26 21:09:38 from https://linkerd.io/Google Scholar
- S. Mahdavi-Hezavehi 2017. A systematic literature review on methods that handle multiple quality attributes in architecture-based self-adaptive systems. Information and Software Technology 90 (2017), 1–26.Google ScholarCross Ref
- N. R. Mehta, N. Medvidovic, and S. Phadke. 2000. Towards a Taxonomy of Software Connectors. In 22nd International Conference on Software Engineering (ICSE). 178–187.Google Scholar
- N. C. Mendonça 2018. Generality vs. Reusability in Architecture-Based Self-Adaptation: The Case for Self-Adaptive Microservices. In 12th European Conference on Software Architecture: Companion Proceedings.Google Scholar
- N. C. Mendonça 2021. Developing Self-Adaptive Microservice Systems: Challenges and Directions. IEEE Software 38, 2 (2021), 70–79.Google ScholarDigital Library
- N. C. Mendonça 2020. Model-based analysis of microservice resiliency patterns. In 2020 IEEE International Conference on Software Architecture (ICSA). IEEE, 114–124.Google ScholarCross Ref
- D. Merkel. 2014. Docker: Lightweight Linux Containers for Consistent Development and Deployment. Linux J. 2014, 239 (2014).Google ScholarDigital Library
- W. Morgan. 2019. The Service Mesh: What Every Software Engineer Needs to Know about the World’s Most Over-Hyped Technology. Retrieved 2021/07/26 21:09:38 from https://buoyant.io/service-mesh-manifesto/Google Scholar
- Object Management Group. 2012. Common Object Request Broker Architecture (CORBA) 3.3. Retrieved 2021/07/26 21:09:38 from https://www.omg.org/spec/CORBA/Google Scholar
- M. Oussalah, A. Smeda, and T. Khammaci. 2004. An Explicit Definition of Connectors for Component-Based Software Architecture. In 11th IEEE International Conference and Workshop on the Engineering of Computer-Based Systems (ECBS). IEEE, 44–51.Google Scholar
- J. L. Pastrana 2011. QoS-enabled and self-adaptive connectors for Web Services composition and coordination. Computer Languages, Systems & Structures 37, 1 (2011), 2–23.Google ScholarDigital Library
- Prometheus. [n.d.]. Prometheus: Monitoring system & time series database. Retrieved 2021/07/26 21:09:38 from https://prometheus.ioGoogle Scholar
- M. Ranney. 2016. What I Wish I Had Known before Scaling Uber to 1,000 Services. Retrieved 2021/07/26 21:09:38 from gotocon.com/dl/goto-chicago-2016/slides/MattRanney_WhatIWishIHadKnownBeforeScaling UberTo1000Services.pdf presentation at GOTO Chicago 2016.Google Scholar
- N. Salatge and J.-C. Fabre. 2007. Fault tolerance connectors for unreliable web services. In 37th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN). IEEE, 51–60.Google ScholarDigital Library
- M. Shaw. 1993. Procedure Calls Are the Assembly Language of Software Interconnection: Connectors Deserve First-Class Status. In Workshop on Studies of Software Design. Springer, 17–32.Google Scholar
- M. Shaw and D. Garlan. 1996. Software Architecture: Perspectives on an Emerging Discipline. Vol. 1. Prentice Hall Englewood Cliffs.Google Scholar
- SMI-Spec. [n.d.]. SMI: A standard interface for service meshes on Kubernetes. Retrieved 2021/07/26 21:09:38 from https://smi-spec.io/Google Scholar
- Traefik Labs. [n.d.]. Traefik Mesh: Simpler Service Mesh. Retrieved 2021/07/26 21:09:38 from https://traefik.io/traefik-mesh/Google Scholar
- D. Weyns. 2017. Software Engineering of Self-Adaptive Systems: An Organised Tour and Future Challenges. Springer.Google Scholar
- O. Zimmermann. 2017. Microservices tenets. Computer Science: Research and Development 32, 3 (2017), 301–310.Google ScholarDigital Library
Towards First-Class Architectural Connectors: The Case for Self-Adaptive Service Meshes
Recommendations
Generality vs. reusability in architecture-based self-adaptation: the case for self-adaptive microservices
ECSA '18: Proceedings of the 12th European Conference on Software Architecture: Companion ProceedingsWhy is it so difficult to build self-adaptive systems by reusing existing self-adaptation services and frameworks? In this paper, we argue that one possible explanation is that there is a fundamental mismatch between the adaptation needs of modern ...
Towards Adaptive Monitoring Services for Self-Adaptive Software Systems
Service-Oriented Computing – ICSOC 2017 WorkshopsAbstractIn order to deal with the great diversity of execution contexts, modern software systems rely on feedback control loops and external monitoring services for observing them and their environment, and respond to context changes through adaptation. ...
Adaptive Knowledge Bases in Self-Adaptive System Design
SEAA '15: Proceedings of the 2015 41st Euromicro Conference on Software Engineering and Advanced ApplicationsSelf-adaptive systems allow for flexible solutions in changing environments. Usually, a fixed set of predefined rules is used to define the adaptation possibilities of a system. The main problem of such systems is to cope with environment behaviours ...
Comments