Slide 1

Slide 1 text

Scalability! ( In a Nutshell )! By Jeremy Lindblom (@jeremeamia)!

Slide 2

Slide 2 text

Jeremy Lindblom – @jeremeamia!

Slide 3

Slide 3 text

Buzzwords! The Cloud! Scalability! IaaS! Big Data! HPC! NoSQL! Caching! Data Science! PaaS! Load Balancer! SOA! SaaS! Cluster! Sharding! Queue! APIs! Distributed! Proxy! Containers! DevOps! Microservices! Web Services! Virtualization! CDN!

Slide 4

Slide 4 text

Scalability! The ability of a system to adapt to an increase in demands.! ! Availability! Elasticity! Reliability! !

Slide 5

Slide 5 text

How many of you have web applications that run entirely on a single server?!

Slide 6

Slide 6 text

I <3 LAMP

Slide 7

Slide 7 text

What happens when…! •  Your overall traffic greatly increases?! •  You have traffic spikes?! •  You run out of disk space?! •  Your hard drive crashes?! •  The power goes out?! •  Your server or data center is damaged?! I <3 LAMP ?

Slide 8

Slide 8 text

How to Scale! ?!

Slide 9

Slide 9 text

How to Scale!

Slide 10

Slide 10 text

How to Scale!

Slide 11

Slide 11 text

How to Scale! •  Optimize your current system! •  Vertical hardware scaling! •  Horizontal hardware scaling!

Slide 12

Slide 12 text

Optimization Examples! •  Database index/query optimization! •  Update server software (e.g. PHP 5 -> PHP 7)! •  Use alternate software (e.g., nginx vs apache)! •  Fine tune Linux/Windows configuration! •  Minify/compress static assets! •  Cache results of intense operations!

Slide 13

Slide 13 text

Vertical Scalability! •  Disk space! •  Disk Type (e.g., SSD)! •  Memory! •  CPU! •  IOPS! •  etc.! ( Scale Up )!

Slide 14

Slide 14 text

Vertical Scalability! PROS! •  No changes to application code! •  No changes to operations processes! CONS! •  Typically requires downtime! •  Doesn’t solve availability issues! •  Have to pay for hardware required by peak time!

Slide 15

Slide 15 text

Horizontal Scalability! ( Scale Out )!

Slide 16

Slide 16 text

Horizontal Scalability! PROS! •  Can improve availability! •  Auto-scaling solutions can optimize costs! CONS! •  Requires changes to code and operations! •  Complicated!

Slide 17

Slide 17 text

Horizontal Scaling! Ah ha, there's! your <3 LAMP! setup again!

Slide 18

Slide 18 text

Horizontal Scaling! Let's give that! database its! own machine! to reduce the! load of the server! !

Slide 19

Slide 19 text

Horizontal Scaling! Multiple application servers! with load balancing!

Slide 20

Slide 20 text

Horizontal Scaling! Wait!!!! ! Sessions?! File Uploads?! Logs?! Deployment processes?! ! So. Many. Questions.! ! /me starts crying.!

Slide 21

Slide 21 text

Horizontal Scaling! Wait!!!! ! Sessions?! File Uploads?! Logs?! Deployment processes?! ! So. Many. Questions.! ! /me starts crying.!

Slide 22

Slide 22 text

No Silver Bullets!

Slide 23

Slide 23 text

Tradeoffs! •  Scalability! •  Cost! •  Difficulty! •  Performance! •  Regionalization! •  Deadlines! •  Support! •  Etc.!

Slide 24

Slide 24 text

CAP Theorem! Consistency,! Availability,! Partition tolerance…! ! …Choose 2!

Slide 25

Slide 25 text

Sessions! •  Databases / Cache! (MySQL, Redis, Memcache, etc.)! •  Sticky Sessions (via Load Balancer)! •  Distributed File System (DFS)! •  Encrypted Cookies! •  JWT Tokens!

Slide 26

Slide 26 text

File Uploads / Storage! •  Cloud Storage (e.g., Amazon S3)! •  Distributed File System (DFS)! •  Other Blob Storage!

Slide 27

Slide 27 text

Logging! •  Log Rotation! •  Centralized Logging! •  Tools! – fluentd! – Logstash! – syslog-ng!

Slide 28

Slide 28 text

Deployments! •  CI: Jenkins, TravisCI, CircleCI! •  Puppet / Chef / Salt / Ansible! •  Docker, Kubernetes! •  PaaS-specific offerings! •  Cloud offerings (e.g. CodeDeploy)!

Slide 29

Slide 29 text

Horizontal Scaling! Anyways… we left off here.! What next?!

Slide 30

Slide 30 text

Horizontal! Scaling!

Slide 31

Slide 31 text

So won't this cost me a lot of money to get all of that hardware?!

Slide 32

Slide 32 text

"The Cloud"! Cloud computing! is the use of computing resources delivered as a service on an as! needed basis.!

Slide 33

Slide 33 text

Why Cloud?! 1.  No upfront investment! 2.  Reduce overall IT costs (pay as you go)! 3.  Flexible capacity (scaling up and down)! 4.  Speed and agility! 5.  Focus on business, not hardware! 6.  Global reach (Cloud providers have data centers all over the world)!

Slide 34

Slide 34 text

Note: There are also many other cloud providers. You should check those out too.! !

Slide 35

Slide 35 text

Horizontal! Scaling!

Slide 36

Slide 36 text

Horizontal! Scaling with! AWS!

Slide 37

Slide 37 text

Where to Start?! It's a little intimidating isn't it?!

Slide 38

Slide 38 text

Where to Start? — PaaS! AWS Elastic! Beanstalk! AWS OpsWorks!

Slide 39

Slide 39 text

Later! •  Content Distribution Networks (CDN)! •  NoSQL (Neo4j, Cassandra, etc.)! •  Queues / Notifications / Eventing! •  Microservices! •  Docker + Containerization! •  Data Warehousing + Analytics! •  And much more!

Slide 40

Slide 40 text

Scalability! ( In a Nutshell )! By Jeremy Lindblom (@jeremeamia)!