DevOps Patterns to Scale Web Applications using Cloud Services

1,697 views

Published on

Scaling a web applications can be easy for simple CRUD software running when you use Platform as a Service Clouds (PaaS). But if you need to deploy a complex software, with many components and a lot users, you will need have a mix of cloud services in PaaS, SaaS and IaaS layers. You will also need knowledge in architecture patterns to make all these software components communicate accordingly. In this presentation, we share our experience of using cloud services to scale a web application. We show usage examples of load balancing, session sharing, e-mail delivery, asynchronous processing, logs processing, monitoring, continuous deployment, realtime user monitoring (RUM). These are a mixture of development and system operations (DevOps) that improved our application availability, scalability and performance.

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,697
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

DevOps Patterns to Scale Web Applications using Cloud Services

  1. 1. DevOps Patterns to Scale Web Applications using Cloud Services Daniel Cukier Department of Computer Science University of São Paulo ! danicuki@ime.usp.br
  2. 2. 16GB dedicated server image processing ! 96GB dedicated MySQL server core core data login backoffice cart photos search emails user stats assets sessions
  3. 3. Elo7 (3) Login (2) java server java server core staging env (3) login Rest API (2) rails server REST api http server http server cart queue (1) search (3) memcache (2) solr (lucene) sessions search API DynamoDB search user stats worker (n) image processing redis server http server assyncjobs MySQL (2) core data vitrine data S3 photos assets Vitrine (2) rails server vitrine http server atelier (1) backoffice
  4. 4. Store Big Files in Cloud Storages Context: You have a web application that needs to deliver large files to users. These files can be documents, 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
  5. 5. Queue based solution to process async jobs Context: Needs fast response to end user, have some time consuming tasks ! Solution: Use a queue based solution to process your P background jobs. c1 c2 ! Why: Async threads can harm your application, auto-failover, monitoring, auto-scale c3
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. Prefer PaaS over IaaS When use PaaS • 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 When use IaaS • 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
  11. 11. Thanks! Daniel Cukier Department of Computer Science University of São Paulo ! danicuki@ime.usp.br

×