Flying Donut has created a simple and intuitive agile collaboration and project tracking tool running on Compose MongoDB and RabbitMQ.
Founded in 2012, Flying Donut was born from the frustration that Ioannis Tzikas, Dimitrios Souflis, Pinelopi Kouleri, and Evangelos Parchas had when building their own projects at a former employer. The multinational company was fast-growing and distributed, making transparency and communication difficult. “We set out to solve our own problems, which incidentally meant we were solving others’ problems, too,” said Tzikas.
They needed a better way to gain transparency and accountability in an agile development environment, while at the same time not over-engineer the tooling necessary to do it. Helping organizations use scrum productively is what Flying Donut has set out to do, and Compose databases are what Flying Donut use to power their solution.
In the last 14 years, ever since the Scrum Alliance was founded, agile software development has moved to the forefront of how most teams approach building software, but the flavors of agile are more varied than ever. The distinction between doing a general variety of agile from true scrum development is still important, and the methodologies for scrum practices remain as relevant today as they did in 2002. However, until Flying Donut was launched, scrum tooling was either watered down and generic or over-engineered and heavy.
Flying Donut (named for the effect they wanted to have on a team’s performance and the delicious deep fried confection) is built on Backbone.js, Websockets, Java (Spring) and runs on a farm of Jetty application servers. They use Compose-hosted MongoDB and RabbitMQ to run the back-end. Flying Donut has designed both the frontend and backend to work asynchronously and in parallel. All updates are sent to the UI via Websockets and users are never blocked by any http request.
“The biggest challenge all teams face when adopting agile to their organization is to actually be agile and not just practice agile,” says Tzikas. Flying Donut built their application from the ground up to include essentials for running scrum — know where you are in the process; take small, iterative steps towards your goal; adjust your understanding based on what you’ve learned; repeat. Flying Donut helps to reinforce scrum through a rich set of features. For example, their “review” feature reminds teams to provide feedback on each sprint — something many teams forget to do once something has shipped.
MongoDB was selected because of its denormalized database design that’s optimized for read operations. Said Tzikas, “The database is designed from the ground up to be versioned with a complex schema containing the majority of the information, thus making it possible for optimistic locking on a field level and quick fetch queries. This makes it possible to have multiple modifications on the same document at the same time.”
Flying Donut utilizes RabbitMQ messaging extensively both at its backend and frontend. They’re using backend messages to trigger asynchronous events in the backend processes — updating stats, burn down charts, aggregated data, etc. The frontend messaging allows the client application to receive the events, that are filtered based on the available online users and each user session receives the proper updates via websockets.
As a company building an agile tool, one might expect them to be eating their own dog food... and they do. They have implemented continuous delivery and frequently make three to four upgrades on a single day while keeping different versions of the backend running at the same time. Because of the asynchronous design (they have moved to a fully asynchronous backend with the introduction of events, queues, and topics), downtime is rare. The evolution of their app has changed how they approach development too.
“Besides having extensive experience with developing and supporting high transaction volume applications, we had to develop new processes and adopt a devops mentality that would allow us to succeed in a more resource constrained environment.”
Backups, replication, and monitoring all factored in their decision to use Compose’s production grade MongoDB and RabbitMQ hosting. Tzikas added, “We are a small team and try to spend all of our time building Flying Donut. We love the Compose UI that gives us a simple way to very quickly do database queries and maintenance operations. Your support team has offered very fast resolution time and we’ve experienced five-star reliability.”
Many of their customers find Flying Donut through their Public Projects site, which helps open source (and some corporate) project leaders share their process and project transparently with the world. It’s a terrific way to learn more about Flying Donut and we encourage you to check out the Flying Donut app and Public Projects.
If you have any feedback about this or any other Compose article, drop the Compose Articles team a line at firstname.lastname@example.org. We're happy to hear from you.