In chatbot development, maintaining a conversation's state without sacrificing system reliability can complicate the process. Ivan Lopatin, the second-place winner at the Golem Cloud Hackathon, brings a fresh perspective to this challenge with his project: Media Tracker, a Telegram Chatbot designed to keep track of users’ media consumption.
In this interview, Ivan reflects on the idea of durable computing and talks about how it might reshape cloud computing in the next decade. He also describes his journey with Golem Cloud, discussing how durable computing eased the state preservation in chatbot conversations, a common challenge in his previous developments.
“Thanks to durable computing, the progress of the dialog in my bot is automatically saved, and I don't have to worry about explicitly saving this data to external storage in case of an update or bot failure. When I heard about Golem, I immediately thought - this is the solution to my problem!”
The Media Tracker stands out as a proof of concept with the potential to evolve into a library for developing invincible chatbots on Golem. Dive in to learn about Ivan’s experience with building on Golem, and explore why the seamless integration of durable state in Golem Cloud feels almost like a touch of magic to him.
I work at Ziverge, but not on the Golem team. I am very curious about John’s and Ziverge's new project and follow its updates with interest. From the very beginning, I wanted to develop a small, but full-fledged project on Golem to properly try it out. The hackathon was a great opportunity to do so.
And attractive prizes, of course!
As a child, I read a sci-fi novel in which a guild of engineers maintained complex machines. These machines were so reliable that they worked without failure for many generations. The maintenance procedures became rituals, and the engineers became priests of the mighty machines, having lost the knowledge of how they actually worked.
I imagine reliable programs that work for years without the need for maintenance, which is a large part of what developers and DevOps engineers do.
I love Telegram and I love bots in this messenger. I maintain a library for the Telegram Bot API in Scala (Telegramium) and have written two bots myself - for creating collaborative tasks in the family and for tracking my paid subscriptions. I also like to watch TV shows and read books, but I often forget which episode I stopped at, or the name of an interesting book I read a few years ago. So I came up with the idea of creating a Telegram bot to track content consumption. I am concerned about privacy and security of my data, and my own bot will allow me to use my own data storage.
In chatbot development, I was always concerned about preserving the state of the dialog so that a user could come back after a few hours or days and pick up the conversation where they left off. Thanks to durable computing, the progress of the dialog in my bot is automatically saved, and I don't have to worry about explicitly saving this data to external storage in case of an update or bot failure. When I first heard about Golem, I immediately thought - this is it, the solution to my problem. If you represent a dialog with a user as a separate worker, Golem itself will take care of preserving its local state.
I believe, first and foremost, it will increase the efficiency and reliability of cloud solutions, which is always welcome. We will also see the spread and development of self-healing systems, edge computing, and decentralized cloud services. Certainly, the adoption of serverless computing will grow.
I like that using one of the main advantages of Golem Cloud - durable state - is almost free for developers, in the sense that there is no need to study any libraries or SDKs; you can write code in any supported language and the state is saved automatically. It feels like magic!
This was my first project in the Rust language, and during the Hackathon, I was able to focus on writing business logic in this wonderful language. Interacting with Golem, storing local state - everything is done using the language tools or HTTP libraries, and that's very cool.
Right now I would like to have the ability to interact with databases, even though Golem reduces the need to use them in many cases. A way to communicate with common databases using existing libraries would be useful in the development of many applications.
The developers have already promised the ability to migrate Golem workers to a new version of the code; I am really looking forward to this, it will be an extremely useful feature.
I would also like to see a strategy for integrating solutions on Golem with existing services and cloud infrastructures.
From a broad theoretical perspective, one can start studying with books and research articles that focus on distributed systems, fault tolerance, resilience and reliability in computing. My favorite book in this area is the well-known Designing Data-Intensive Applications by Martin Kleppmann.
On a more practical level, it is worth exploring the Golem Cloud blog, which talks about the concept of durable computing. I also found the materials and articles on durable execution from Temporal.io and durable functions from Microsoft Azure interesting, they helped me to understand the concepts and challenges of this area of computing.
Subscribe to the Golem Open Source Newsletter to learn about improvements to Golem, and to hear about the latest articles, talks, and conferences that show you how to build reliable applications using Golem.