Please describe your company and your main job function.
I am CTO of Kooaba AG, a technology startup based in Switzerland. Our main competency lies in image recognition around which we offer end-user services for mobile visual search. Our services make digital images smarter and enables you to save, share, find, and remember the things you see. To that end we offer a client for iPhone and Android phones, as well as a web-platform, the kooaba library. Currently, our iPhone app has had 6 digit download numbers.
Why did you choose Amazon Web Services to power your mobile application?
Our image recognition service for the iPhone app consists of a massive, server-side image search engine. When you take a picture of say a CD cover with the kooaba iPhone app, it is transmitted to this image search engine, the object (CD cover) is recognized and information about it is returned to the user. We are currently extending this service to recognize print media (magazines, newspapers) very soon, as well as landmark buildings and scenery in the not too far future. All of this requires massive processing power and scalability, which is why we chose Amazon EC2 to run our services.
How have you incorporated AWS as part of your architecture? What services are you using and how?
We just published a blogpost on this, I’ll reuse it here:
Obviously, when rolling out such a system as a product, you need significant hardware resources. The database/index is, even early on, too large to fit into the RAM on a standard server, and CPU demands are very high also. Problems obviously get worse, when you have to handle many users, since you have to replicated the whole structure to handle the load in parallel. This used to mean a lot of upfront investment in hardware – which is a problem for any startup.
Thus, we at kooaba, knew from the moment cloud computing offers started appearing a few years ago, that it would be a crucial success factor for us. In particular Amazon EC2 caught our eye. We made it a central part of our technology strategy.
Today, we have deployed a system which recognizes X million items. The architecture is shown here:
We run our own local servers, which handle incoming traffic from our mobile applications (iPhone and Android) and also serve dynamic web-pages for search results, the kooaba library, content and data management etc. However, the complete image recognition is deployed on a set of servers on Amazon EC2. Due to the demanding nature of our search engine we rely on large instance types. (Also, we were very glad when Reserved Instances were announced, to cut our costs further). The instances run our custom images with our proprietary search software written in C++ on Ubuntu Linux.
Requests are distributed to the instances in the Amazon cloud, and collected and aggregated at our local servers.
In addition to the image search we also run Apache SOLR for full text search functions in the kooaba library. The text index is stored on Elastic Block Store and backed-up to S3 using snapshots triggered by cron tasks.
How has AWS helped you succeed?
Using Amazon Web Services such as EC2 helps us to scale without significant upfront investments in hardware. This is extremely valuable to any startup. Furthermore, the tools offered by AWS turned out to be very well documented, easy to use, and reliable, which made working with them very productive.
Do you have any future plans to incorporate other AWS solutions or use these services in other ways?
We are currently considering moving web applications (written in Ruby on Rails), relational databases, and potentially even other parts of the infrastructure to EC2. Overall, we are very hesitant in buying our own hardware and compared with cloud computing offers not only for computation, but also for storage.
Beyond this, we are also interested in using Amazon Elastic MapReduce, Autoscaling, and Mechanical Turk for some future services.
To learn more about Kooaba, visit www.kooaba.com/ .