Technology

Interesting (infrastructure) tidbits about Groupon

I am attending the Camp DevOps conference in Chicago over the weekend and one of the speakers was Zack Steinkamp. Zack manages the operations tools group in addition to information security at Groupon. He spoke about a custom configuration management tool called “roller” (http://steinkamp.us/campdevops.pdf) that is used at Groupon. He said the tool is scheduled to be open sourced soon. roller is very similar to puppet, chef, bcfg2 etc. I am not sure if we need yet another configuration management tool, but Zack made a good point for why there is a need for a simpler and secure configuration management tool.

Anyways.. this post is not about roller, but rather about some tidbits that Zack shared about Groupon’s infrastructure in the talk

  • Groupon started out with ~100 servers
    • The operations function was outsourced to a third party
    • No automation in place.. all servers were “handcrafted”
  • Currently running ~1000 servers in 6 locations (globally)
    • Building their own data center
  • Running 4 different Linux distros in prod
  • Currently using Amazon and another cloud provider
  • Not a hugh believer in public cloud for future expansion
    • Zack spoke about how the lack of consistency in the IO/CPU performance is an issue on the public clouds
  • Does not heavily use virtualization in production
  • Uses Nagios for monitoring
  • SW Architecture
    • Started out as a “wordpress” blog
    • Then migrated into a Rails App
    • Currently the Rails App is huge
    • MySQL is the DB

 

Inspiration..

I love my “work” to the point that most people that know me think that I am a “workaholic” :). One of the reasons, I love my job is the ability to share my passion for technology. And I know that I am on the right path (despite the long hours), when I receive notes like this (from an ex team-mate)

Hi Vinay,

I hope you are doing great. I would like to take this opportunity to express my thankfulness to you, for introducing us the Modular approach in Perl Scripting during the tenure at TravelClick.

Without your support, I probably wouldn’t have gained confidence to develop script which runs more than 500 lines. Hence I wish to dedicate this script to you.

Btw I started writing a Technical Blog over a year “http://ashok-linux-tips.blogspot.com”. I request you to have a look.

I must admit that the idea of sharing technical solutions via Blog was mainly inspired after seeing your https://kudithipudi.org J

Once again, thanks for all the support extended to us.

Regards

Ashok

Nice job Ashok :).

HOW TO : Search ownership of files in Linux

Say you have a directory with a bunch of sub directories and files and you want to see if all the files are owned by a particular user, you can use the following set of commands

[code]ls DIRECTORY_PATH -l -R | awk {‘print $3’} | grep -v USER_NAME[/code]

The set of commands do the following

  • ls -l -R shows the list of files and directories
  • awk prints the name of the owner of the file (it is the third column)
  • grep shows only the lines where the owner name doesn’t match

And yeah.. this works in most variants of Linux :).

HOW TO : Apache and SELinux

Quick note for future reference..

If you ever run into errors like this

[code]
<pre>Starting httpd: Warning: DocumentRoot [/var/www/html/static] does not exist
Warning: DocumentRoot [/var/www/html/static] does not exist
Warning: DocumentRoot [/var/www/html/static] does not exist
Warning: DocumentRoot [/var/www/html/static] does not exist
(13)Permission denied: httpd: could not open error log file /etc/httpd/logs/error_log.
Unable to open logs
[FAILED]
[/code]
And you are scratching your head why Apache is throwing these errors, even when the said directory and files exist. And you have the right permissions!! Check if you have SELinux running and being enforced.
On RHEL, you can check if SELinux is running by
[code]cat /selinux/enforce [/code]
The two values are 0 and 1. 0 means, SELinux is not being enforced and 1 means it is.
You can quickly disable SELinux temporarily by
[code]echo 0 >/selinux/enforce [/code]
If you want to disable it permanently (i.e. survive reboots), you have to edit the file /etc/selinux/config and change the SELINUX line from enabled to disabled.

Overheard : Random comments about technology

Here are some interesting titbits from a executive summary event hosted by Redhat/Intel that I attended yesterday.

We decreased the execution times for our orders from 1.5 seconds to 5 milliseconds

This from an executive managing the technology organization for a large trading company. Imagine the geekiness in accomplishing this :).

For every 450 smartphones that get activated a server is added to support them

This from an Intel executive. So if there are 500000 android phones being activated every day.. that’s around 1111 servers being added just to serve the android fans :).

1 in 4 servers currently runs Linux

This from a Redhat executive. If anyone doubts that Linux is mainstream.. they are living under a rock 🙂