Abstract
A distributed system is made of interacting components. The current manual, ad-hoc approach to composing them cannot ensure that the composition is correct, and makes it difficult to control performance. The former issue requires reasoning over a high-level specification; the latter requires fine control over emergent run-time properties. To address this, we propose the Varda language (a work in progress) to formalize the architecture of a system, i.e., its components, their interface, and their orchestration logic. The Varda compiler checks the architecture description and emits glue code, which executes the orchestration logic and links to the components. The Varda system relies on a generic interception mechanism to act upon distribution-related system features in a transparent and uniform manner. Varda also takes into account important non-functional system properties, such as placement.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
Currently our compiler supports only Java bindings.
References
Iptables. https://www.netfilter.org/projects/iptables/index.html
Kubernetes. http://kubernetes.io
OpenStack. https://www.openstack.org/
Podman. https://podman.io/
Akka: Akka. https://akka.io/
Amazon: Aws lambda. https://aws.amazon.com/lambda/
Armstrong, J.: Erlang. Commun. ACM 53(9), 68–75 (2010)
Bainomugisha, E., Carreton, A.L., Cutsem, T.V., Mostinckx, S., Meuter, W.D.: A survey on reactive programming. ACM Comput. Surv. (CSUR) 45(4), 1–34 (2013)
Boudol, G., Luo, Z., Rezk, T., Serrano, M.: Reasoning about web applications: an operational semantics for HOP. ACM Trans. Program. Lang. Syst. (TOPLAS) 34(2), 1–40 (2012)
Buoyant Inc.: Linkerd. https://linkerd.io/
Burns, B., Oppenheimer, D.: Design patterns for container-based distributed systems. In: Clements, A., Condie, T. (eds.) 8th USENIX Workshop on Hot Topics in Cloud Computing, HotCloud 2016, Denver, CO, USA, 20–21 June 2016. USENIX Association (2016). https://www.usenix.org/conference/hotcloud16/workshop-program/presentation/burns
Bykov, S., Geller, A., Kliot, G., Larus, J.R., Pandya, R., Thelin, J.: Orleans: cloud computing for everyone. In: Proceedings of the 2nd ACM Symposium on Cloud Computing, p. 16. ACM (2011)
Dezani-Ciancaglini, M., de’Liguoro, U.: Sessions and session types: an overview. In: Laneve, C., Su, J. (eds.) WS-FM 2009. LNCS, vol. 6194, pp. 1–28. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-14458-5_1
Docker Inc.: Docker Compose. https://docs.docker.com/compose/
Docker Inc.: Docker Engine. https://www.docker.com/
Emerick, C.: Distributed systems and the end of the API. https://writings.quilt.org/2014/05/12/distributed-systems-and-the-end-of-the-api/
Eskandani, N., Köhler, M., Margara, A., Salvaneschi, G.: Distributed object-oriented programming with multiple consistency levels in ConSysT. In: Proceedings Companion of the 2019 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity, pp. 13–14. ACM (2019)
Apache Foundation: Thrift. https://thrift.apache.org/
Google: Cloud functions. https://cloud.google.com/functions/
Google: Protocol buffers. https://developers.google.com/protocol-buffers
Hendrickson, S., Sturdevant, S., Harter, T., Venkataramani, V., Arpaci-Dusseau, A.C., Arpaci-Dusseau, R.H.: Serverless computation with OpenLambda. In: Clements, A., Condie, T. (eds.) 8th USENIX Workshop on Hot Topics in Cloud Computing, HotCloud 2016, Denver, CO, USA, 20–21 June 2016. USENIX Association (2016). https://www.usenix.org/conference/hotcloud16/workshop-program/presentation/hendrickson
Hutchinson, N.C., Raj, R.K., Black, A.P., Levy, H.M., Jul, E.: The Emerald programming language (1991)
Istio: https://istio.io/
Kramer, J., Magee, J., Finkelstein, A.: A constructive approach to the design of distributed systems. In: 10th International Conference on Distributed Computing Systems (ICDCS 1990), 28 May–1 June 1990, Paris, France, pp. 580–587. IEEE Computer Society (1990). https://doi.org/10.1109/ICDCS.1990.89266
Lewis, J., Fowler, M.: Microservices. https://martinfowler.com/articles/microservices.html
Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. (TOPLAS) 16(6), 1811–1841 (1994)
Magee, J., Dulay, N., Kramer, J.: Regis: a constructive development environment for distributed programs. Distrib. Syst. Eng. 1(5), 304–312 (1994). https://doi.org/10.1088/0967-1846/1/5/005
Meiklejohn, C., Van Roy, P.: Lasp: a language for distributed, coordination-free programming. In: Proceedings of the 17th International Symposium on Principles and Practice of Declarative Programming - PPDP 2015, pp. 184–195. ACM Press (2015)
Meiklejohn, C.S., Lakhani, Z., Alvaro, P., Miller, H.: Verifying interfaces between container-based components (2018)
Microsoft: Azure functions. https://functions.azure.com/
Milano, M., Myers, A.C.: MixT: a language for mixing consistency in geodistributed transactions. In: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation - PLDI 2018, pp. 226–241. ACM Press. https://doi.org/10.1145/3192366.3192375. http://dl.acm.org/citation.cfm?doid=3192366.3192375
Milano, M., Recto, R., Magrino, T., Myers, A.: A tour of gallifrey, a language for geodistributed programming. In: Lerner, B.S., Bodík, R., Krishnamurthi, S. (eds.) 3rd Summit on Advances in Programming Languages (SNAPL 2019). Leibniz International Proceedings in Informatics (LIPIcs), vol. 136, pp. 11:1–11:19. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik (2019). https://doi.org/10.4230/LIPIcs.SNAPL.2019.11. http://drops.dagstuhl.de/opus/volltexte/2019/10554
Mogk, R., Baumgärtner, L., Salvaneschi, G., Freisleben, B., Mezini, M.: Fault-tolerant distributed reactive programming. In: 32nd European Conference on Object-Oriented Programming, ECOOP 2018, 16–21 July 2018, Amsterdam, The Netherlands, pp. 1:1–1:26 (2018)
Mozilla: Service Worker. https://developer.mozilla.org/fr/docs/Web/API/Service_Worker_API
Redis: Redis. https://redis.io/
Sang, B., Roman, P.L., Eugster, P., Lu, H., Ravi, S., Petri, G.: Plasma: programmable elasticity for stateful cloud computing applications. In: Proceedings of the Fifteenth European Conference on Computer Systems, pp. 1–15 (2020)
Shapiro, M.: Structure and encapsulation in distributed systems: the proxy principle. In: International Conference on Distributed Computing Systems (ICDCS), Camchannel, MA, USA, pp. 198–204. IEEE (1986). https://hal.inria.fr/inria-00444651
Vinoski, S.: CORBA: integrating diverse applications within distributed heterogeneous environments. IEEE Commun. Mag. 35(2), 46–55 (1997). https://doi.org/10.1109/35.565655
Weisenburger, P., Köhler, M., Salvaneschi, G.: Distributed system development with ScalaLoci. Proc. ACM Program. Lang. 2(OOPSLA), 129 (2018)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Prosperi, L., Bouajjani, A., Shapiro, M. (2022). Varda: A Framework for Compositional Distributed Programming. In: Koulali, MA., Mezini, M. (eds) Networked Systems. NETYS 2022. Lecture Notes in Computer Science, vol 13464. Springer, Cham. https://doi.org/10.1007/978-3-031-17436-0_2
Download citation
DOI: https://doi.org/10.1007/978-3-031-17436-0_2
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-17435-3
Online ISBN: 978-3-031-17436-0
eBook Packages: Computer ScienceComputer Science (R0)