`

37signals Architecture

阅读更多

37signals Architecture

Update 6: Things We’ve Learned at 37Signals . Themes: less is more; don't worry be happy.
Update 5: Nuts & Bolts: HAproxy . Nice explanation (post, screencast) by Mark Imbriaco of why HAProxy (load balancing proxy server) is their favorite (fast, efficient, graceful configuration, queues requests when Mongrels are busy) for spreading dynamic content between Apache web servers and Mongrel application servers.
Update 4: O'Rielly's Tim O'Brien interviews David Hansson , Rails creator and 37signals partner. Says BaseCamp scales horizontally on the application and web tier. Scales up for the database, using one "big ass" 128GB machine. Says: As technology moves on, hardware gets cheaper and cheaper. In my mind, you don't want to shard unless you positively have to, sort of a last resort approach .
Update 3: The need for speed: Making Basecamp faster . Pages now load twice as fast, cut CPU usage by a third and database time by about half. Results achieved by: Analysis, Caching , MySQL optimizations, Hardware upgrades.
Update 2: customer support is handled in real-time using Campfire.
Update: highly useful information on creating a customer billing system.

In the giving spirit of Christmas the folks at 37signals have shared a bit about how their system works. 37signals is most famous for loosing Ruby on Rails into the world and they've use RoR to make their very popular Basecamp, Highrise, Backpack, and Campfire products. RoR takes a lot of heat for being a performance dog, but 37signals seems to handle a lot of traffic with relatively normal sounding resources. This is just an initial data dump, they promise to add more details later. As they add more I'll update it here.

Site: http://www.37signals.com

Information Sources

  • Ask 37signals: Numbers?
  • Ask 37signals: How do you process credit cards?
  • Behind the scenes at 37signals: Support
  • Ask 37signals: Why did you restart Highrise?

    Platform

  • Ruby on Rails
  • Memcached
  • Xen
  • MySQL
  • S3 for image storage

    The Stats

  • 30 servers ranging from single processor file servers to 8 CPU application servers for about 100 CPUs and 200GB of RAM.
  • Plan to diagonally scale by reducing the number of servers to 16 for about 92 CPU cores (each significantly faster than what are used today) and 230 GB of combined RAM.
  • Xen virtualization will be used to improve system management.
  • Basecamp (web based project management)
    * 2,000,000 people with accounts
    * 1,340,000 projects
    * 13,200,000 to-do items
    * 9,200,000 messages
    * 12,200,000 comments
    * 5,500,000 time tracking entries
    * 4,000,000 milestones
  • Backpack (personal and small business information management)
    * Just under 1,000,000 pages
    * 6,800,000 to-do items
    * 1,500,000 notes
    * 829,000 photos
    * 370,000 files
  • Overall storage stats (Nov 2007)
    * 5.9 terabytes of customer-uploaded files
    * 888 GB files uploaded (900,000 requests)
    * 2 TB files downloaded (8,500,000 requests)

    The Architecture

  • Memcached caching is used and they are looking to add more. Yields impressive performance results.
  • URL helper methods are used rather than building the URLs by hand.
  • Standard ActiveRecord built queries are used, but for performance reasons they will also "dig in and use" find_by_sql when necessary.
  • They fix Rails when they run into performance problems. It pays to be king :-)
  • Amazon’s S3 is used for storage of files upload by users. Extremely happy with results.

    Credit Card Processing Process

  • Bill monthly. It makes credit card companies more comfortable because they won't be on the hook for a large chunk of change if your company goes out of business. Customers also like it better because it costs less up front and you don't need a contract. Just pay as long as you want the service.
  • Get a Merchant Account. One is needed to process credit cards. They use Chase Bank. Use someone you trust and later negotiate rates when you get enough volume that it matters.
  • Authorize.net is the gateway they use to process the credit card charge.
  • A custom built system handles the monthly billing. It runs each night and bills the appropriate people and records the result.
  • On success an invoice is sent via email .
  • On failure an explanation is sent to the customer.
  • If the card is declined three times the account is frozen until a valid card number is provided.
  • Error handling is critical because problems with charges are common. Freeze to fast is bad, freezing too slow is also bad.
  • All products are being converted to using a centralized billing service.
  • You need to be PCI DSS (Payment Card Industry Data Security Standard) compliant.
  • Use a gateway service that makes it so you don't have to store credit card numbers on your site. That makes your life easier because of the greater security. Some gateway services do have reoccurring billing so you don't have to do it yourself.

    Customer Support

  • Campfire is used for customer service. Campfire is a web-based group chat tool, password-protectable, with chatting, file sharing, image previewing, and decision making.
  • Issues discussed are used to drive code changes and the subversion commit is shown in the conversation. Seems to skip a bug tracking system, which would make it hard to manage bugs and features in any traditional sense, ie, you can't track subversion changes back to a bug and you can't report what features and bugs are in a release.
  • Support can solve problems by customers uploading images, sharing screens, sharing files, and chatting in real-time.
  • Developers are always on within Campfire addressing problems in real-time with the customers.

    Lessons Learned

  • Take a lesson from Amazon and build internal functions as services from the start. This make it easier to share them across all product lines and transparently upgrade features.
  • Don't store credit card numbers on your site. This greatly reduces your security risk.
  • Developers and customers should interact in real-time on a public forum. Customers get better service as developers handle issues as they come up in the normal flow of their development cycle. Several layers of the usual BS are removed. Developers learn what customers like and dislike which makes product development more agile. Customers can see the responsiveness of the company to customers by reading the interactions. This goes a long ways to give potential customers the confidence and the motivation to sign up.
  • Evolve your software by actual features needed by users instead of making up features someone might need someday. Otherwise you end up building something that nobody wants and won't work anyway.
  • 分享到:
    评论

    相关推荐

      80486 System Architecture [3rd Edition] [1995]

      The MindShare Architecture Series.......................................................................................1 Organization of This Book........................................................

      Spread Spectrum and CDMA -- Valery P. Ipatov

      11.2.1 General system principles and architecture 340 11.2.2 GPS ranging signals 341 11.2.3 Signal processing 343 viii Contents 11.2.4 Accuracy 344 11.2.5 GLONASS and GNSS 344 11.2.6 Applications 345 ...

      EISA System Architecture

      The MindShare Architecture Series.....................................................................................1 Organization of This Book.........................................................

      TVP5150.PDF

      The optimized architecture of the TVP5150 device allows for ultralow-power consumption. The device consumes 113 mW of power in typical operation and consumes less than 1 mW in power-down mode, ...

      Synchronized Power Quality Measurement Network with LAMP

      Abstract-- In this letter, a power quality ... The major advantages of such architecture are that they are all commercial-grade software with proven system operation stability and are free to use.

      modelsim10.7

      Its architecture allows platform-independent compile with the outstanding performance of native compiled code. The graphical user interface is powerful, consistent, and intuitive. All windows update...

      Performance comparison of power fading mitigation techniques in multiband OFDM-UWB signals transmission along LR-PONs

      Particularly, two different SSB architectures, namely, Sieben's architecture and four phase modulator (FPM) architecture are optimized to provide maximum sideband suppression. The minimum optical ...

      Teledyne Lecroy Wavepro HD 产品手册

      signal fidelity, and the low-noise system architecture provides an ideal signal path to ensure that signal details are delivered accurately to the oscilloscope display – 16x closer to perfect

      用VHDL语言编写的VGA显示彩条

      architecture behave of VGA is -- horizontal timing signals constant h_data: integer:=640; constant h_front: integer:=16; constant h_back: integer:=48; constant h_sync: integer:=96; constant h_...

      Programmable.Microcontrollers.with.Applications.0071830030

      Find out how to configure the MSP430, efficiently program custom functions, process analog and digital signals, and interface with external components. Sample code and reference information are ...

      The Indispensable PC Hardware Book - rar - part1. (1/7)

      Machine check architecture. Pearson Techonology Group - Indispensable PC Hardware Book, The Performance monitoring. Model-specific registers for debug support. Reset and power-on configuration. ...

      Wideband TDD - WCDMA for unpaired spectrum - Chitrapu P. (2004)

      3.6.2 Detection of Direct Sequence Spread Spectrum Signals 39 3.6.3 Rake Receiver Structure 39 3.6.4 Joint Detection Receiver Structure 41 References 42 4 TDD Radio Interface 43 4.1 Overview 43 4.2 ...

      The Scientist and Engineer's Guide to Digital Signal Processing

      Multiplying Signals (Amplitude Modulation) The Discrete Time Fourier Transform Parseval's Relation Chapter 11 - Fourier Transform Pairs Delta Function Pairs The Sinc Function Other Transform Pairs ...

      Intel ippsman

      2007/01 This document describes the structure, operation and functions of the Intel Integrated ...Performance Primitives (Intel IPP) for Intel architecture that operate on one-dimensional signals.

      SLAS256C.pdf

      Typical applications include sensor systems that capture analog signals, convert them to digital values, and then process the data and display them or transmit them to a host system. Stand alone RF ...

      AMBA Specification (Rev 2.0)

      This document is the Advanced Microcontroller Bus Architecture (AMBA) specification. This specification is to help experienced hardware and software engineers to design modules that conform to the ...

      SLAS341A.pdf

      Typical applications include sensor systems that capture analog signals, convert them to digital values, and process and transmit the data to a host system. The timers make the configurations ideal ...

      msp430f413-2

      Typical applications include sensor systems that capture analog signals, convert them to digital values, and process the data and transmit them to a host system. The comparator and timer make the ...

      SLAS241H.pdf

      Typical applications include sensor systems that capture analog signals, convert them to digital values, and then process the data for display or for transmission to a host system. Stand alone RF ...

      130F1121A芯片资料

      The architecture, combined with five low power modes is optimized to achieve extended battery life in portable measurement applications. The device features a powerful 16-bit RISC CPU, 16-bit ...

    Global site tag (gtag.js) - Google Analytics