The Bunny behind the code: Zvonko’s edge adventure

Posted by:

Meet Zvonko Gazvoda, software engineering lead at bunny.net and one of the masterminds behind Magic Containers—the biggest and boldest launch in bunny.net history.

Magic Containers changes the game for edge computing. It brings containers closer to users, removes complexity, and makes global deployment effortless. Scaling applications worldwide no longer requires overprovisioning, high costs, or complex DevOps setups. Everything works automatically, exactly when and where it’s needed.

Zvonko has been at the heart of this project since day one. He turned an ambitious idea into a fully operational platform that redefines how developers deploy applications at the edge. In this interview, he shares what it took to build Magic Containers, the toughest challenges along the way, and how bunny.net is shaping the future of cloud computing.

Let’s hop in!

Q: Hi, Zvonko! Can you tell us a bit about yourself and your background in engineering?

— Hi, thank you for having me! Sure! I was always curious about how things work and how to build something. When I was approaching the age where I needed to decide on secondary school, I chose programming, basically. I didn't—I wasn't good at first in the beginning. I needed some time to figure things out and get to the ‘aha’ moment.

It requires a specific way of thinking. And, yeah, I needed some time to get to that point. Once I figured things out, it was very interesting to me because it allowed me to be very creative. You soon figure out that you can basically build whatever you want. Anything you want. You're given a language, and then, you know, you communicate with the computer. Tell it what to do, and you can tell it to do anything.

Q: What made you join bunny.net, and what excited you about working here?

—At my previous job, I was working on many different projects, both in industry and research. It allowed me to learn a lot and develop my skills. That went on for around nine years. Then I heard about Bunny, and I was introduced to its mission and the kinds of challenges it was tackling, and I was immediately intrigued.

But what really got me to decide on Bunny was negotiation, communication, and talks with the founder, Dejan. I had one request that I wanted to put in the contract. And Dejan was like, “We cannot put that in wording, but you have my word. And if I break my word, you're not the person for the company.”

That was a really bold statement from him. It didn't scare me away, though. Somehow, it convinced me that Bunny would be the right decision because it showed me that he's honest. And that kind of showed me that I can build trust. And, yeah, that sealed the deal.

Q: What’s your role at bunny.net, and what do you focus on?

—I am a software engineering lead for edge computing. My focus for the last three years has been Magic Containers. When I started to work on the project, we built everything from the ground up. We wanted to build everything from scratch. At the beginning, I was a developer, and as the project grew, so did the team. We brought in more people, and my role expanded to lead developer, making architectural decisions and ensuring everything was developed the right way.

To get to the point we wanted to be, my focus then shifted or extended to collaborating with other departments, like the frontend and UX teams, to help design the user interface. I also worked closely with the infrastructure team to make sure we had the backbone needed for the platform to run smoothly.

Q: How did the idea for Magic Containers come to life? What problem were we solving?

—When I joined bunny.net, I was given a trial project, which I wrapped up in about one month. After that, Dejan contacted me and shared this idea:

“I want to make sure that we have a platform that will bring containers or allow users to deploy containers, but then the platform will make sure that these containers are as close as possible to the end users. And, of course, if there is no activity from the users of the application, we want to shut down those containers.”

The idea was quite simple at the beginning, but of course, once we started working on it, it grew over time. We refined it multiple times and extended the scope because, over time, we realized that we wanted more, we wanted better, and we wanted improvements.

Zvonko and Dejan solving puzzles.

Q: What were the biggest technical or strategic challenges that shaped its development?

—The first challenge was how to make the original idea work in the right way, how to detect the activity of users, and how to make sure we deploy containers as close as possible to them. That was the first one.

The second one was that we were building an edge computing platform. What we need to make sure of is that we are providing a good enough uptime for the platform. So, the applications that are running on our platform must always be available. That was one of the biggest challenges because it got us thinking about how to make sure the platform is robust and also that it provides fault-tolerance mechanisms. And we've built in quite a lot of smart things on every level to make sure that even if something goes wrong in the background, like network issues, the platform will be able to mitigate them automatically.

The third one was security. As we are, of course, running applications from different customers on a shared infrastructure, we need to ensure that we are providing a good enough level of isolation between these applications to prevent any kind of exploits or container-escape vulnerabilities and to ensure that applications from different customers are intact.

Every challenge we solved for Magic Containers made the platform more secure, intelligent, and resilient for our customers.

Q: How does it improve the developer experience compared to other solutions?

—In our view, existing solutions struggle with three main things. One is complexity, the other one is vendor lock-in, and the third one is cost.

So, to address each one of those, for the complexity, we decided we wanted to build something that would allow users to easily deploy their existing applications to our platform and also that they are not required to make any kind of changes to their applications. The only requirement we have for our platform is that customers build and package their applications as container images, and with that, the application is ready to be deployed on Magic Containers. They can also deploy any existing Docker image or container image to our platform. And with that, we've reduced the complexity of using the platform.

Regarding the vendor lock-in, we wanted our customers to decide on our platform because it's amazing. It's easy to use and not because it's the only option, as is usually the case with other platforms.

Finally, cost is one of the most important things. Deploying applications at the edge can be very hard because it requires extensive planning for the location of data centers and extensive infrastructure provisioning, which, of course, increases the cost.

With our platform, we are solving this issue out of the box. Our platform is smart enough to figure it out on its own, undeploying the application when it's not needed and reducing costs. We also wanted to build a true “pay-as-you-go” model. You are only billed and charged for the actual use.

We celebrated the launch of Magic Containers in style!

Q: If you had to explain Magic Containers to a developer in a simple way, how would you do it?

—The simplest way to explain what Magic Containers is to a developer would be: it's an edge computing platform that allows you to deploy containerized applications, and it will automatically deploy, start, or shut down your application based on user activity. It's that simple. It's magic.

Q: What were the toughest hurdles during development, and how did you overcome them?

—One of the toughest hurdles we encountered during the development of Magic Containers was that one of the design decisions in terms of architecture turned out to be wrong. When you are building something this big, it's really hard to get it right from the beginning.

Over time and with some testing, we discovered that one of the decisions was not the best. We needed to re-architect, refine, and redo some of the work.

The second thing was the scope of the work. You can do a lot of planning, but you cannot foresee everything. When you're building things, you will have to extend, reshape, and re-architect parts of the system. And yeah, over time, it was really hard to make sure that we didn't expand the work too much.

The third hurdle was related to the scope of the project itself. It was the first time for me to work on and encounter something as big as Magic Containers.

It was a really big project, and it was the first time for me that required quite a lot of learning, redoing, making tough decisions, correcting those decisions, being very dynamic during the process, and acting quickly when problems occurred.

Finally, the biggest hurdle, or maybe the biggest lesson learned when working on such a big product, is that you have to embrace the learning process. You cannot get it right from the get-go every time. And you need to be open to learning, experimenting, testing, and then correcting your own mistakes.

The stars of our Engineering team.

Q: How did working on this project push you to grow as an engineer?

—It pushed me a lot. I had some experience previously in, let's say, all the areas, but certainly not enough to feel like, "Okay, this will be easy." I had to dive into containerization, networking, security, load balancing, fault-tolerance mechanisms, and many other areas that must be mastered for building such a platform.

Of course, at the same time, I was thinking about and making sure that the platform and solution would be scalable, robust, and secure. The project pushed me to think beyond just engineering, considering UX, infrastructure, security, and many other aspects. It forced me to connect the dots between performance, accessibility, and security.

One of the biggest growth areas I gained from this project was collaborating with teams such as Infrastructure and Security. They have a lot of knowledge about these areas, and I needed to learn a lot from those teams.

This allowed me to make the right decisions when building the platform. This project challenged me like no other. It certainly pushed me to think about the big picture and consider all aspects, not just what to build and how to build it, but also why we are building it and for whom we are building it.

Q: How did bunny.net support you in developing something this ambitious?

—Bunny supported me a lot during this project. They knew that this was something new for me, a project of this scale. They gave me time to work on the project, to try things, to learn things, and to do a lot of trial and error. This, of course, requires a lot of time. They were not pushing me with meaningless deadlines, but they allowed me to grow and do things correctly over time. They also gave me the opportunity to collaborate with all these different people I mentioned before. This gave me a lot of learning opportunities. Bunny showed a lot of trust, and they also gave me a lot of responsibility. This is a big honor, and I'm very grateful for this opportunity.

Q: What’s one key lesson from this journey that you’d share with other engineers?

—I would say the key lesson is that you don't do it just for the end goal. You do it for the journey. In the beginning, when I was presented with the challenge, I couldn't possibly fathom that I could do something like that. But as with every big challenge, you do it one step at a time. You need to break it down into smaller tasks and go with it. You just need to do the first step, and then everything gets easier.

Q: What excites you most about the future of Magic Containers?

—The first thing that excites me the most is the reaction of the customers and users of the platform. This will ultimately shape how the future development of Magic Containers will go. We have many ideas on how to bring additional functionalities and solutions that will help developers get online globally faster, more easily, and, most importantly, at a smaller cost.

Q: Any final thoughts for developers who are curious about bunny.net?

—If you enjoy solving real problems and enjoy really big challenges at a global scale, Bunny is the place to be. When I joined, there was no strict plan, no strict roadmap. I was given an opportunity to learn along the way and enough time to test things out, rebuild things, and improve them.

With Magic Containers, we've come a long way. But there are still many things we want to improve, optimize, and build on top of it. That's what makes the journey very interesting and fun. Of course, you are always intrigued by improving and building new stuff. If you are a developer who enjoys big challenges, if you want to learn as you go, and if you want to be somewhere where you're given an opportunity to take ownership of what you build, then you will fit right in.

Curious to learn more about Magic Containers? Hop to this link and find out more!