SlideShare a Scribd company logo
1 of 4
Download to read offline
www.OpenSourceForU.com | OPEN SOURCE FOR YOU | SEPTEMBER 2017 | 51
AdminInsight
I
n the 1990s, Neal Ford (now at ThoughtWorks) was
working in a small company that focused on a technology
called Clipper. By writing an object-oriented framework
based on Clipper, DOS applications were built using dBase.
With the expertise the firm had on Clipper, it ran a thriving
training and consulting business. Then, all of a sudden, this
Clipper-based business disappeared with the rise of Windows.
So Neal Ford and his team went scrambling to learn and adopt
new technologies. “Ignore the march of technology at your
peril,” is the lesson that one can learn from this experience.
Many of us live inside ‘technology bubbles’. It is easy to
get cozy and lose track of what is happening around us. All
of a sudden, when the bubble bursts, we are left scrambling
to find a new job or business. Hence, it is important to stay
relevant. In the 90s, that meant catching up with things like
graphical user interfaces (GUIs), client/server technologies
and later, the World Wide Web. Today, relevance is all about
being agile and leveraging the cloud, machine learning,
artificial intelligence, etc.
With this background, let’s delve into serverless
computing, which is an emerging field. In this article, readers
will learn how to employ the serverless approach in their
applications and discover key serverless technologies; we
will end the discussion by looking at the limitations of the
serverless approach.
Why serverless?
Most of us remember using server machines of one form or
another. We remember logging remotely to server machines
and working with them for hours. We had cute names for the
servers - Bailey, Daisy, Charlie, Ginger, and Teddy - treating
them well and taking care of them fondly. However, there
were many problems in using physical servers like these:
ƒ Companies had to do capacity planning and predict their
future resource requirements.
ƒ Purchasing servers meant high capital expenses (capex)
for companies.
ƒ We had to follow lengthy procurement processes to
purchase new servers.
ƒ We had to patch and maintain the servers … and so on.
The cloud and virtualisation provided a level of flexibility
that we hadn’t known with physical servers. We didn’t have
to follow lengthy procurement processes, or worry about
who ‘owns the server’, or why only a particular team had
‘exclusive access to that powerful server’, etc. The task of
procuring physical machines became obsolete with the arrival
Serverless Architectures:
Demystifying Serverless Computing
Serverless architectures refer to applications that depend a lot on third party
services known as BaaS (Backend as a Service), or on custom code which
runs on FaaS (Function as a Service).
52 | SEPTEMBER 2017 | OPEN SOURCE FOR YOU | www.OpenSourceForU.com
Admin Insight
The solution is to set up some compute capacity to process
data from a database and also execute this logic in a language
of choice. For example, if you are using the AWS platform,
you can use DynamoDB for the back-end, write programming
logic as Lambda functions, and
expose them through the AWS API
Gateway with a load balancer. This
entire set-up does not require you to
provision any infrastructure or have
any knowledge about underlying
servers/VMs in the cloud. You can
use a database of your choice for
the back-end. Then choose any
programming language supported
in AWS Lambda, including Java,
Python, JavaScript, and C#. There is
no cost involved if there aren’t any
users using the MovieBot. If a blockbuster like ‘Baahubali’ is
released, then there could be a huge surge in users accessing
the MovieBot at the same time, and the set-up would
effortlessly scale (you have to pay for the calls, though).
Phew! You essentially engineered a serverless application.
With this, it’s time to define the term ‘serverless’.
Serverless architectures refer to applications that significantly
depend on third-party services (known as Backend-as-a-
Service or BaaS) or on custom code that’s run in ephemeral
containers (Function-as-a-Service or FaaS).
Hmm, that’s a mouthful of words; so let’s dissect
this description.
ƒ Backend-as-a-Service: Typically, databases (often NoSQL
flavours) hold the data and can be accessed over the cloud,
and a service can be used to help access that back-end.
Such a back-end service is referred to as BaaS.
ƒ Function-as-a-Service: Code that processes the requests
(i.e., the ‘programming logic’ written in your favourite
programming language) could be run on containers that are
spun and destroyed as needed. They are known as FaaS.
The word ‘serverless’ is misleading because it literally
means there are no servers. Actually, the word implies, “I don’t
care what a server is.” In other words, serverless enables us
to create applications without thinking about servers, i.e., we
can build and run applications or services without worrying
about provisioning, managing or scaling the underlying
infrastructure. Just put your code in the cloud and run it! Keep
in mind that this applies to Platform-as-a-Service (PaaS) as
well; although you may not deal with direct VMs with PaaS,
you still have to deal with instance sizes and capacity.
Think of serverless as a piece of functionality to run
— not in your machine but executed remotely. Typically,
serverless functions are executed in an ‘event-driven’
fashion — the functions get executed as a response to events
or requests on HTTP. In the case of the MovieBot, the
Lambda functions are invoked to serve user queries as and
when user(s) interact with it.
of virtual machines (VMs) and the cloud. The architecture
we used also changed. For example, instead of scaling up
by adding more CPUs or memory to physical servers, we
started ‘scaling out’ by adding more machines as needed,
but, in the cloud. This model gave
us the flexibility of an opex-based
(operational expenses-based)
revenue model. If any of the VMs
went down, we got new VMs
spawned in minutes. In short, we
started treating servers as ‘cattle’
and not ‘pets’.
However, the cloud and
virtualisation came with their own
problems and still have many
limitations. We are still spending a
lot of time managing them — for
example, bringing VMs up and down, based on need. We have
to architect for availability and fault-tolerance, size workloads,
and manage capacity and utilisation. If we have dedicated VMs
provisioned in the cloud, we still have to pay for the reserved
resources (even if it’s just idle time). Hence, moving from a
capex model to an opex one is not enough. What we need is to
only pay for what we are using (and not more than that) and
‘pay as you go’. Serverless computing promises to address
exactly this problem.
The other key aspect is agility. Businesses today need
to be very agile. Technology complexity and infrastructure
operations cannot be used as an excuse for not delivering
value at scale. Ideally, much of the engineering effort should
be focused on providing functionality that delivers the
desired experience, and not in monitoring and managing the
infrastructure that supports the scale requirements. This is
where serverless shines.
What is serverless?
Consider a chatbot for booking movie tickets - let’s call it
MovieBot. Any user can make queries about movies, book
tickets, or cancel them in a conversational style (e.g., “Is
‘Dunkirk’ playing in Urvashi Theatre in Bengaluru tonight?”
in voice or text).
This solution requires three elements: a chat interface
channel (like Skype or Facebook Messenger), a natural
language processor (NLP) to understand the user’s intentions
(e.g., ‘book a ticket’, ‘ticket availability’, ‘cancellation’, etc),
and then access to a back-end where the transactions and data
pertaining to movies is stored. The chat interface channels
are universal and can be used for different kinds of bots. NLP
can be implemented using technologies like AWS Lex or IBM
Watson. The question is: how is the back-end served? Would
you set up a dedicated server (or a cluster of servers), an API
gateway, deploy load balancers, or put in place identity and
access control mechanisms? That’s costly and painful, right!
That’s where serverless technology can help.
Figure 1: Key serverless platforms
Key
Serverless
Platforms
AWS
Lambda
MS Azure
Functions
Apache
OpenWhisk
Google
Cloud
Functions
www.OpenSourceForU.com | OPEN SOURCE FOR YOU | SEPTEMBER 2017 | 53
AdminInsight
Use cases
With serverless architecture, developers can deploy certain
types of solutions at scale with cost-effectiveness. We have
already discussed developing chatbots - it is a classic use
case for serverless computing. Other key use cases for the
serverless approach are given below.
1) Three-tier Web applications: Conventional single page
applications (SPA), which rely on REpresentative State
Transfer (REST) based services to perform a given
functionality, can be re-written to leverage serverless
functions front-ended by an API gateway. This is a
powerful pattern that helps your application scale
infinitely, without concerns of configuring scale-out or
infrastructure resources..
2) Scalable batch jobs: Batch jobs were traditionally run
as daemons or background processes on dedicated VMs.
More often than not, this approach hit scalability and had
reliability issues - developers would leave their critical
processes with Single Points of Failure (SPoF). With the
serverless approach, batch jobs can now be redesigned
as a chain of mappers and reducers, each running as
independent functions. Such mappers and reducers will
share a common data store, something like a blob storage
or a queue, and can individually scale up to meet the data
processing needs.
3) Stream processing: Related to scalable batch jobs is the
pattern of ingesting and processing large streams of data
for near-real-time processing. Streams from services
like Kafka and Kinesis can be processed by serverless
functions, which can be scaled seamlessly to reduce
latency and increase the throughput of the system. This
pattern can elegantly handle spiky loads as well.
4) Automation/event-driven processing: Perhaps the first
application of serverless computing was automation.
Functions could be written to respond to certain alerts
or events. These could also be periodically scheduled to
augment the capabilities for the cloud service provider
through extensibility.
The kind of applications that are best suited for serverless
architectures include mobile back-ends, data processing
systems (real-time and batch) and Web applications.
In general, serverless architecture is suitable for any
distributed system that reacts to events or process workloads
dynamically, based on demand. For example, serverless
computing is suitable for processing events from IoT (Internet
of Things) devices, processing large data sets (in Big Data)
and intelligent systems that respond to queries (chatbots).
Serverless technologies
There are many proprietary and a few open source serverless
technologies and platforms available for us to choose from.
AWS Lambda is the earliest (announced in late 2014 and
released in 2015) and the most popular serverless technology,
while other players are fast catching up. Microsoft’s Azure
Functions has good support for a wider variety of languages
and integrates with Microsoft’s Azure services. Google’s
Cloud Functions is currently in beta. One of the key
open source players in serverless technologies is Apache
OpenWhisk, backed by IBM and Adobe. It is often tedious
to develop applications directly on these platforms (AWS,
Azure, Google and OpenWhisk). The serverless framework is
a popular solution that aims to ease application development
on these platforms.
Many solutions (especially open source) focus on
abstracting away the details of container technologies like
Docker and Kubernetes. Hyper.sh provides a container
hosting service in which you can use Docker images
directly in serverless style. Kubeless from Bitnami, Fission
from Platform9, and funktion from Fabric8 are serverless
frameworks that provide an abstraction over Kubernetes.
Given that serverless architecture is an emerging approach,
technologies are still evolving and are yet to mature. So you
will see a lot of action in this space in the years to come.
Join us at the India Serverless Summit 2017
These are the best of times, and these are the worst of
times! There are so many awesome new technologies to
catch up on. But, we simply can’t. We have seen a pro-
gression of computing models - from virtualisation, IaaS,
PaaS, containers, and now, serverless - all in a matter of
a few years. You certainly don’t want to be left behind.
So join us at the Serverless Summit, India’s first
confluence on serverless technologies, being held on
October 27, 2017 at Bengaluru. It is the best place to
hear from industry experts, network with technology
enthusiasts, as well as learn about how to adopt server-
less architecture. The keynote speaker is John Willis,
director of ecosystem development at Docker and a
DevOps guru (widely known for the book ‘The DevOps
Handbook’ that he co-authored).
Open Source For You is the media partner and the
Cloud Native Computing Foundation is the community
partner for this summit. For more details, please visit the
website www.inserverless.com.
Challenges in going serverless
Despite the fact that a few large businesses are already
powered entirely by serverless technologies, we should keep
in mind that serverless is an emerging approach. There are
many challenges we need to deal with when developing
serverless solutions. Let us discuss them in the context of the
MovieBot example mentioned earlier.
ƒ Debugging
Unlike in typical application development, there is no
concept of a local environment for serverless functions. Even
fundamental debugging operations like stepping-through,
breakpoints, step-over and watch points are not available with
serverless functions. As of now, we need to rely on extensive
logging and instrumentation for debugging.
56 | SEPTEMBER 2017 | OPEN SOURCE FOR YOU | www.OpenSourceForU.com
Admin Insight
By: Ganesh Samarthyam, Manoj Ganapathi and Srushit Repakula
The authors work at CodeOps Technologies, which is a
software technology, consulting and training company based
in Bengaluru. CodeOps is the organiser of the upcoming India
Serverless Summit, scheduled on October 27, 2017. Please
check www.codeops.tech for more details.
[1] ‘Build Your Own Technology Radar’, Neal Ford, http://
nealford.com/memeagora/2013/05/28/build_your_own_
technology_radar.html
[2] ‘Serverless Architectures’, Martin Fowler, https://
martinfowler.com/articles/serverless.html
[3] ‘Why the Fuss About Serverless?’ Simon Wardley, http://blog.
gardeviance.org/2016/11/why-fuss-about-serverless.html
[4] ‘Serverless Architectural Patterns and Best Practices’,
Amazon Web Services, https://www.youtube.com/
watch?v=b7UMoc1iUYw
Serverless technologies
•	 AWS Lambda: https://aws.amazon.com/lambda/
•	 Azure Functions: https://functions.azure.com/
•	 Google Cloud Functions: https://cloud.google.com/
functions/
•	 Apache OpenWhisk: https://github.com/openwhisk
•	 Serverless framework: https://github.com/serverless/
serverless
•	 Fission: https://github.com/fission/fission
•	 Hyper.sh: https://github.com/hyperhq/
•	 Funktion: https://funktion.fabric8.io/
•	 Kubeless: http://kubeless.io/
References
When MovieBot provides an inconsistent response or
does not understand the intent of the user, how do we debug
the code that is running remotely? For situations such as this,
we have to log numerous details: NLP scores, the dialogue
responses, query results of the movie ticket database, etc.
Then we have to manually analyse and do detective work to
find out what could have gone wrong. And, that is painful.
ƒ State management
Although serverless is inherently stateless, real-world
applications invariably have to deal with state. Orchestrating
a set of serverless functions becomes a significant challenge
when there is a common context that has to be passed
between them.
Any chatbot conversation represents a dialogue. It
is important for the program to understand the entire
conversation. For example, for the query, “Is ‘Dunkirk’
playing in Urvashi Theatre in Bengaluru tonight?” if the
answer from MovieBot is “Yes”, then the next query from
the user could be, “Are two tickets available?” If MovieBot
confirms this, the user could say, “Okay, book it.” For this
transaction to work, MovieBot should remember the entire
dialogue, which includes the name of the movie, the theatre’s
location, the city, and the number of tickets to book. This
entire dialogue represents a sequence of stateless function
calls. However, we need to persist this state for the final
transaction to be successful. This maintenance of state
external to functions is a tedious task.
ƒ Vendor lock-in
Although we talk about isolated functions that are
executed independently, we are in practice tied to the SDK
(software development kit) and the services provided by
the serverless technology platform. This could result in
vendor lock-in because it is difficult to migrate to other
equivalent platforms.
Let’s assume that we implement the MovieBot on the AWS
Lambda platform using Python. Though the core logic of the
bot is written as Lambda functions, we need to use other related
services from the AWS platform for the chatbot to work, such
as AWS Lex (for NLP), AWS API gateway, DynamoDB (for
data persistence), etc. Further, the bot code may need to make
use of the AWS SDK to consume the services (such as S3 or
DynamoDB), and that is written using boto3. In other words,
for the bot to be a reality, it needs to consume many more
services from the AWS platform than just the Lambda function
code written in plain Python. This results in vendor lock-in
because it is harder to migrate the bot to other platforms.
ƒ Other challenges
Each serverless function code will typically have third
party library dependencies. When deploying the serverless
function, we need to deploy the third party dependency
packages as well, and that increases the deployment package
size. Because containers are used underneath to execute the
serverless functions, the increased deployment size increases
the latency to start up and execute the serverless functions.
Further, maintaining all the dependent packages, versioning
them, etc, is a practical challenge as well.
Another challenge is the lack of support for widely used
languages from serverless platforms. For instance, as of May
2017, you can write functions in C#, Node.js (4.3 and 6.10),
Python (2.7 and 3.6) and Java 8 on AWS Lambda. How about
other languages like Go, PHP, Ruby, Groovy, Rust or any
others of your choice? Though there are solutions to write
serverless functions in these languages and execute them, it
is harder to do so. Since serverless technologies are maturing
with support for a wider number of languages, this challenge
will gradually disappear with time.
Serverless is all about creating solutions without thinking or
worrying about servers; think of it as just putting your code in
the cloud and running it! Serverless is a game-changer because
it shifts the way you look at how applications are composed,
written, deployed and scaled. If you want significant agility
in creating highly scalable applications while remaining
cost-effective, serverless is what you need. Businesses across
the world are already providing highly compelling solutions
using serverless computing technologies. The applications
serverless has range from chatbots to real-time stream
processing from IoT (Internet of Things) devices. So it is not
a question of if, but rather, when you will adopt the serverless
approach for your business.

More Related Content

More from CodeOps Technologies LLP

CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CodeOps Technologies LLP
 
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSWRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSCodeOps Technologies LLP
 
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaTraining And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaCodeOps Technologies LLP
 
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaDeploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaCodeOps Technologies LLP
 
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...CodeOps Technologies LLP
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareCodeOps Technologies LLP
 
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...CodeOps Technologies LLP
 
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaMonitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaCodeOps Technologies LLP
 
Functional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsFunctional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsCodeOps Technologies LLP
 
Distributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationDistributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationCodeOps Technologies LLP
 
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire  "Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire CodeOps Technologies LLP
 
Improve customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiImprove customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiCodeOps Technologies LLP
 
Text semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive servicesText semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive servicesCodeOps Technologies LLP
 
Build your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webappBuild your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webappCodeOps Technologies LLP
 
Quantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev DayQuantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev DayCodeOps Technologies LLP
 
Understanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day ConferenceUnderstanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day ConferenceCodeOps Technologies LLP
 
Go Serverless with Java and Azure Functions
Go Serverless with Java and Azure FunctionsGo Serverless with Java and Azure Functions
Go Serverless with Java and Azure FunctionsCodeOps Technologies LLP
 

More from CodeOps Technologies LLP (20)

CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
 
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSWRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
 
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaTraining And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
 
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaDeploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
 
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra Khare
 
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
 
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaMonitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
 
Jet brains space intro presentation
Jet brains space intro presentationJet brains space intro presentation
Jet brains space intro presentation
 
Functional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsFunctional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and Streams
 
Distributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationDistributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps Foundation
 
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire  "Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
 
Improve customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiImprove customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational ai
 
Text semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive servicesText semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive services
 
Build your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webappBuild your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webapp
 
Quantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev DayQuantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev Day
 
Understanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day ConferenceUnderstanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day Conference
 
Java & Microservices in Azure
Java & Microservices in AzureJava & Microservices in Azure
Java & Microservices in Azure
 
Go Serverless with Java and Azure Functions
Go Serverless with Java and Azure FunctionsGo Serverless with Java and Azure Functions
Go Serverless with Java and Azure Functions
 
Tracing Java Applications on Azure
Tracing Java Applications on AzureTracing Java Applications on Azure
Tracing Java Applications on Azure
 

Recently uploaded

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedDelhi Call girls
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 

Serverless Architecture: Demystifying Serverless Computing - Sept 17 - OSFY Article

  • 1. www.OpenSourceForU.com | OPEN SOURCE FOR YOU | SEPTEMBER 2017 | 51 AdminInsight I n the 1990s, Neal Ford (now at ThoughtWorks) was working in a small company that focused on a technology called Clipper. By writing an object-oriented framework based on Clipper, DOS applications were built using dBase. With the expertise the firm had on Clipper, it ran a thriving training and consulting business. Then, all of a sudden, this Clipper-based business disappeared with the rise of Windows. So Neal Ford and his team went scrambling to learn and adopt new technologies. “Ignore the march of technology at your peril,” is the lesson that one can learn from this experience. Many of us live inside ‘technology bubbles’. It is easy to get cozy and lose track of what is happening around us. All of a sudden, when the bubble bursts, we are left scrambling to find a new job or business. Hence, it is important to stay relevant. In the 90s, that meant catching up with things like graphical user interfaces (GUIs), client/server technologies and later, the World Wide Web. Today, relevance is all about being agile and leveraging the cloud, machine learning, artificial intelligence, etc. With this background, let’s delve into serverless computing, which is an emerging field. In this article, readers will learn how to employ the serverless approach in their applications and discover key serverless technologies; we will end the discussion by looking at the limitations of the serverless approach. Why serverless? Most of us remember using server machines of one form or another. We remember logging remotely to server machines and working with them for hours. We had cute names for the servers - Bailey, Daisy, Charlie, Ginger, and Teddy - treating them well and taking care of them fondly. However, there were many problems in using physical servers like these: ƒ Companies had to do capacity planning and predict their future resource requirements. ƒ Purchasing servers meant high capital expenses (capex) for companies. ƒ We had to follow lengthy procurement processes to purchase new servers. ƒ We had to patch and maintain the servers … and so on. The cloud and virtualisation provided a level of flexibility that we hadn’t known with physical servers. We didn’t have to follow lengthy procurement processes, or worry about who ‘owns the server’, or why only a particular team had ‘exclusive access to that powerful server’, etc. The task of procuring physical machines became obsolete with the arrival Serverless Architectures: Demystifying Serverless Computing Serverless architectures refer to applications that depend a lot on third party services known as BaaS (Backend as a Service), or on custom code which runs on FaaS (Function as a Service).
  • 2. 52 | SEPTEMBER 2017 | OPEN SOURCE FOR YOU | www.OpenSourceForU.com Admin Insight The solution is to set up some compute capacity to process data from a database and also execute this logic in a language of choice. For example, if you are using the AWS platform, you can use DynamoDB for the back-end, write programming logic as Lambda functions, and expose them through the AWS API Gateway with a load balancer. This entire set-up does not require you to provision any infrastructure or have any knowledge about underlying servers/VMs in the cloud. You can use a database of your choice for the back-end. Then choose any programming language supported in AWS Lambda, including Java, Python, JavaScript, and C#. There is no cost involved if there aren’t any users using the MovieBot. If a blockbuster like ‘Baahubali’ is released, then there could be a huge surge in users accessing the MovieBot at the same time, and the set-up would effortlessly scale (you have to pay for the calls, though). Phew! You essentially engineered a serverless application. With this, it’s time to define the term ‘serverless’. Serverless architectures refer to applications that significantly depend on third-party services (known as Backend-as-a- Service or BaaS) or on custom code that’s run in ephemeral containers (Function-as-a-Service or FaaS). Hmm, that’s a mouthful of words; so let’s dissect this description. ƒ Backend-as-a-Service: Typically, databases (often NoSQL flavours) hold the data and can be accessed over the cloud, and a service can be used to help access that back-end. Such a back-end service is referred to as BaaS. ƒ Function-as-a-Service: Code that processes the requests (i.e., the ‘programming logic’ written in your favourite programming language) could be run on containers that are spun and destroyed as needed. They are known as FaaS. The word ‘serverless’ is misleading because it literally means there are no servers. Actually, the word implies, “I don’t care what a server is.” In other words, serverless enables us to create applications without thinking about servers, i.e., we can build and run applications or services without worrying about provisioning, managing or scaling the underlying infrastructure. Just put your code in the cloud and run it! Keep in mind that this applies to Platform-as-a-Service (PaaS) as well; although you may not deal with direct VMs with PaaS, you still have to deal with instance sizes and capacity. Think of serverless as a piece of functionality to run — not in your machine but executed remotely. Typically, serverless functions are executed in an ‘event-driven’ fashion — the functions get executed as a response to events or requests on HTTP. In the case of the MovieBot, the Lambda functions are invoked to serve user queries as and when user(s) interact with it. of virtual machines (VMs) and the cloud. The architecture we used also changed. For example, instead of scaling up by adding more CPUs or memory to physical servers, we started ‘scaling out’ by adding more machines as needed, but, in the cloud. This model gave us the flexibility of an opex-based (operational expenses-based) revenue model. If any of the VMs went down, we got new VMs spawned in minutes. In short, we started treating servers as ‘cattle’ and not ‘pets’. However, the cloud and virtualisation came with their own problems and still have many limitations. We are still spending a lot of time managing them — for example, bringing VMs up and down, based on need. We have to architect for availability and fault-tolerance, size workloads, and manage capacity and utilisation. If we have dedicated VMs provisioned in the cloud, we still have to pay for the reserved resources (even if it’s just idle time). Hence, moving from a capex model to an opex one is not enough. What we need is to only pay for what we are using (and not more than that) and ‘pay as you go’. Serverless computing promises to address exactly this problem. The other key aspect is agility. Businesses today need to be very agile. Technology complexity and infrastructure operations cannot be used as an excuse for not delivering value at scale. Ideally, much of the engineering effort should be focused on providing functionality that delivers the desired experience, and not in monitoring and managing the infrastructure that supports the scale requirements. This is where serverless shines. What is serverless? Consider a chatbot for booking movie tickets - let’s call it MovieBot. Any user can make queries about movies, book tickets, or cancel them in a conversational style (e.g., “Is ‘Dunkirk’ playing in Urvashi Theatre in Bengaluru tonight?” in voice or text). This solution requires three elements: a chat interface channel (like Skype or Facebook Messenger), a natural language processor (NLP) to understand the user’s intentions (e.g., ‘book a ticket’, ‘ticket availability’, ‘cancellation’, etc), and then access to a back-end where the transactions and data pertaining to movies is stored. The chat interface channels are universal and can be used for different kinds of bots. NLP can be implemented using technologies like AWS Lex or IBM Watson. The question is: how is the back-end served? Would you set up a dedicated server (or a cluster of servers), an API gateway, deploy load balancers, or put in place identity and access control mechanisms? That’s costly and painful, right! That’s where serverless technology can help. Figure 1: Key serverless platforms Key Serverless Platforms AWS Lambda MS Azure Functions Apache OpenWhisk Google Cloud Functions
  • 3. www.OpenSourceForU.com | OPEN SOURCE FOR YOU | SEPTEMBER 2017 | 53 AdminInsight Use cases With serverless architecture, developers can deploy certain types of solutions at scale with cost-effectiveness. We have already discussed developing chatbots - it is a classic use case for serverless computing. Other key use cases for the serverless approach are given below. 1) Three-tier Web applications: Conventional single page applications (SPA), which rely on REpresentative State Transfer (REST) based services to perform a given functionality, can be re-written to leverage serverless functions front-ended by an API gateway. This is a powerful pattern that helps your application scale infinitely, without concerns of configuring scale-out or infrastructure resources.. 2) Scalable batch jobs: Batch jobs were traditionally run as daemons or background processes on dedicated VMs. More often than not, this approach hit scalability and had reliability issues - developers would leave their critical processes with Single Points of Failure (SPoF). With the serverless approach, batch jobs can now be redesigned as a chain of mappers and reducers, each running as independent functions. Such mappers and reducers will share a common data store, something like a blob storage or a queue, and can individually scale up to meet the data processing needs. 3) Stream processing: Related to scalable batch jobs is the pattern of ingesting and processing large streams of data for near-real-time processing. Streams from services like Kafka and Kinesis can be processed by serverless functions, which can be scaled seamlessly to reduce latency and increase the throughput of the system. This pattern can elegantly handle spiky loads as well. 4) Automation/event-driven processing: Perhaps the first application of serverless computing was automation. Functions could be written to respond to certain alerts or events. These could also be periodically scheduled to augment the capabilities for the cloud service provider through extensibility. The kind of applications that are best suited for serverless architectures include mobile back-ends, data processing systems (real-time and batch) and Web applications. In general, serverless architecture is suitable for any distributed system that reacts to events or process workloads dynamically, based on demand. For example, serverless computing is suitable for processing events from IoT (Internet of Things) devices, processing large data sets (in Big Data) and intelligent systems that respond to queries (chatbots). Serverless technologies There are many proprietary and a few open source serverless technologies and platforms available for us to choose from. AWS Lambda is the earliest (announced in late 2014 and released in 2015) and the most popular serverless technology, while other players are fast catching up. Microsoft’s Azure Functions has good support for a wider variety of languages and integrates with Microsoft’s Azure services. Google’s Cloud Functions is currently in beta. One of the key open source players in serverless technologies is Apache OpenWhisk, backed by IBM and Adobe. It is often tedious to develop applications directly on these platforms (AWS, Azure, Google and OpenWhisk). The serverless framework is a popular solution that aims to ease application development on these platforms. Many solutions (especially open source) focus on abstracting away the details of container technologies like Docker and Kubernetes. Hyper.sh provides a container hosting service in which you can use Docker images directly in serverless style. Kubeless from Bitnami, Fission from Platform9, and funktion from Fabric8 are serverless frameworks that provide an abstraction over Kubernetes. Given that serverless architecture is an emerging approach, technologies are still evolving and are yet to mature. So you will see a lot of action in this space in the years to come. Join us at the India Serverless Summit 2017 These are the best of times, and these are the worst of times! There are so many awesome new technologies to catch up on. But, we simply can’t. We have seen a pro- gression of computing models - from virtualisation, IaaS, PaaS, containers, and now, serverless - all in a matter of a few years. You certainly don’t want to be left behind. So join us at the Serverless Summit, India’s first confluence on serverless technologies, being held on October 27, 2017 at Bengaluru. It is the best place to hear from industry experts, network with technology enthusiasts, as well as learn about how to adopt server- less architecture. The keynote speaker is John Willis, director of ecosystem development at Docker and a DevOps guru (widely known for the book ‘The DevOps Handbook’ that he co-authored). Open Source For You is the media partner and the Cloud Native Computing Foundation is the community partner for this summit. For more details, please visit the website www.inserverless.com. Challenges in going serverless Despite the fact that a few large businesses are already powered entirely by serverless technologies, we should keep in mind that serverless is an emerging approach. There are many challenges we need to deal with when developing serverless solutions. Let us discuss them in the context of the MovieBot example mentioned earlier. ƒ Debugging Unlike in typical application development, there is no concept of a local environment for serverless functions. Even fundamental debugging operations like stepping-through, breakpoints, step-over and watch points are not available with serverless functions. As of now, we need to rely on extensive logging and instrumentation for debugging.
  • 4. 56 | SEPTEMBER 2017 | OPEN SOURCE FOR YOU | www.OpenSourceForU.com Admin Insight By: Ganesh Samarthyam, Manoj Ganapathi and Srushit Repakula The authors work at CodeOps Technologies, which is a software technology, consulting and training company based in Bengaluru. CodeOps is the organiser of the upcoming India Serverless Summit, scheduled on October 27, 2017. Please check www.codeops.tech for more details. [1] ‘Build Your Own Technology Radar’, Neal Ford, http:// nealford.com/memeagora/2013/05/28/build_your_own_ technology_radar.html [2] ‘Serverless Architectures’, Martin Fowler, https:// martinfowler.com/articles/serverless.html [3] ‘Why the Fuss About Serverless?’ Simon Wardley, http://blog. gardeviance.org/2016/11/why-fuss-about-serverless.html [4] ‘Serverless Architectural Patterns and Best Practices’, Amazon Web Services, https://www.youtube.com/ watch?v=b7UMoc1iUYw Serverless technologies • AWS Lambda: https://aws.amazon.com/lambda/ • Azure Functions: https://functions.azure.com/ • Google Cloud Functions: https://cloud.google.com/ functions/ • Apache OpenWhisk: https://github.com/openwhisk • Serverless framework: https://github.com/serverless/ serverless • Fission: https://github.com/fission/fission • Hyper.sh: https://github.com/hyperhq/ • Funktion: https://funktion.fabric8.io/ • Kubeless: http://kubeless.io/ References When MovieBot provides an inconsistent response or does not understand the intent of the user, how do we debug the code that is running remotely? For situations such as this, we have to log numerous details: NLP scores, the dialogue responses, query results of the movie ticket database, etc. Then we have to manually analyse and do detective work to find out what could have gone wrong. And, that is painful. ƒ State management Although serverless is inherently stateless, real-world applications invariably have to deal with state. Orchestrating a set of serverless functions becomes a significant challenge when there is a common context that has to be passed between them. Any chatbot conversation represents a dialogue. It is important for the program to understand the entire conversation. For example, for the query, “Is ‘Dunkirk’ playing in Urvashi Theatre in Bengaluru tonight?” if the answer from MovieBot is “Yes”, then the next query from the user could be, “Are two tickets available?” If MovieBot confirms this, the user could say, “Okay, book it.” For this transaction to work, MovieBot should remember the entire dialogue, which includes the name of the movie, the theatre’s location, the city, and the number of tickets to book. This entire dialogue represents a sequence of stateless function calls. However, we need to persist this state for the final transaction to be successful. This maintenance of state external to functions is a tedious task. ƒ Vendor lock-in Although we talk about isolated functions that are executed independently, we are in practice tied to the SDK (software development kit) and the services provided by the serverless technology platform. This could result in vendor lock-in because it is difficult to migrate to other equivalent platforms. Let’s assume that we implement the MovieBot on the AWS Lambda platform using Python. Though the core logic of the bot is written as Lambda functions, we need to use other related services from the AWS platform for the chatbot to work, such as AWS Lex (for NLP), AWS API gateway, DynamoDB (for data persistence), etc. Further, the bot code may need to make use of the AWS SDK to consume the services (such as S3 or DynamoDB), and that is written using boto3. In other words, for the bot to be a reality, it needs to consume many more services from the AWS platform than just the Lambda function code written in plain Python. This results in vendor lock-in because it is harder to migrate the bot to other platforms. ƒ Other challenges Each serverless function code will typically have third party library dependencies. When deploying the serverless function, we need to deploy the third party dependency packages as well, and that increases the deployment package size. Because containers are used underneath to execute the serverless functions, the increased deployment size increases the latency to start up and execute the serverless functions. Further, maintaining all the dependent packages, versioning them, etc, is a practical challenge as well. Another challenge is the lack of support for widely used languages from serverless platforms. For instance, as of May 2017, you can write functions in C#, Node.js (4.3 and 6.10), Python (2.7 and 3.6) and Java 8 on AWS Lambda. How about other languages like Go, PHP, Ruby, Groovy, Rust or any others of your choice? Though there are solutions to write serverless functions in these languages and execute them, it is harder to do so. Since serverless technologies are maturing with support for a wider number of languages, this challenge will gradually disappear with time. Serverless is all about creating solutions without thinking or worrying about servers; think of it as just putting your code in the cloud and running it! Serverless is a game-changer because it shifts the way you look at how applications are composed, written, deployed and scaled. If you want significant agility in creating highly scalable applications while remaining cost-effective, serverless is what you need. Businesses across the world are already providing highly compelling solutions using serverless computing technologies. The applications serverless has range from chatbots to real-time stream processing from IoT (Internet of Things) devices. So it is not a question of if, but rather, when you will adopt the serverless approach for your business.