background preloader

Scalability

Facebook Twitter

Sharding Pinterest: How we scaled our MySQL fleet. Please stop calling databases CP or AP — Martin Kleppmann’s blog. Published by Martin Kleppmann on 11 May 2015.

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

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. Apps should never assume that anything cached in memory or on disk will be available on a future request or job. 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. In the first part of this series, we explained asynchronous processing, when you might need to use it and why leveraging a database for that purpose is not necessarily the best option.

Asynchronous Processing in Web Applications, Part 2: Developers Need to Understand Message Queues

In this post, we will explore a smarter approach to asynchronous processing using “message queues”. 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. This is a guest post by Andy Gelfond, VP of Engineering for TripAdvisor.

TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data

Andy has been with TripAdvisor for six and a half years, wrote a lot of code in the earlier days, and has been building and running a first class engineering and operations team that is responsible for the worlds largest travel site. There's an update for this article at An Epic TripAdvisor Update: Why Not Run On The Cloud? The Grand Experiment. 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. Our systems were designed for maximum data integrity, so most non ACID NoSQL solutions are out of the question. 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! It took a few minutes before the downtime text landed on my iPhone.