by Jes Lefcourt and Brian Keyser
Companies looking to develop a high-impact, enterprise-class website on a shoestring budget should consider using open source software. Open source software has provided Verical with the ability, as a small company, to create a high-quality marketplace that competes with and exceeds the offerings from our competitors with much deeper pockets. The money saved from buying commercial products has allowed us to attract, support and retain customers. Here’s our high-level take on the open source advantage.
We have utilized open source software in all aspects of our software development including continuous integration, project builds, source code management, integrated development environments, runtime, testing and monitoring. Most of the tools that we use were built using Java. The Java runtime environment and the corresponding development kit are freely available for use. Because of the availability of Java, a thriving and passionate community has developed software that can be applied to many of the applications in development today, and the Verical Marketplace is no exception. Our small team of developers has leveraged several products from the community.
We have utilized several offerings from the Apache Foundation including the httpd and Tomcat containers and the Commons project. The Marketplace uses the httpd server to provide for session management and serving the unchanging content of our web site. The Tomcat container is leveraged to manage our catalog and inventory, guide the customer through purchasing electronic components, and administer the fulfillment process. The Commons project is heavily utilized in the implementation of many of our features. In addition to providing us with projects that enable the functionality of the Marketplace, Apache also gives us the Maven software project management tool. This tool and the associated open source “mojos” have provided the Verical development team with not only the ability to build projects, but also to provide static analyses of the Marketplace code which help us to better control software quality.
The Spring frameworks have been invaluable and allow our development team to focus on the programming of our business processes rather than working on infrastructure common to every software project. We have utilized the Inversion of Control (IoC), Model-View-Controller (MVC), web services, validation, testing, security, transaction management, and coupled with Hibernate, the Object Relational Mapping (ORM) frameworks. By providing the functionality needed by virtually every application, the Spring frameworks have saved considerable resources and allowed us to implement more features needed by our customers in a shorter time frame.
The Verical Marketplace relies on the MySQL database for persistence. MySQL provides the flexibility and scalability to offer sub-second search time for our vast inventory. In addition, the license model of MySQL, without breaking the bank, allows each developer to have a fully-functioning installation.
Verical’s unique end user experience is one of our primary technical differentiators. The development team has utilized Flex to create an easy to use, dynamic experience. Similar to Java, Flex is freely available and, in our experience, is undoubtedly the best way to build websites that attract users and keep them addicted, perform like a desktop-resident application, and enable teams to effectively collaborate on development. In addition, using Flex provides a clear separation between client and server that accelerates application delivery and reduces maintenance.
We also use open source throughout our production and testing environments. The Verical Marketplace is deployed on servers running the Linux operating system. This open source operating system is of high-quality and performs better than most of the operating systems available for purchase. In addition, we were able to use commodity hardware that further reduces our cost of deployment. Testing is aided using open source products including JUnit and Apache JMeter.
Open source software has many advantages, but it also has some disadvantages. The largest disadvantage is learning how to use the product. The documentation and examples, while improving, are not as good as those of commercial products. Technical support is also a problem with some of the projects, but for others such as JBoss, Spring, MySQL, and Linux, you can find commercially available support.
Most of the developers of today have “cut their teeth” on open source software and so they are familiar with the above issues. If support is not available, they are used to finding the answers to questions through their peers or through the community forums such as those hosted by JBoss, Spring, stackoverflow.com or the JavaRanch. An organization’s development practices may also help with these issues. At Verical, we use the Scrum methodology, but more on that at a later time.
We encourage you to explore what a small team of developers has done by implementing the Verical Marketplace exclusively through open source projects. If you have any suggestions for improvement, please let us know; we are sure that, enabled by our open source libraries and tools, we can find a solution rather quickly.