Perl Success Story: Amazon's Production Software Group Builds Auction Site Prototypeby Lori Houston
When Amazon decided to expand into online auctions last year, the company's production software group faced a daunting challenge: build a prototype of a complex, robust auction site as quickly as possible. Without a second thought, the group pulled Perl out of its arsenal.
"Because Perl is really well suited for rapid development, we were able to get a prototype Web site, with full bidding functionality, up and running in a couple of weeks," recounts Gus Lopez, the group's manager. "In prototyping a site, we do mock-ups and build functional front ends to see how the site is going to look and feel. Since the auction service would be highly interactive, we wanted something very functional."
With Perl, Lopez's group built a full-blown site that allowed for close of auctions and customer feedback. "The site even had advanced features we didn't include in our initial launch," says Lopez. "We added those features later, but Perl allowed us to explore early. We were able to think about how we wanted to differentiate ourselves from other auction sites and experiment quickly using Perl."
Interested in learning more about Perl? Read more Perl Success Stories.
And Perl enabled them to minimize development time by integrating other software and using existing modules rather than start from scratch. "We do a lot of object-oriented development in Perl, and inheritance and code re-use was very important," Lopez says. "I don't think we would have been able to do that kind of rapid prototyping in many other programming languages. Neither C nor C++ is well suited for this kind of prototyping effort because you frequently face fine-grained issues--such as memory leaks and memory allocation--that add to the development time."
"You don't have to worry about those very low-level details in Perl," says Lopez. "Compiled languages in general tend to be more difficult to use for rapid prototyping because of the time spent waiting for compiling and linking. In our experience, we've just found an interpreted language like Perl to be very well suited for this kind of development."
Besides compressing the development cycle, Perl's powerful scripting agility let the production team experiment. "Our Perl implementation drove some of our data modeling decisions. As we went forward with development, we could see how we wanted to represent data in an auction service," Lopez explains. "It allowed us very early on to get a sense of what elements we wanted to incorporate into auctions."
The auction site is by no means the first time Amazon has relied on Perl. Lopez's production group is responsible for building the company's software applications. "We're involved in most of the launches occurring at Amazon," he says. "Early on we used Perl to automate processes instead of building applications by hand. The prevailing attitude within the company was, if you can automate it, more power to you. We grew from using Perl for writing simple tools to building some pretty sophisticated applications and work-flow systems."
The production software group isn't typically involved in direct development for the live site; most of the team's development efforts serve internal users in a wide range of applications. Other departments within Amazon use Perl, such as customer service, quality assurance, and systems administration. Even when Lopez's group isn't building an application, they provide Perl support to other internal users. "In an informal sense there's a lot of code sharing within the company, so it all goes into a common structure that people can re-use," Lopez says. For example, his group interfaces closely with the company's catalog department, which uses Perl to develop tools to construct Amazon's catalogs as well as to manipulate, launch, and process catalog data.
While not a requirement, many of the software developers on the Amazon software production team have worked with Perl for years and participate in the Perl community. But they know that Perl is not taken seriously within many corporations. "Unlike C++ programmers, who tend to come from companies with larger development teams, a lot of Perl programmers were once sysadmins writing scripts on the side to automate processes," Lopez observes. "It's like a subversive movement, but that fits the Perl culture."
Along with Perl, his team enlists a full array of programming languages. "We try to remain language agnostic and choose the best language for the application we're developing," Lopez says. "A lot depends on what we're trying to build. For a performance-bound task, Perl might not be our first pick. But for application's requiring heavy string or file manipulation, regular expressions, or rapid development, Perl is very well suited to the task. And in Amazon's world, Perl is very well suited for a lot of what we do."