Slide 0
FUNDAMENTALS ON BUILDING
A RELIABLE CLOUD-BASED
SAAS ARCHITECTURE
@tompeham I @usersnap
Slide 1
THIS IS ME!
@TOMPEHAM I @USERSNAP
Slide 2
THIS IS ME!
Say hi!
@TOMPEHAM I @USERSNAP
Slide 3
BEFORE WE GET STARTED…
You can find all resources here:
http://goo.gl/Ki3ZEl
Slide 4
HERE ARE THE
FUNDAMENTALS ON BUILDING A
A RELIABLE CLOUD-BASED
SAAS ARCHITECTURE
Slide 5
Everything in the cloud
When building a (global) SaaS application chances
are high that you’re building it in the cloud. The cloud
has a lot of advantages – think of scalability – in
contrast to local server environments. Here’s
how to secure a cloud-based SaaS architecture.
Slide 6
How to get started?
WHICH
LANGUAGE?
WHICH
DATABASE?
WHICH
SOFTWARE?
Slide 7
Which programming language?
Building a product for the cloud, means building a product
with a modern programming languages.
There are various (modern) programming languages out
there making it a hard time to choose the right one.
Take a look at the most prominent ones, play around with
those and try to experiment as much as possible.
Slide 8
The perfect database
We recommend
making use of a
document-oriented
database.
WHY?
Document databases get their type information from the data itself.
Therefore every instance of data can be different from any other. This
makes it more flexible in dealing with change and optional values,
maps more easily into program objects, and often reduces database
size.
Slide 9
MongoDB – the database for your web app?
We – at Usersnap – ended using MongoDB as our
prior database. Why we choose MongoDB?
Because MongoDB is a document oriented
database that provides high performance, high
availability, and easy scalability.
Why MongoDB?
Scaling your tech with MongoDB is pretty easy (ok, at least easier compared to
other databases). With automatic sharding you can distribute data across
various machines.
Slide 10
MongoDB – the database for your web app?
Sharding is basically a
method for storing your
data across multiple
machines. And MongoDB
uses sharding to support
deployment with large
data sets.
Slide 11
Queuing system
Let’s talk about a queuing system
now.
A message queuing system is an
asynchronous communication
protocol, enabling sender and
receiver of a message not
interacting at the same time.
Message queuing technology
enables web apps to run at
different times and to
communicate with various 3rd
party integrations / APIs / and
other other services
asynchronously.
Slide 12
RambitMQ (the system we use)
Again, I’d like to give you some insights on the queuing
system we use, RabbitMQ. We run our web app in on the
AWS EC2 where RabbitMQ can be run installed and run
super smoothly.
How we installed RabbitMQ
Python with the open source celery task management library is the
perfect fit to get the most out of RabbitMQ. We’re using a single
RabbitMQ server, with multiple endpoints that feed the queue with
tasks as well as endpoints that process those tasks (e.g. produce our
nice-looking screenshots).
Slide 13
AWS & EC2
Building a scalable web app you’ll
probably end up at using Amazon
Web Services sooner or later. Our
guess is sooner ;)
AWS enables you to host and run
your web apps as well as
performing massive highperforming batch jobs. With
Elastic Compute Cloud (EC2) AWS
provides scalable virtual servers
for every business.
Slide 14
Why EC2?
The Amazon EC2 is a must-have for
and the heart of our system which
provides resizable computing
capacity. We basically have rented
virtual servers on which our web app
runs.
Currently we have three EC2 servers
which are located in the US, Ireland
and Singapore. We’ll keep adding
further locations (especially in the US
and Europe) since the demand of our
product keeps increasing. With the
EC2 installed it’s super easy to keep
adding new servers and resources.
Slide 15
Web Storage S3
Getting more and more users on
board for your product will make you
easily wonder about your web
storage. With the Amazon S3 storage
service we have a great, and highlyscalable object storage installed.
Amazon Simple Storage Service (S3) is
easy to use, store and retrieve any
amount of data. Beside storing your
data of your web app with S3, it might
work great for backups, archives or
big data analytics.
Slide 16
CDN & the big cloudy picture
A content delivery network is basically a system of distributed servers which enables you to serve
content to your app users with high performance and high availability.
Let’s assume you have 3 EC2s installed. One in the US, one in Europe and one in Singapore. If someone
from New York visits your app, the CDN enables you to serve content to the user through the EC2
located in the US.
How we at Usersnap have
set up our web app and the
role of EC2, S3 and CDN.
Slide 17
Enjoyed this presentation?
Slide 18
Enjoyed this presentation?
Yes you did? Awesome.
Slide 19
Enjoyed this presentation?
Yes you did? Awesome.
Give it a tweet!
Slide 20
Enjoyed this presentation?
Yes you did? Awesome.
Give it a tweet!
PLEASE!!!!!!
Slide 21
ONE LAST THING…
JUST PING US ON TWITTER.
Slide 22