The document describes building a real-time chat system using serverless architecture on AWS. It shows how to use AWS Lambda functions, API Gateway, DynamoDB, Cognito, IoT, S3 and CloudFront to create an interactive chat application without having to manage servers. The chat system allows users to publish and subscribe to messages in real-time using IoT topics and rules to route messages. Screenshots demonstrate the flow of data and functions within the serverless application.
8. Snowball Edge Use Cases
“Snowball Edge enables us to extend the
innovative capabilities of HealthSuite, our cloud-
enabled connected health ecosystem of devices,
applications and digital tools supported by AWS,
even when there is no network support.”
Embedded Applications
—Dale Wiggins,
Business Leader, HealthSuite digital platform,
Philips
9. Snowball Edge Use Cases
“With AWS Snowball Edge, we can now collect
100 TB of data with no intermediate steps, and
we can also analyze the images immediately
using the onboard compute capabilities.”
Remote Locations for data collection and analysis
— Bob Cowen,
Director of Hatfield Marine Research Center,
Oregon State University
11. Lambda@Edge Use Cases
Demo build of a
CloudFront+S3 distribution,
using Lambda@Edge
to secure its HTTP headers
12. Lambda@Edge Use Cases
These processes include applying
transactional labels to purchases so
Blockbuster can track customer activity, and
providing personalized recommendations
based on previous purchases.
Blockbuster runs serverless compute
processes across AWS Regions and
Amazon CloudFront edge locations (using
Lambda@Edge) without provisioning or
managing servers.
27. Web
Browser
AWS IoT
Topics
AWS IoT
Rules
chat/in/${iot:ClientId}
chat/out
chat/pub/${room}
chat/stream
$aws/events/#
Each client has a secure “input” topic
to receive content from the back end
All client can publish on an “output” topic,
they are recognizable by their clientId
All client can subscribe and receive
from “public” topics
Another “output” topic
optimized for high volumes
AWS IoT
Lifecycle Events
Lambda function
to process important messages,
such as a new client connection
Republish rule to send messages
to the corresponding room public topic
Lambda function to process
high volume dreaming data
Kinesis Stream to manage
high volume streaming data
Lambda function
to process AWS IoT Lifecycle Events
Store all messages in a database,
to be sent to the client on connection
28. Web
Browser
AWS IoT
Topics
AWS IoT
Rules
chat/in/${iot:ClientId}
chat/out
chat/pub/${room}
chat/stream
$aws/events/#
Each client has a secure “input” topic
to receive content from the back end
All client can publish on an “output” topic,
they are recognizable by their clientId
All client can subscribe and receive
from “public” topics
Another “output” topic
optimized for high volumes
AWS IoT
Lifecycle Events
Lambda function
to process important messages,
such as a new client connection
Republish rule to send messages
to the corresponding room public topic
Lambda function to process
high volume dreaming data
Kinesis Stream to manage
high volume streaming data
Lambda function
to process AWS IoT Lifecycle Events
Store all messages in a database,
to be sent to the client on connection
You can use this topic
to inject JavaScript code
in the browser
41. Functional Programming
Transforming Data
Using Expressions (Functions)
Without Side Effects
Immutable Data
Pure Functions
Higher-Order Functions
From “Research Topics in Functional Programming” ed. D. Turner, Addison-Wesley, 1990, pp 17–42. 1
Why
Functional Programming
Matters
John Hughes
The University, Glasgow
Abstract
As software becomes more and more complex, it is more and more
important to structure it well. Well-structured software is easy to write
and to debug, and provides a collection of modules that can be reused
to reduce future programming costs. In this paper we show that two fea-
tures of functional languages in particular, higher-order functions and lazy
evaluation, can contribute significantly to modularity. As examples, we
manipulate lists and trees, program several numerical algorithms, and im-
plement the alpha-beta heuristic (an algorithm from Artificial Intelligence
used in game-playing programs). We conclude that since modularity is the
key to successful programming, functional programming o↵ers important
advantages for software development.
1 Introduction
This paper is an attempt to demonstrate to the larger community of (non-
functional) programmers the significance of functional programming, and also
to help functional programmers exploit its advantages to the full by making it
clear what those advantages are.
Functional programming is so called because its fundamental operation is
the application of functions to arguments. A main program itself is written as
a function that receives the program’s input as its argument and delivers the
program’s output as its result. Typically the main function is defined in terms of
other functions, which in turn are defined in terms of still more functions, until
at the bottom level the functions are language primitives. All of these functions
are much like ordinary mathematical functions, and in this paper they will be
1An earlier version of this paper appeared in the The Computer Journal, 32(2):98–107,
April 1989. Copyright belongs to The British Computer Society, who grant permission to
copy for educational purposes only without fee provided the copies are not made for direct
commercial advantage and this BCS copyright notice appears.
https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
50. Lambda Functions + Step Functions
Lambda
Function
Input
State
Machine
Output
translate
create
execute
Tasks
State passing (Immutable Data)
Tasks are performed only if required (Lazy Evaluation)
A Lambda Function dynamically creating a State Machine executing the logic