DevOps Patterns to Scale Web Applications using Cloud Services
-
Upload
daniel-cukier -
Category
Technology
-
view
1.178 -
download
1
description
Transcript of DevOps Patterns to Scale Web Applications using Cloud Services
Daniel Cukier Department of Computer Science
University of São Paulo !
DevOps Patterns to Scale Web Applications
using Cloud Services
!
96GB dedicated MySQL server
user stats
core data
photos
16GB dedicated server
sessions
search
login
backoffice
assets
cart
emails
coreimage processing
worker (n)
memcache (2)
sessions
Elo7 (3)
java server
http server
core
atelier (1)
backoffice
DynamoDB
user stats
S3
assets
photosimage processing
queue (1)
redis server
assyncjobs
Vitrine (2)
rails server
http server
vitrine
MySQL (2)
core data
vitrine data
Login (2)
java server
http server
login
Rest API (2)
rails server
http server
REST api
cart
search (3)
search API
search
solr (lucene)
staging env (3)
Store Big Files in Cloud Storages
Context: You have a web application that needs to deliver large files to users. These files can be doc-uments, photos, videos, or other binary formats. !
Solution: Serve large static data files using a cloud web storage !
Why: avoid BLOB columns, large files consume resources and disk, backup
Queue based solution to process async jobs
P c2
c1
c3
Context: Needs fast response to end user, have some time consuming tasks !
Solution: Use a queue based solution to process your background jobs. !
Why: Async threads can harm your application, auto-failover, monitoring, auto-scale
Load Balancing with memcached user sessions
Context: Complex web application, SLA 100%, user information in session, many deploys daily !
Solution: Use memcached session manager (MSM) software to store user session
Why: hot deploy does not work, availability, no session data loss, Tomcat solution does not scale
Cloud email delivery
Context: Lots of transactional emails. You need a guarantee that these emails are properly delivered !
Solution: Use cloud mail delivery services that provide easy-to-use REST API !
Why: cost, management, easy to program REST, spam, tracking
Cloud logging
Context: Complex web application, many logs, no access to production servers, needs log debugging !Solution: Use a cloud based log service to consolidate your application logs !
Why: manual copy, take care of disk space, indexing files demands work
Realtime User Monitoring (RUM)
Context: 1M users, many deploys per day, different user behaviors, complex infrastructure !
Solution: Use cloud mail delivery services that provide easy-to-use REST API !
Why: 100% test coverage do not guarantee it will not fail, staging different from production
Prefer PaaS over IaaS
When use PaaS When use IaaS
•Low knowledge about infrastructure
•No knowledge about scalability or security
•Do not want to monitor infrastructure
•Your application does not have have any specific technology
•Want to have more control of the infrastructure
•Infrastructure is core to your business
• You have software components that do not conform to PaaS providers standards
Daniel Cukier Department of Computer Science
University of São Paulo !
Thanks!