FUNDAMENTALS ON BUILDING A RELIABLE CLOUD-BASED SAAS ARCHITECTURE @tompeham I @usersnap
THIS IS ME! @TOMPEHAM I @USERSNAP
THIS IS ME! Say hi! @TOMPEHAM I @USERSNAP
BEFORE WE GET STARTED… You can find all resources here: http://goo.gl/Ki3ZEl
HERE ARE THE FUNDAMENTALS ON BUILDING A A RELIABLE CLOUD-BASED SAAS ARCHITECTURE
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.
How to get started? WHICH LANGUAGE? WHICH DATABASE? WHICH SOFTWARE?
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
Enjoyed this presentation?
Enjoyed this presentation? Yes you did? Awesome.
Enjoyed this presentation? Yes you did? Awesome. Give it a tweet!
Enjoyed this presentation? Yes you did? Awesome. Give it a tweet! PLEASE!!!!!!
ONE LAST THING… JUST PING US ON TWITTER.