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

MongoDB_at_Customlink

 MongoDB_at_Customlink

Learn about how CustomInk uses MongoDB, some of the challenges in introducing the technology, and some lessons learned.

mongodb

July 07, 2011
Tweet

More Decks by mongodb

Other Decks in Programming

Transcript

  1. Hello!   !  Nathen  Harvey   !  Web  Opera4ons  at

     CustomInk   !  [email protected]   !  @nathenharvey   !  Organize  MongoDC  Meetups   !  See  you  there  next  month!   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  2. Thanks  for  aFending   !  In  the  other  track  

    !  Eliot  Horowitz,  CTO  &  Co-­‐Founder,  10gen   !  Schema  Design  at  Scale   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  3. CustomInk  Technology   !  Divide  our  technology  into  two  classes:

      !  ECommerce  –  pre-­‐checkout  and  shopping  cart   !  Opera4ons  Technology  –  post-­‐check-­‐out,   fulfillment,  etc.   !  Ruby  on  Rails   !  With  some  legacy  Java   !  Approximately  30  different  applica4ons   running  in  produc4on   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  4. CustomInk  Databases   !  Primarily  Oracle   !  Was  the

     “right”  choice  11  years  ago  when  the   company  was  started   !  No  longer  a  good  solu4on  for  us   !  MySQL   !  Percona  Server  with  XtraDB   !  MongoDB   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  5. MongoDB   !  Champions   !  Easy  to  set-­‐up  and

     configure   !  “Greenfield”  projects  with  loose  schema  defini4ons   !  Makes  development  easier  and  developers  happy   !  Limited  amount  of  4me  between  releases   !  Challenges   !  No  prior  experience  with  running  produc4on   !  Limited  amount  of  4me  between  releases   !  Unproven  solu4on   Nathen  Harvey   Nathen  Harvey  
  6. Problem   !  Complex  Produc4on   Environments   !  Orchestrated

      Services   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  7. Why  Mongo?   !  Introduces  company  to  MongoDB   !

     Easily  to  modify  document  structure   !  Lightweight  development   !  Easy  to  install  and  deploy   !  Capped  Collec4ons   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  8. Central  Logger   !  Subclasses  Buffered  Logger   !  It’s

     a  gem  loaded  into  Rails  applica4ons  as  a   Rail4e   !  Captures  useful  metadata   !  Use  the  MongoDB  Ruby  Driver   !  hFp://github.com/customink/central_logger   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  9. Why  Mongo?   !  Frequently  changing  requirements   !  GridFS

      !  Wide  variety  of  products  with  varied   characteris4cs   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  10. Applica4on  Architecture   !  Rails  applica4on  for  managing  the  product

      catalog   !  Writes  to  MongoDB  as  it’s  database   !  U4lizes  GridFS  for  storing  files   !  Uses  Mongoid  as  the  ODM   @nathenharvey   Nathen  Harvey  
  11. Implementa4on  Flow   Oracle   MongoDB   ECommerce   Applica4on

      Catalog   Applica4on   @nathenharvey   Nathen  Harvey  
  12. Next  Steps   !  Con4nue  to  adopt  MongoDB  in  the

     Opera4ons   Technology  applica4ons   !  Begin  using  MongoDB  with  ECommerce   applica4ons   !  Repor4ng  artwork  usage   !  Capturing  JavaScript  logs   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  13. Automated  Deployment   !  Chef  is  an  open  source  systems

     integra4on   framework  built  to  bring  the  benefits  of   configura4on  management  to  your  en4re   infrastructure.   !  We  use  Chef  to  manage  our  infrastructure  and   deploy  MongoDB   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  14. MongoDB  Cookbook   !  Use  Vagrant  and  VirtualBox  as  the

      development  environment  for  our  Cookbooks   !  Cookbook  shared  on  Github  and,  soon,   OpsCode  Community  Site.   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  15. Lessons  Learned   !   Capped  Collec4ons   !  

    Tes4ng  replica  set  failover   !   Schema  free  !=  design  free   !   JSON  in  the  DB,  JQuery  in  the  browser  ==  happy   developers   !   mongo_import  could  not  handle  carriage  returns  in   CSV  files   !   Unserializable  data  types   !   Data  transforma4ons  on  a  large  dataset  s4ll  painful   !   Unless  you’re  sharding,  map  reduce  probably  slower   and  more  complex  than  what  you’re  used  to   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  16. MongoDC  Meetup   !  Join  fellow  MongoDB  enthusiasts  for  a

      monthly  meetup   !  Mee4ngs  are  held  at  CustomInk  in  McLean,  VA   !  hFp://www.meetup.com/Washington-­‐DC-­‐ MongoDB-­‐Users-­‐Group/   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey  
  17. Thank  You!   !  Nathen  Harvey   !  Web  Opera4ons

     at  CustomInk   !  [email protected]   !  @nathenharvey   !  Organize  MongoDC  Meetups   !  See  you  there  next  month!   @nathenharvey   Nathen  Harvey   @nathenharvey   Nathen  Harvey