High Performance Political Revolutions

Video in TIB AV-Portal: High Performance Political Revolutions

Formal Metadata

High Performance Political Revolutions
Title of Series
Part Number
Number of Parts
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
Bernie Sanders popularized crowdfunding in politics by raising 220 million in small donations. An example of the challenges with handling a high volume of donations is the 2016 New Hampshire primary night, when Sanders asked a national TV audience to donate 27. Traffic peaked at 300K requests/min and 42 credit card transactions/sec. ActBlue is the company behind the service used not only by Sanders, but also 16,600 other political organizations and charities for the past 12 years. This presentation is about the lessons we learned building a high performance fundraising platform in Rails.
Web service Presentation of a group 1 (number) Right angle Surface of revolution
Domain name Point (geometry) Statistics Information State of matter Execution unit Memory card Special unitary group Mereology Rule of inference Power (physics) Web service Coefficient of determination Process (computing) Computer animation Bit rate Self-organization Website Software testing Traffic reporting Computing platform Address space
Dataflow Personal digital assistant Expression Plastikkarte Speech synthesis Right angle Number
Point (geometry) Web page Trail Musical ensemble Presentation of a group Token ring State of matter Multiplication sign 1 (number) Heat transfer Number Web service Response time (technology) Authorization Form (programming) Dependent and independent variables Memory card Graph (mathematics) Plastikkarte Library catalog Process (computing) Computer animation Software Personal digital assistant Order (biology) Self-organization Website Escape character
Graph (mathematics) Weight Multiplication sign Graph (mathematics) Moment (mathematics) 1 (number) Cartesian coordinate system Mereology Number Web service Cross-correlation Process (computing) Computer animation Personal digital assistant Matrix (mathematics) Species Metric system
Thread (computing) State of matter Multiplication sign Decision theory Combinational logic Mereology Replication (computing) IP address Neuroinformatik Front and back ends Web 2.0 Web service Mechanism design Semiconductor memory Computer configuration Single-precision floating-point format File system Cuboid Circle Social class Physical system Algorithm Block (periodic table) Structural load Constructor (object-oriented programming) Data storage device Stress (mechanics) Shared memory Measurement Connected space Befehlsprozessor MiniDisc Lastteilung Right angle Quicksort Metric system Content delivery network Point (geometry) Server (computing) Computer file Virtual machine Web browser Login 2 (number) Number Revision control Robotics Computer hardware Authorization Address space Metropolitan area network Multiplication Information Chemical equation Graph (mathematics) Database Limit (category theory) Grass (card game) Computer animation Software Personal digital assistant
Point (geometry) Web page Slide rule Game controller Building Server (computing) View (database) Multiplication sign Web browser Mereology Public key certificate 2 (number) Number Formal language Web 2.0 Inference Web service Latent heat Cuboid Dispersion (chemistry) Computer architecture Form (programming) Scripting language Dependent and independent variables Email Dot product Mapping Cellular automaton Denial-of-service attack Multilateration Public-key cryptography Sequence Uniform resource locator Arithmetic mean Computer animation Personal digital assistant Triangle Configuration space Right angle Pattern language
Web page Point (geometry) Laptop Server (computing) Musical ensemble Token ring Multiplication sign Archaeological field survey Set (mathematics) Regular graph Mereology 2 (number) Number Web 2.0 Web service Array data structure Authorization Ideal (ethics) Queue (abstract data type) Cuboid Task (computing) Social class Form (programming) Physical system MIDI Rückkehrpunkt Email Information Block (periodic table) Database Line (geometry) Flow separation Antivirus software Process (computing) Computer animation Personal digital assistant Linearization Website Right angle Figurate number Sinc function Row (database)
Web page Point (geometry) Trail Server (computing) Decision theory Multiplication sign Mereology Login Scalability Neuroinformatik Wave packet Semiconductor memory Authorization Computer architecture Physical system Task (computing) Form (programming) User interface Simulation Stapeldatei Scaling (geometry) Software developer Closed set Structural load Electronic mailing list Sampling (statistics) Computer simulation Coordinate system System call Word Process (computing) Computer animation Software Personal digital assistant Telecommunication Self-organization Right angle Row (database)
this is the end human rights and thank you for coming my name is and I work for of looting of services I would like to start with a question how many of you have used Akoglu to make a donation while quite a few how many of you had not so many but for the ones with thank you this the I stole date title for the presentation from Bernie Sanders he was saying that we need a political revolution
that Sanders made small denominations popular but he's only 1 all the more than 17 thousand organizations that have been using the service for the last 13 years and it's not only political we we also provide the service for nonprofits In fact and Luis and nonprofit and and then 1st quarter of this year alone we are we are we have the 3 thousand organisations using the platform and our rates obligations have it is 12 years old so how does it work let's say that Jason the back who works here he wants to run for city council and I'm sure he would be able to be counsel but he needs money to promote his campaign I soc how he would like to the donations of course he cannot so process credit cards by himself so what he would do is he will to argue with that of page and from that point we process the credit cards using the pH once a week you will get a check and we also will take care of all the legal part which is very complicated and we also the combined there multiple reports that have to be sent when you're doing political fund-raising or from nonprofits the the I so we also provide no additional tools for the campaigns statistics A B tests we have a someone who coordinates can also say the current information on the web site and then explain the domain tool that the same organization a different 1 they don't have to enter anything it will be wanting a single-click donation we have 3 . 8 million people are we express users so far we have race 1 . 6 billion dollars in 31 million contributions in these 13 years and we like to see ourselves as empowering small dog donors but how many of you don't know what Citizens United States not all of you know what get to not just someone someone doesn't I didn't raise your hand is Citizens United ruling by the Supreme Court and it allows and of an amount of money to promote a political candidate so if you few people with lots of money will have a lot of power in the political process in data political site was little nonprofits but in the way to go sighted how we stop we like to we would like to have lots of small lots of small donors which means a lot of people with little money having the same power you this is
how the contribution looks this is for John also that they did did they present here has never visited the website before it would be a multi-step process it's getting there amount 1st then we will be the next step will be the name address credit cards etc. the sun is a profit by the
way I In this case there it is it express user donor it stays high value would recognize that it's it's me and if I take any of those buttons they could the donation will process right away I don't have to enter a card number that's what we call a single click during the
day you several last year burning 1 date primaries in New Hampshire that was the 2nd stage with primary elections in the 1 big it was after I want and he gave it his city his bed victory speech that and I want to show a little bit prompt from there hold a fundraiser right you write new new across America and and request is we use go to burn is to design flow in this review few
right away without the burn it is so that the first one is requests per minute it's about 330 thousand per minute and the 2nd 1 is contributions air credit card payments 27 thousand the minutes about 40 per 2nd and that's a lot because a critic opinion you see it's expensive to to do and that's the reason why should these graphs is to stress the fact of improving performance is a continuous process it it's not something that happens from 1 day to the next it we were able to handle this despite pretty well some donors didn't see that thank you page they the only so this dinner in the way after donating they never got to the next page but we never stopped receiving contradictions and you can see that there is no gap so the service will never that and that's because we all these 13 years every time we have high traffic for any reason we have been analyzing why do we have that if they evolved bottleneck can we improve it so this this presentation about all the experience we have gathered during all these years the 1st thing we have to do is define what we're going to optimize and that will depend on the business in every case will be different for a Gomes website for examples very likely they will be of the response time on browsing the catalog no escape network a spear simple to contusion form and we have to look at most 2 things 1 is how we loaded in the other ones how we process loading the 2 the contusion forehand snoSeeker secret is what do you think of loaning form very simple but processing is a little different In this center have our servers in around that I have all that those those are web service calls that I have to do in order to execute the payment but we have evolved for the credit card numbers and outside that albeit the whole the the only place where we have the numbers outside of that all tokens so we 1st thing we have to do is we have to get a talk and what the tokenizer got that's number 1 it that a post in response they have it from school for thank you have external service will which will provide that's that that service for me then I have with the bank I actually have be the 1st that when you get all the credit cards are process were this way you 1st make what is called a authorization with a which is a boast being from the bank will respond whether it's approved in that case he will give me an authorization number or it was a decline but there is no money transfer at that point I have to do a 2nd state another post and send the number got that it was approved of course and the band was born with a confirmation also have an e-mail received I want to send and every come every organization wants to know what morsel that organizations want to know right away when they get the contribution so they want to also at beamformer it the thing looks like that the you remember those how many can you in a minute is too many young people here that you you have not you have never seen this only the old people tend to get the OK so we have
the the high-volume track we have because we have so many the nation's we have a skill and challenge we have to be able to process these fast and efficiently and what I'm going to do now is I'm going to presented 1 approach I will show several so for each 1 I will explain how it works how it is implemented that that's maybe some cold and there is there will always be a cost and Willie how to solve it
I the first one matrix on here's the problem not the can you
see the graph for no I thought
double but was going to be the case problem that well we have dozens of this I'm going to show only a few of the most important ones species contributions per minute on the X axis is the time on the y is the number of and something happened there actually that what happened there was a the burning 1 Indiana and there was a spike what did we called burning moments by way he did so that 1 now I have another 1 here which is traffic it will be will it will be correlated by weight of correlating when you're metrics when you have metrics numbers are not enough you need graphs like this and and even graphs you can correlate in between traffic and contributions there is a correlation but I this 1 is the number of contributions that are being processed with we have known so many web services we have to attach there will be certain number that would be always in part of that process some company goes and you see between these 2 it there contributions and they're pending there is no correlation which is great that how it should be if for some reason bending was also going up in the same way contributes on going out it means the service is saturated I cannot process us fast I have received them in these this is wonderful this that's how it should be always and sometimes it wasn't but that's the gold then the last 1
that 1 is latency that is a time interval is how long it takes between the I create a contribution and I receive an authorization from the back that's also an important number in this case is about 2 3 minutes seconds and yeah
it is our allowable metrics single week there is a general steps the Ruby I call the class that the I create a new object at past the host the host name I will have multiple roles so I need to know where this is happening this a construction a gage the gage we'll draw this will generate sustained and will not draw was generated the point which is isn't the year in this case how many pending authorization so and the timing methyl both gation pining our excited this gives me a respect the method I have a time interval in which a as as an mention before decent between when it was created to when it was a true there is ample but you have lots of data you will be able to have those graphs and the way you render the grass is always something called graphite there you will have posed dressed you have most sorts of things you also want to measure what to measure CPU memory disk so there's something called calling the that will have will have to to gather that information easily the I mentioned logs if no they're not really metrics but they very important don't forget them good we will cover the first one but now multiple servers multiple service is it doesn't use that once when 1 holds which is normally the case uh even the fastest computer in the world won't be able to handle all the load you will have to look it's 2nd the 3rd at the the dust shows on the right I have 3 machines running inside each machine I have a little circle those of representing threat so I can have a web server running in each thread have multi-threading which simple but the important part here is have different computers and because of that I have that I need to have these peace in the middle which is the load balancer the load balancer can be a peaceful software or hardware or Indian anything useful about we don't get to things that we need of the the browser will the DNS will result into the IP address of the load balancer the request will get their the load balancer will pick 1 host and you will pass that request how you implement will depend on the hosting company I have here is this is called a poor man's version of a but answers because it's free it is it is doing engine X I can configure engine and you next to load balancing and I see toolbox can you see well yeah the 1st block it defines they IP addresses on the different hosts In the 2nd block the server block in studying the that they will be listening for 80 and all the request should be passed to the backend book there is an algorithm that would define how they are picked but in this case it's whatever sequential random from dropping the that you can define if you so long there are costs involved when you're doing this the first one you have used cool the 1st surprise when you start with the with there's no file system In this why you have low it in the browser you of the file it would be a one-house later there will be a different request on a different computer and that will you you will try to see the file on that computer but it's not there so you need to provide a mechanism to fix that 1 way is to use Amazon Web Services S 3 which is a a memory based on his disk all another option is something called sticky sessions which is the load balancer can pick always missing calls and send all those requests there but that that for the 2nd for the 2nd problem but I will be looking at and talking about the system you can really get the 5 you can do the persistence is I don't share the memory n the but I do have this the decisions I was talking about but raises his very good you have out of the box rinsed sessions that's how you share state it also use credits you want your own a data store these 3rd problem you're going to have if you have because you having more servers running all of them connected to the same database when to start running out of connections that there has a limit on how many you can connect there what we always imports stress you can easily find replication that means there will be copies of the data is that we will be the data on those they database will be a little behind but not too much there read-only but I can still use them and if there is a hosted that DM read write access that 1 doesn't have to connect to the main databases will connect to that 1 the on In the last 1 is it doesn't matter if before the servicer for the whole stock up doesn't matter how many having the robot answer is down I have a problem and in our case that the solution is a combination between or CD and I will explain what is and is but is a combination between the city and in the load balancer provided by the hosting company however we did so we have X when caching Cushing is the most popular 1 every time you hear about performance you will hear it you have to crashing and catching invasive basically making copy keeping the copy somewhere to save time you will have tensions between there is a catch in the browser in the browser and there is a catch in the web server in there in there will be patches in between as well and the if you have you have money it you can hire a catching service In have something up and running very quickly that's why I say highest biophilia for we we use something called fastly which is sick content delivery network there there are
several Akamai is another 1 very popular guy out and I will explain how it works uh in the next slide but these variable is something that works very well in the building part of the form is the part that gets all the benefit of doing the it will 1 time how they been denied been distributed denial-of-service attack and we have very well only because they they the and was there for us we could have handled that with our own servers works I have a browser in Boston and in a big boxes on the right are pops point of presence that belongs to this city and he doesn't belong to a I have pop New England so the browser in Boston will make it you you follow the numbers you will be dead you will follow the sequence will get it get request there because this is the 1st time I request document the pop will make another get 2 of our own server the apple host to get the document we will respond that's number 3 so we're adding to headers there will explain what it is and the pot will then in in time respond to the to the browser with the document but there is another here in the last response not later there is certain provinces a senior 100 miles from Austin so the will also go to the same pop will make a get but because the ball has the copy In 1 request the copy from us so we are not going to see the 2nd it at the pot would respond with a copy they have day and there will be other parts the parts are distributed all over the world and that for example in this case including 1 in the west coast so if someone in a later browsing act new they will go there and they will have their own copy this is a map of where the red dots represent pop thoughts the disease is best Dutch were for fast and this size through % how many hits I have heat it means that I have a copy the same cache-hit and the bigger the bigger star in the US but there are also the red dots in Europe Asia Australia they gage on the left indicates that there is a 97 % the hidden right n what that means is only 3 % of the request will get to my server 97 per cent of all the request that the Syrians receiving all the inference that the given mind that all the request goes to in 1st 97 per cent of them will stay there and he will never touch my my mind web server which is great How do want you control passionate about 2 things you need to control how long the copy will live in the in the cash n how you do the 1st 1st means you force every fresh you you specify how long it will live in the copy but sometimes you want to load right away you went away all they all the time so do you believe would headaches and showing few here best control is the 1st 1 which is the most popular 1 because meat max h 400 attempted tells me that I will put the slides on online they will you don't have to worry about that 400 seconds everyone enter any place it means that in the browser it will leave for 100 seconds or in between or in the city in the world surrogate control it is longer 30 600 seconds and that 1 is the same as should press control but it's only for and there he said specific it's a specific dataset Pacific dispersive edition of 4 How CD and work is called itch architecture and that's that's where these here there is defined very another 1 serving key I give for each document i can we find that there's like it had with great because at some point I might say OK I want to force the refresher on all these pages if all the pages have tired keep 2 I can do it in a single called there's another thing called learners configuration language which is a script this trip has access to all day read their request and their lives called request and also they they the URL I want to show something that the BCL this trip will run in the place where the BOP is getting the request from the browser and it will also ran in about where is getting the response from the holes and this is an example of what can I do when it with the c I can check the URL and in this case it starts with the view of in that case they say here I I would like to use a specific back and forth review and that's the name of the bike and f the dual of beetle biases and I don't want to in this 1 and a triangle where want to move makes the views and the contribution I can also respond right away they can say they to 400 for example we don't pattern the service there's also p ended with the API can burst case 1 or and all of them the the cost is very expensive and if you want fine control on on how how the copies are getting in in 1st it will get complicated the 2nd the 3rd if you're going to sell in our case we always was the cell it's complicated because of all the parts will need to have a copy of the certificate and also the private keys I need to maintain that uh the other thing is you remember from this slide what's ladies 5 . ch
yes it's a highbrow you I can get that check out pages in regular sites are not catch because you have these personalization if you catch and my neighbor Racine eyebrow lower the homework and so I need to handle that the way we
do it In our case we cannot follow that approach we have 2 guys because it's the most important form so we have JavaScript would we cast everything except those little pieces and they are filled with just they would have Berkeley our linear time and of separation concerns also known as it's also a war micro-services summaries in Bolivia I will have different obligations 200 different parts of the system they in their 1st example here is the tokenizer the ball which is an obligation written completely separated it's even in a different hosting company I can have also multiple copies of the database that way in that 1 of the advantages of having the so original concerns before for compliance with the fact that we have the small means that if I don't have access I don't need to comply I don't need to have an anti-virus among on my laptop so that's why I have never seen in critical number because I don't want to have a an anti-virus on laptop the cost of ASR anyone who has advanced micro-services so it's always the fact that it's very difficult to implement in very difficult texts great 1 2 3 4 the With regard for we have no going to govern on different tasks in In our k will we we're going to talk about tasks that are slow so in I don't want a web server to be doing something that's slow because it will hold its for a long time and that survey will want people to handle all the other requests it means I need to and if for example 1 this is flight number 9 and all these things are slow so that's a I'm trying with the bank I should that should be done with a figure works of we will take several seconds so what I do is I say that a job for later if I want to would later I need to say that some were I a Q I so the so it all that in our case it's almost everything will be of different tasks the extra benefits of doing this is fault isolation if the bank is down for example I cannot process authorizations or settlements because he said if a task doesn't matter the customers will still be able to donate then they the they 1 knowledge to prove it or not but they would get the thank you page and they might even get an say thank you for the united and will tell them later if it was approved or not they although at about the choosing crisis reliability if for some reason something failed on the authorization for example I have all the information saved in I can read running in an In our case they differ but system I believe that there because it's it was a big gain for us we decided that a contribution was going to be paid was 1 to be realized of the authorization point although we have the money yet the we haven't done this settlement we want to consider that pain right away if we do that we can do the settlement well we do a differed always but we can do it in matching instead of having 1 settlement proposed we can send 1 post we for hundreds of the we again the how use system looks on the right they have the prophecies doing their work they called their coworkers authorization settlements sending e-mail I have a cue in the animal where I say the jobs on the left I have a web service putting the jobs in the queue the we use sidekick yeah in we have 2 blocks the how you cited will have to lots 1 is you class for the worker in this case we're doing the settlements and you have to define a method called performed In this set of Mendel defined it the way you will get an ideal they model settlement and they they method that will talk to the band is settle exclamation point so that 1st block this who is doing the job In the 2nd mid lived the line that's so in the middle it's how to put it into Q I used that performance sinc method which isn't method we the buy side kick in a given I give the ideal data set another record I put in the Guild award along with process arrays for 4 . 4 . 2 has acted job incorporated in you can optimize the Haas has integrated out of the box so you want to send an e-mail synchronously you say that even later the line at the above very simple but if you're doing different tasks you have some costs accuse systems are unreliable except fighting the so that the that's because my world it was around of yes thinking is up but but it's not that it a job can buy a the computer than by the bank to how
probable or in the communication gets disconnected all those things and you're having an affair task the jabberjaw Jovian run what are you going to do it will do retries automatic but maybe you're right all the time all the time values of your support for training never succeeded what you do if the settlement it's a 100 dollar settlement region never settled it with tools that my good you interested um what as coordination you cannot do authorizations after you doing settlements that will fail it is difficult to revive things it's kind of crazy because things happen any time and because we have multiple calls if they happen anywhere you memory told you about the logs this is where they are important to you that's the only way to know what happened great we're going great that's the last where we have covered everything but the last 1 a scalable architecture the hi this is the most important 1 and I put it at the end because I am a developer and other developers we always overlooked SCT architecture but it should be like the days when I'm writing software I have to be thinking it has to be fast I'm sure all you write fast fast software but that's not enough you have to think how I am going to skilled in the future and then you don't you don't think this way you might make a mistake and it's going to be difficult to fix the you have a whole system written that way of going to be the 2 examples would say that you feel they the 1st contribution form I have these amounts for might say I would like to have a process that on the fly would calculate what are the best amounts to show depending on the organization and depending on the use I Suykens alkylate sabi development of any I'm going to you measure learning of great In right away so you know what you would have a central system to do this would be great if things will be easy all right we do it that way but that doesn't scale at some point I will want to I will have so much load on the system it will want to have to all these can't because in there is a central once owing to not have to there another example there at the 1st does this being batches for the settlements we decided also decision architecture of no architecture of decision we are going to consider the payment of their contribution processed and the authorization at the end of the authorization and that is huge because I don't need to know the other part I can say right away after that date step I can say hey well and that's the list scalable architecture at the top and that's all have if far you are interested in what we do that and talk to to us we have stickers also from where they're that those are my colleagues where 1 so but we have we have time we have the yeah 7 7 minutes 4 6 minutes for questions and 1 half the question is when you have multiple servers how do you handle the logs you would have many computers united them we use paper trail In words very well and we paper trail you you define you have to do all of that of that this the assistance generating the log will connect with their system into a web interface you see everything in a single page again filter if you want of course but that's the way to go OK our we have we we have we could do that we we don't do it on purpose we don't have a system to simulate loan opportunity question was How do we simulate Nolde or how do we prepare for the future record like like this 1 and we don't we don't do it with a little purpose because we we have something called recurring contributions every day at 4 in the morning we run that you can define I what I make this contribution in they can I want to make it every month or I want to make it every week so have lots of them and at 4 in the morning we ran them all together and that's a lab in itself so it's pretty close to reality and we can we can analyze up there how how the system in handling in fact in some cases the bank cannot handle below because because it's it's all in 1 single time but we can we did with the close and we have to gage it sample who have the thought of it and make it a little spread also we have you know what they're on every the court that they organizations have goals and they all push that at at the time that you midnight after meaning that all the traffic will go down so we also have used that so basically we don't do well our own simulation but we are very careful to study those cases other questions Ch great thank you so much if the course if so the