Educational web project
Uchi.ru is an educational platform that lets students from all over Russia learn in an interactive environment. As they explain it, this method offers an individualized approach to education; every child studies at their own pace and without any knowledge gaps. To use it, all you need is a laptop or tablet and an Internet connection. The platform was founded by two graduates of the Moscow Institute of Physics and Technology, Ivan Kolomoets and Evgeny Milyutin.
At Uchi.ru, anyone can try their hand at the problems students solve. They’re presented as short animations: identify numbers to help octopus parents pick out their children, use addition to guide a mouse through a maze, work out fractions using building blocks, and even put a train’s numbered cars in the right order.
We asked the project’s CTO, Alexey Vakhov, to tell us more about the project: how did it all get started, how do they manage to explain such complicated subjects to children, and why is the Virtual Private Cloud a suitable solution for the Uchi.ru development team?
What exactly does Uchi.ru do?
It’s actually pretty simple; we teach children. Our company grew from just a startup and is now an educational platform for teaching in elementary and middle school. We primarily teach math, but are trying other subjects.
Where did the idea for this project come from?
The founders have been involved in education for a long time, since they were in institute and working as tutors. And they found the format to be interesting, studying behind a screen. Yes, there are textbooks, there’s head-on teaching with a teacher in a classroom, but we can offer another option: computers are interactive and individualized to each child. For example, if a student makes a mistake, we can have a mini-dialog with each one, give feedback, something like that.
Do kids study in school or can they learn on their own?
We’re not competing with teachers or school. That’d be the same as trying to replace school with just textbooks; more likely than not, you’d end up with really weak levels. It’s hard for the most people to study like that. Instead, we give kids another way “to do it.”
We have two situations. The first is when kids take a computer class in school or have after-school programs, depending on the teacher and the school, and work on their computers there. The second is to study at home, like many kids do.
Is your program different from a school’s?
We have a math course, which corresponds to the state standards. It’s just that the teaching method is interactive, and every child learns at their own pace. The system puts them on a benchmark; if they learn slowly, then they’ll have more tasks on the topics that were difficult, but if they’re fast, they already know it all and fly through the section. The differentiation is very fast; when the class starts, the “advanced” students move ahead, but those who are behind will start to catch up.
How is the process built?
When students learn, they solve thousands of problems. Due to the average child’s short attention span (20 minutes and that’s it), we present materials in such a way that they can quickly start to do something, quickly make mistakes (or not), get feedback, and make corrections.
We can give awesome problems in three-dimensional space—something that’s hard to duplicate on paper. In addition to the main Uchi.ru course, we host olympiads (academic competitions) in many subjects. We try to create problems that are hard to give in a classic olympiad—they can of course, but there’s a certain charm to doing them on the computer. For example, in our first math olympiad, we had a projection problem: a pyramid casts two shadows on a wall. This really is difficult on paper; only about 10 percent of the kids solved it. We made a good introduction: a child moves around some cubes, sees how the projectors shine on them, what kinds of shadows they cast, and then about 60 percent solved it. It’s cool how we could explain to first-graders something that’s hard for third-graders and then have them solve it.
Have you approached schools about collaborating?
Yes, we’re working on it. What’s important is that the kids like the product; they like communicating. This is the idea behind all of our activities---how to talk to kids, to teachers, and to parents. Schools print diplomas from our olympiads, and they take pride in that (laughs).
Do you work with a lot of schools?
We have a million users in Russia. 20% of Russian children learn with us. We don’t separate them internally, whether someone studies on their own or with their class. Initiative usually comes from the teacher, but some register on their own. You can join at any time, create your own class for example. We have different portals: for students, for teachers, and for parents.
One in five. That’s alot.
Well, yeah (laughs), but we want more; there’s room to grow.
Are schools eager to sign up?
Now they are. There used to be a lot of difficulties every step of the way: even just getting inside was hard; schools don’t just let in everyone off the street. And the first schools we connected with were those we could walk to: there were five of us, we picked the schools that were closest to the office, met the principles, came to an agreement.
Why only math?
We’re planning other programs, but computer-based courses are hard to create; we have to build everything from the ground up. This isn’t just scanning a textbook, not just a PDF, it’s a completely redeveloped, highly interactive course.
Let’s talk about the technical side. When did you decide to start working with Selectel?
A year and a half ago. Not from the very start; we used Heroku for two years, then moved to dedicated servers, and then to you. There were no particular jumps. We’re now using the Virtual Private Cloud and a few dedicated servers.
How did you decide?
Express 42, devOps consultants, “transferred” us. We had a problem: we host major olympiads, and this means that we get a lot of traffic one week, and then activity settles down. This was really complicated with dedicated servers, because we’d have to rent ten units, then return them, set them up… This takes a lot of time. Plus, dedicated servers are big and we have a lot of different applications and a bunch of productions, both for internal use and external users. And so we had to start assigning them roles… In the end we just gave up and moved to you (laughs). It’s because of the public cloud and there’s also the FZ (Federal Law on Storing Personal Data - editor’s note).
Were there other options?
At that time, you were the only big-name company with a sensible offer where we could start that same day. There were alternatives, but as experience has shown, if you buy a cheap server, either everything goes down because of traffic or you find other purely technical problems.
Did the seasonal nature of your business play a role?
Yes, traffic in the summer is, of course, ten times lower, but the biggest headaches were the olympiads—they’re hard to host on dedicated servers. You have to either keep a lot of idle hardware and overpay, or… Anyway, it’s really wasteful.
How do you use the Virtual Private Cloud?
We use it to its fullest extent; we didn’t just set up ten servers and then forget about it. Everyday we add or delete something (we use Terraform): either we’re deploying something, testing something, or managing loads.
Cloud servers themselves are more convenient since they start up fast, they’re fast to make, and you can use them like an easy-to-use dedicated server or cloud. We’re shifting towards the latter as much as possible: over one hundred virtual servers, automation, Ansible, Consul, we’re moving now to Docker—everything right as it should.
How is the VPC convenient for Uchi.ru?
We can configure the cloud under load… It’s more like this. Firstly, we can quickly deploy productions. Using the API, we can do this even faster and automatically. We use Terraform, which works with OpenStack. And it’s a good thing you have OpenStack.
Secondly: We’re not affected by hardware problems: burnt out disks, memory—that’s all on your side. And that’s also convenient.
And this, you know, is a major change. We can now deploy external productions that are ready for users in half an hour. And because of this we’ve had new reactions in the company: developers aren’t afraid of making new services; they know that what they make during the day can be used that evening. The company knows that if it needs to host an event, they don’t have to give two weeks heads-up. With dedicated servers, I haven’t seen anything connected in less than three days, and for these three days you have to stay on the phone the whole time, otherwise the network won’t connect, they won’t split the RAID properly…
Have you found any drawbacks to the cloud?
One thing is that bare metal options have better performance when the resources are all yours. Take a database: virtual disks write slower than physical ones, which is why we still rent dedicated servers from Selectel, and these can still be connected to virtual machines in one infrastructure.
Why kinds of problems do you have to solve on a daily basis?
Business never gives us any tasks in terms of servers, monitoring, or backups; these are engineering issues, and they just have to “make sure everything works”. Our first assignment is a stable, fast, and beautifully working production. The second is creating environments for developers: making test environments, releasing their parts. There are hundreds of applications, and if we did everything manually, it would be a huge mess; we try to automate everything: releasing applications, monitoring, logging.
If we were hosting on our own hardware, we’d still have to do our own virtualization, make our own mini-Selectel. It’s almost impossible to host these big modern web apps with lots of services without virtualization.
But you still keep databases separate?
No, but this is the only case. If a database isn’t under a lot of stress, we try to keep it in the cloud. For us, the more we have in the cloud, the better it is. The more we can cut expenses on memory, disks, administration, etc., the better. And if we can do it in such a way so that we’re not even affected, it’s perfect. If there’s something up with a server, we write a ticket, you fix it and don’t distract our engineers. And we’ll write new code and features better. This is something we really value.
For us, it’s best when we can just forget about the servers and Selectel. And, actually, that’s what it’s like, even though we handle 500-800 requests for each production in OpenStack, return traffic at 50 Mbps… And there aren’t any problems. It works, and that’s it (laughs).