background preloader

Scalability

Facebook Twitter

Sharding Pinterest: How we scaled our MySQL fleet. Please stop calling databases CP or AP — Martin Kleppmann’s blog. In his excellent blog post Notes on Distributed Systems for Young Bloods, Jeff Hodges recommends that you use the CAP theorem to critique systems.

Please stop calling databases CP or AP — Martin Kleppmann’s blog

A lot of people have taken that advice to heart, describing their systems as “CP” (consistent but not available under network partitions), “AP” (available but not consistent under network partitions), or sometimes “CA” (meaning “I still haven’t read Coda’s post from almost 5 years ago”). I agree with all of Jeff’s other points, but with regard to the CAP theorem, I must disagree. The CAP theorem is too simplistic and too widely misunderstood to be of much use for characterizing systems.

Therefore I ask that we retire all references to the CAP theorem, stop talking about the CAP theorem, and put the poor thing to rest. Instead, we should use more precise terminology to reason about our trade-offs. (Yes, I realize the irony of writing a blog post about the very topic that I am asking people to stop writing about. CAP uses very narrow definitions. The Art of Scalability. Runtime Principles. Last updated 29 September 2015 Heroku provides the runtime and manages the execution and scale of your application.

Runtime Principles

However, in order for an application to be properly managed, it must adhere to a few runtime principles. These runtime principles are one of several categories of best-practices when developing for Heroku. Please review all the principles of architecting applications to gain a complete understanding of properly developing apps on Heroku. Process model Applications should not be executed as monolithic entities. Processes on Heroku take strong cues from the unix process model for running service daemons. Heroku dynos are virtualized containers responsible for running the processes defined by your application. Statelessness Processes are stateless and share-nothing. Performance and Scaling in Enterprise Systems.

This is a guest post from Vlad Mihalcea the author of the High-Performance Java Persistence book, on the notion of performance and scalability in enterprise systems.

Performance and Scaling in Enterprise Systems

An enterprise application needs to store and retrieve as much data and as fast as possible. In application performance management, the two most important metrics are response time and throughput. The lower the response time, the more responsive an application becomes. Response time is, therefore, the measure of performance.

Scaling is about maintaining low response times while increasing system load, so throughput is the measure of scalability. Response time and throughput The transaction response time is measured as the time it takes to complete a transaction, and so it encompasses the following time segments: Throughput is defined as the rate of completing incoming load. What are some cool programming tricks or tasks that make a clever use of random numbers? - Quora. The Basics of Scaling Java EE Applications - DZone Java. Asynchronous Processing in Web Applications, Part 2: Developers Need to Understand Message Queues.

Instance Types. Use Cases Small and mid-size databases, data processing tasks that require additional memory, caching fleets, and for running backend servers for SAP, Microsoft SharePoint, cluster computing, and other enterprise applications.

Instance Types

*M3 instances may also launch as an Intel Xeon E5-2670 (Sandy Bridge) Processor running at 2.6 GHz. High performance front-end fleets, web-servers, batch processing, distributed analytics, high performance science and engineering applications, ad serving, MMO gaming, video-encoding, and distributed analytics. TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data.

AMQP. The project consists of two parts; spring-amqp is the base abstraction, and spring-rabbit is the RabbitMQ implementation.

AMQP

Features Listener container for asynchronous processing of inbound messagesRabbitTemplate for sending and receiving messagesRabbitAdmin for automatically declaring queues, exchanges and bindings Quick Start just Java... Or, the Spring way... public static void main(final String... args) throws Exception { AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml"); RabbitTemplate template = ctx.getBean(RabbitTemplate.class); template.convertAndSend("Hello, world!

") public class Foo { public void listen(String foo) { System.out.println(foo); }} Preparing MySQL for millions of users – Hacking, Shmacking... (This post is a part of a series.

Preparing MySQL for millions of users – Hacking, Shmacking...

See original) As the world’s largest marketplace for small services, Fiverr deals with gigantic amounts of rich user-generated content at any given moment. We run our own billing, messaging, search and order management systems. Can Ruby on Rails Scale? – Hacking, Shmacking... This is the first in a series of posts covering the challenges involved in scaling web apps.

Can Ruby on Rails Scale? – Hacking, Shmacking...

I’ll try to share the lessons we’ve learned while scaling Fiverr from zero to one of the top 200 websites in the world! People often ask me what led us to choose Ruby on Rails back in the day. I hope this will shed some light on that choice which is, in many ways, more trivial today then it was when we started, around mid 2009. Launch Day! We planned to launch Fiverr quietly, staying under the radar while getting our act together. March 2010 was a great first month for us, traffic was picking up nicely and users were pouring in. Turned out we were covered on Yahoo!