As we continue our blog series on Cloud Native development, we want to anchor the concept in real-life scenarios and projects. Last time, we looked at how cloud native thinking led us to a modular application that lets Kontain focus on their core business - disrupting the self storage industry. Today, we take a closer look at what it means to deliver cloud native development from the ground up.
LocalFood from Nova Manus
Organic, locally produced food is seeing a rise in popularity. Several Facebook groups are creating spaces for people to engage in the packaging and selling of their own, home-produced food items. Norway in particular is experiencing a growing local food industry, and as people from all over the world are looking to avoid the crowd-gathering, large retailers, the home-produced alternatives are getting more and more attractive. But let us start from the beginning.
Aleksander Gjessing is the CEO of Nova Manus, a Norwegian company founded in 2014. He approached us with a problem: his current application wasn’t working as well as he wanted. The app was riddled with bugs, features were lacking and he continually missed his time-to-market deadlines - creating tension between the company and its investing stakeholders.
The original Nova Manus application was intended to compete with existing marketplace platforms such as Blocket and Finn. Aleks saw an opportunity in building a more modular and adaptable platform. With investors believing in the idea, the project was launched in 2015 and was initially developed with Aleks taking on major technological responsibilities, despite his expertise being outside of software development.
Solidify and Nova Manus
After struggling with the development, Aleks had contact with Terje Sandström at Solidify. Through that contact, Aleks tasked us at Solidify with ironing out bugs, and to further develop the application. All of the marketplace platforms are heavily utilizing software for gaining a competitive advantage, having a short time to market is crucial, and Aleks knew this:
“Time to market has been a challenge from the start. Capturing the rising trend in locally produced food requires quick action. The timing for this type of application is great for the Norwegian market, and absolutely perfect for other parts of Europe”, Aleks says.
However, after working with the existing codebase for about ten months, we realized together with Aleks that continuing on that track was more hassle than it was worth. For every bug that was fixed, new appeared. Adding features was painful and slow, and parts of the application were getting so complex that it couldn’t be managed. We had to start over.
Wiping everything clean, Aleks and Nova Manus entrusted us with building an entirely new application from scratch. He gave us freedom of choice regarding technologies, methodologies and could instead focus on taking a product owner role. “With Solidify taking ownership of the backlog and work planning, I’ve been able to instead focus on what I know best - the product vision”, Aleks continues. “The clarity surrounding the development process couldn’t be better. Even if Solidify handles the backlog, I can still track changes, follow up on bug fixes, and so on.”
Along this route, Nova Manus launched LocalFood. Aleks realized that by focusing on a single, emerging niche, the app could take advantage of the opportunity that an increased interest for locally produced goods created.
This complete restart enabled us to build the application using a cloud native approach. Leveraging Azure and Azure DevOps, we decided to create a minimal viable product using only core functionality. By connecting to third party applications and systems, we were able to move forward with the most important features and aspects without spending time developing things that others have done well before us.
Relating the development to the Twelve-Factor Application, we can draw parallels to several of the important factors of cloud native development. First of all, factor 1, Codebase, specifies that successful cloud native applications use a single codebase, tracked via version control using Git. Maintaining a correlation between the codebase and the released app means sharing code across components and keeping the same codebase on all deploys, something we established in the beginning of the new LocalFood application.
Mathias Olausson, CTO at Solidify and delivery lead for the LocalFood development, points out what a difference a development platform can have:
“At first, we struggled with legacy code and had a rough time progressing with actual features and functionality. I think that the opportunity to start over gave us a chance to rethink methodologies and processes as well as the architecture and infrastructure for the application. Working with an established DevOps mindset the team could start delivering value from day one. I’m really happy to have worked with Aleks who has contributed actively as the product owner to ensure we build be most important features first.”
The future of LocalFood
Since Solidify was tasked with the redevelopment of LocalFood, development has been progressing steadily. While DevOps and a cloud native approach are by no means everything you need for successful software development, it is a good start. The application is no longer haunted by legacy code, bug fixes and feature development is less problematic than before, and Aleks is much more content acting as a product owner instead of having to take on full technological responsibility. He sums up the transition in a nice way, saying that “Failure after failure, when everything was dark and seemed hopeless, Solidify made the tech dream a bright reality”.