Upgrade to Pro — share decks privately, control downloads, hide ads and more …

My Mom told me that Git doesn't scale

Vicent Martí
November 08, 2012
1.7k

My Mom told me that Git doesn't scale

Vicent Martí

November 08, 2012
Tweet

Transcript

  1. github Git hosting: No longer a pain in the ass

    for you. Not for us. Because, goddamnit, if I ever find the guy who invented this thing I’m going to hang him from
  2. Let’s host some Git repos!  file.c  src 

    file.h  README.md  COPYING.md  .git  Bare Repository  HEAD  index  objects  refs git-daemon
  3. OK, now about the web... grit  Bare Repo 

    Bare Repo  Bare Repo Ruby - Git interface
  4. posix_spawn Seriously. < 1ms The issue is not in “shelling

    out”, the issue is in the spawned process.
  5. Why don’t we take the Git binary... yeah? and compile

    it as a library oh... go on... and link that into
  6. Why don’t we take the Git binary... yeah? and compile

    it as a library oh... go on... and link that into our server
  7. Well, we didn’t think about freeing memory, but... THIS IS

    THE KIND OF PROBLEM WE COULD SOLVE WITH CGI
  8. Well, we didn’t think about freeing memory, but... THIS IS

    THE KIND OF PROBLEM WE COULD SOLVE WITH CGI IN 1995
  9. die("BUG: non-INDEX attr direction in a bare repo"); die("a bad

    revision is needed"); What do you mean the server died?
  10. die("BUG: non-INDEX attr direction in a bare repo"); die("a bad

    revision is needed"); die("'%s' is not a valid branch name.", name); What do you mean the server died?
  11. die("BUG: non-INDEX attr direction in a bare repo"); die("a bad

    revision is needed"); die("'%s' is not a valid branch name.", name); die("Empty patch. Aborted."); What do you mean the server died?
  12. die("BUG: non-INDEX attr direction in a bare repo"); die("a bad

    revision is needed"); die("'%s' is not a valid branch name.", name); die("Empty patch. Aborted."); die("unable to read index file"); What do you mean the server died?
  13. Java a brief timeline New companies don’t use Java because

    it’s not like Unix 1995 New companies use Java because it’s new and shiny 1997 New companies don’t use Java because it’s ooooooold 2005 New companies use the JVM because 2011
  14. Java a brief timeline New companies don’t use Java because

    it’s not like Unix 1995 New companies use Java because it’s new and shiny 1997 New companies don’t use Java because it’s ooooooold 2005 New companies use the JVM because 2011 github
  15. Some people think that github is a Rails shop Ruby

    shop. or even a github is a Unix shop and everything else is just a detail.
  16. libgit2 a brief timeline Shawn Pearce myself myself (about to

    have a mental breakdown) myself (having a mental breakdown) The Past
  17. libgit2 a brief timeline Shawn Pearce myself myself (about to

    have a mental breakdown) myself (having a mental breakdown) myself (reaching Git nirvana) The Past
  18. libgit2 a brief timeline Shawn Pearce myself myself (about to

    have a mental breakdown) myself (having a mental breakdown) myself (reaching Git nirvana) The Past Russell Belfer Carlos Martín Michael Schubert Ben Straub real contributors
  19. Good Heavens, just look at the time. It’s NoSQL o’clock

    NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL
  20. Key-Value Stores The Magic of If you wish upon a

    star, and have a pure heart...
  21. Key-Value Stores The Magic of If you wish upon a

    star, and have a pure heart... Anything can be a Key-Value store!
  22. id name state lat 13 San Francisco CA 24 24

    Phoenix AZ 33 7 Denver CO 40 8 Caribou ME 47 2 Los Angeles CA 22 SELECT * FROM CITIES WHERE name = ‘San Francisco’ Key-Value Stores The Magic of
  23. Git is queried like a Key-Value Store But it is

    not a Key-Value store git show f3c896c1949476e85abc0d75bb2143656a9580a6
  24. a b r i e f i n t r

    o d u c t i o n t o t h e G i t d a t a m o d e l
  25.  file.c  src  file.h  README.md  COPYING.md

    tree src/ README.md COPYING.md tree file.c file.h blob blob blob blob
  26. Number of hops on a complex query 1,000,000 Required hops

    for a successful query 1,000,000 Replica count to ensure 100% availability a metric shitton
  27. Ruby C Unix Unix Unix Unix Unix Unix Unix Unix

    Boring Boring Boring Boring Boring Summary: