Guide - Cloud Data, Compute and Messaging with F#

Cloud computing relies on leveraging multiple integrated services. Using multiple services required a unique set
of technologies and capabilities, and F# excels in this domain. With the recent rise of cloud solutions, it is becoming increasingly easy to deploy multiple services “in the cloud”, expanding what is possible both by storing large amounts of data and running heavy computations distributed across clusters of machines.

The combination of built in support for asynchronous workflows, data processing capabilities, computation expressions,
extensible syntax, composability, expressiveness for numeric code and more make F# uniquely suited to develop
scalable cloud solutions efficiently.

This guide is an overview of the packages and tools for scalable compute, messaging, storage, and data processing with F#,
particularly for taking advantage of cloud-computing resources.

This guide includes resources related to cloud programming with F#. To contribute to this guide, log on to GitHub, edit this page and send a pull request.

Note that the resources listed below are provided only for educational purposes related to the F# programming language. The F# Software Foundation does not endorse or recommend any commercial products, processes, or services. Therefore, mention of commercial products, processes, or services should not be construed as an endorsement or recommendation.

FSharp.AWS.DynamoDB - an F# wrapper over the standard Amazon.DynamoDB library which allows you to represent table items using F# records and perform updates, queries and scans using F# quotation expressions

FSharp.CloudAgent and F# Mailbox Processor

FSharp.CloudAgent is a simple-to-use framework that allows the easy creation of distributable pools of workers or agents using F#’s native MailboxProcessor agent framework, using Azure Service Bus to provide a cheap and reliable message bus.

Akka.NET

The Akka.NET framework is an open source toolkit and runtime for building highly concurrent, distributed, and fault-tolerant event-driven applications on .NET and Mono. It is used in production systems by its own contributors.

Orleans

The Orleans framework provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was designed for use in the cloud, and has been used extensively in Microsoft Azure. A simple ‘Hello World’ F# sample also available.

Storm

Storm is platform for realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Capable of running on the same infrastructure as Hadoop clusters, it is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate.

RavenDB

F# Client API - The F# client API is a thin wrapper around the standard RavenDB client API, that provides a small set of combinators and a computation builder that hides the complexity of dealing with Linq expressions from F#. This documentation assumes some familiarity with the basics of RavenDB.