Skip to main content

Varda: A Framework for Compositional Distributed Programming

  • Conference paper
  • First Online:
  • 302 Accesses

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 13464))

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    Currently our compiler supports only Java bindings.

References

  1. Hagar. https://github.com/ReubenBond/Hagar

  2. Iptables. https://www.netfilter.org/projects/iptables/index.html

  3. Kubernetes. http://kubernetes.io

  4. OpenStack. https://www.openstack.org/

  5. Podman. https://podman.io/

  6. Akka: Akka. https://akka.io/

  7. Amazon: Aws lambda. https://aws.amazon.com/lambda/

  8. Armstrong, J.: Erlang. Commun. ACM 53(9), 68–75 (2010)

    Article  Google Scholar 

  9. 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)

    Article  Google Scholar 

  10. 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)

    Article  Google Scholar 

  11. Buoyant Inc.: Linkerd. https://linkerd.io/

  12. 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

  13. 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)

    Google Scholar 

  14. 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

    Chapter  Google Scholar 

  15. Docker Inc.: Docker Compose. https://docs.docker.com/compose/

  16. Docker Inc.: Docker Engine. https://www.docker.com/

  17. 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/

  18. 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)

    Google Scholar 

  19. Apache Foundation: Thrift. https://thrift.apache.org/

  20. Google: Cloud functions. https://cloud.google.com/functions/

  21. Google: Protocol buffers. https://developers.google.com/protocol-buffers

  22. 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

  23. Hutchinson, N.C., Raj, R.K., Black, A.P., Levy, H.M., Jul, E.: The Emerald programming language (1991)

    Google Scholar 

  24. Istio: https://istio.io/

  25. 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

  26. Lewis, J., Fowler, M.: Microservices. https://martinfowler.com/articles/microservices.html

  27. Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. (TOPLAS) 16(6), 1811–1841 (1994)

    Article  Google Scholar 

  28. 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

  29. 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)

    Google Scholar 

  30. Meiklejohn, C.S., Lakhani, Z., Alvaro, P., Miller, H.: Verifying interfaces between container-based components (2018)

    Google Scholar 

  31. Microsoft: Azure functions. https://functions.azure.com/

  32. 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

  33. 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

  34. 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)

    Google Scholar 

  35. Mozilla: Service Worker. https://developer.mozilla.org/fr/docs/Web/API/Service_Worker_API

  36. Redis: Redis. https://redis.io/

  37. 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)

    Google Scholar 

  38. 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

  39. 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

  40. Weisenburger, P., Köhler, M., Salvaneschi, G.: Distributed system development with ScalaLoci. Proc. ACM Program. Lang. 2(OOPSLA), 129 (2018)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Laurent Prosperi .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics