A fusion in three acts
[aspnet core] [Microsoft Azure] [Azure DevOps] [webpack] [TypeScript]
It takes a strong core to build something powerful. Let’s head into the world of tech and experience the three acts of Fusion to find out why.
If you were tasked with building a tool that’s putting together tons of information from different sources, formats, sizes and shapes, how would you do it? Bundle it all together into one one-size-fits-all solution - or split it up into many smaller pieces? The team behind Fusion went for the latter.
“Our approach is one system accessing data from all over. We’re trying as hard as we can to avoid becoming a monolith that slows down progress and only makes sense to some developers.”
Hans Dahle
“We’re saving the app teams time by providing the basic infrastructure. It lets them focus on solving business problems and creating value instead,” Hans says.
Like the name implies, Fusion is more than one single app in itself. It has three important parts; the Fusion core framework, the apps and the portal. The end goal? To make project management easier by making different kinds of information accessible in one place. Think of it as a one-stop-shop for project information.
When they heard about the first thoughts for Fusion, they feared it would turn into an unmanageable gargantuan. Instead, they decided to split it into different domains. This let’s them tailor different functions individually.
“A key feature is that while domains are coupled together, they’re still flexible enough to be taken out and have a life entirely on its own,” Hans explains.
They did this because while one domain starts out as a prototype, it might turn out it provides enough value to be a service on its own - even though the greater context it used to be in has disappeared.
A fusion in three acts
To fully grasp what Fusion is all about, there's three key parts to understand:
The Core
Provides key features and core components like user profiles and access. Makes it faster and easier to develop and run apps.
The Portal
Access the web portal to make use of the apps.
The Applications
Apps are built using the Fusion core and each app can be tailored to a specific need. Apps gather information across many different systems and databases thanks to the Fusion core.
How it all began
Before we head deeper down into the Fusion rabbithole, we’re going to hop into the time machine to find out how it all began. Originally, Trond Karlsen and Jannicke Sangolt were asked to take data generated in a project completion tool, create a web front and display the info there.
“But we found that to be too old-fashioned and wouldn’t really generate any real value,” Trond says.
“So instead we locked ourselves into a meeting room for a couple of days, played around with post-it notes and came up with the idea,” he laughs.
After getting a go-ahead to create a proof of concept, Trond and Jannicke got to work. They spent 4-5 weeks on proving that their idea would work and when they presented their results the ball started rolling and they established a team.
“I think it’s easy for people to think of Fusion as merely a frontend-solution. But it’s more of a vertical bar that goes through our stack and let’s us get access to data from our entire system.”
Trond Karlsen
Trond explains that one of the biggest problems they wanted to solve from the start was handling users and their access - an extremely time-consuming task that they hope to be able to solve in the future.
The caching challenge
Hans is one of two from the original Fusion team, and has been working on the project since 2016. One of the challenges they faced was that data is spread across many tools and each tool has a different metrics to define a project, Hans explains:
“We can’t just start with a blank slate and force everyone over to a new system, we have to make use of the data we already have. And the more we work our way through the system, the more we see that data is made by a system - for that system.”
Data sets would grow so big that web server processes would run out of memory when processing them.
Another challenge was a long load time, which we solved by implementing “data factories” and delta queries - allowing them to do partial reads of the source.
“Basically, we have snapshots from nightly caching and when users access certain data we can run a request to see if there’s been changes to the data,” Hans explains.
“These two approaches leads to current data with a reasonable wait time without servers buckling,” he adds.
Inside the Fusion core
Context is key
Context is one of the key factors to displaying the right information to the right user at the right time. It all depends on two factors; project and user. While there are plenty of charts available that map out our line organizations, that’s not the case for projects.
“Previously, these organizational maps were distributed in a PowerPoint-presentation that was updated weekly. Now, Fusion handles the entire thing and the People-component acts as a master for all the other components and apps,” Trond explains.
This information was usually based on spreadsheets and overviews that said who’s who, where they worked and what their job was.
“When we managed to digitize this data it was a goldmine of information to use for all of Fusion,” Hans says.
By updating user information in the people component it’s automatically updated across the board. There’s also a history to users so we can go back in time to see who worked on what and when - which Norwegian regulations require us to do.
“We had some trouble in the beginning, explaining to people who just wanted a web-version of the presentations that there’s all kinds of functionality to it, but we got there in the end,” Hans laughs.
Want to stay updated on Loop?
Developer-centered development
While user-focused software development is a big focus, the Fusion core team have also been focusing on the developers themselves. They believe that if it’s hard to understand, maintain or develop - development will be slower.
“Fusion is a complicated machine. Having to teach each developer the ins and outs, just to work on a couple of apps, is not just time consuming - it’s also extremely challenging for everyone involved,” Martin explains.
To avoid that , they’ve created a set of open source tools consisting of reusable functionality and components. Together with easy-to-use tools for scaffolding and running apps in a sandbox, it’s all meant to help it make the whole process easier.
Check out the video below to see Martin explain what he found to be most fun to work on:
Martin is the frontend tech lead for the core team and explains that one of the biggest challenges they faced was creating a web-based solution for different teams and disciplines. Normally, there’s a single team that places an order for an app or a web-portal.
“For us there’s 10-12 different disciplines at the same time and the dashboard needs to make sense for all of them. The app-philosophy came about after seeing that dashboard tiles wouldn’t be able to cover all these needs,” Martin says.
“But having gone through this process with all the different clients gave us a challenge to come up with an ecosystem where we can create a specific app for a specific discipline.”
Meet the Fusion apps
Meetings
Facilitates meeting activities by keeping agendas, notes and actions.
Tasks
Collect and view tasks from different source apps in one place
Project Organization
Displays project organization charts. Simple edit/visual functionality.
Query
Manage the technical query process between contractors and Equinor
Project Development Portal
Gather and display project development data and reports
Reports
Manage and publish curated reports from Power BI and allowing access to different reports in Fusion apps
Apps, apps & more apps
There’s no way we can try to tell the story of Fusion without mentioning the app teams. Like you might remember, Fusion is more of a framework for the apps to run on.
“The most exciting thing is that we’re using the latest tech available. Using React and the component-approach means we can develop apps faster, while just shopping for components in the “Fusion shop”,” developer Hallgeir Gutvik says.
Each app is separate from each other but they still talk together and with the core components: affectionately known as microservices.
“It’s far more rewarding to spend time creating an app that’s going to bring value compared to having to reinvent the wheel every time."
Hallgeir Gutvik
Curious what the Meetings app actually looks like? Then check out the screenshots below. You can get a closer look by giving them a click.
Hallgeir’s team is 7 developers in total, spending roughly half their time on Fusion and building apps around a microservice philosophy. The plan is to have these app teams develop apps as the needs arise. It took around 5 months to finish the Meetings app but they expect it to take 2-3 months to deliver an app in 2020.
“Now, we’re working on an app called Reviews and that’s already faster than the first one,” Hallgeir smiles.
Microservices 101
An architectural style that structures an application as a collection of services that are:
- Highly maintained and testable
- Loosely coupled
- Independently deployable
- Organized around business capabilities
- Owned by a small team
The thrill of the challenge
Having a core portal like Fusion in place means that spinning up a new app is incredibly easy - all it takes is a command line and off you go. And while the biggest challenges can be a pain they’re also the most exciting part.
“We’ve been able to do a lot of things that we normally wouldn’t, like spending time on tooling and building our own frameworks instead of just creating yet another app to display reports. It’s been a lot of fun to work on.”
Martin Førre
Hans tells us that having people like Trond on the customer-side has been a great inspiration to deliver good results. For a dedicated developer it’s been hard to only think about Fusion for 8 hours a day.
“From the start, we’ve had the freedom to explore new concepts and try something new to see if it’s a good fit. That means we spend a lot of time researching and I’m more invested in the project, and it’s often on my mind when I’m off work,” Hans laughs.
Recipe for success
Trond, one of the two original minds behind all of it, says that there’s been two key factors to Fusion’s success from the start. One factor is that they were given an enormous amount of trust to see what they could do in the start.
“The other factor has been the business side have taken their role very seriously and are always eager to help us do more. Having a client that’s as dedicated as them is a success factor in projects like these,” Trond says.
With dedicated people on all sides of the Fusion table, it will be exciting to see what the future holds.
Don’t forget to subscribe to the Loop newsletter to stay in the - you guessed it - loop! Then, new stories will come flying to your inbox as soon as they’re published.
People
With contributors from Bouvet.
Hans Dahle
Eline Gjesdal Mo
Trond Karlsen
Martin Førre
Hallgeir Gutvik