Together with the CROC Cloud Services team, we are creating the CROC Cloud — an IaaS platform that helps the company grow and provides services to more than 300 brands. In the article I will tell you what Python developers do in the project.
How to work in the cloud
The Python developer in the CROC Cloud team is the person who develops the project. He:
- develops new services for the platform and optimizes old ones;
- develops architecture for our highly loaded scalable applications;
- adds new APIs to our cloud;
- writes unit tests;
- conducts a code review.
I ‘ll analyze it with an example. We recently released incremental disk versioning. The feature allows you to instantly create versions of the disk and quickly return it to its original state. Thanks to this, you can safely make serious changes to the system — the contents can be restored at any time.
The work of the pythonist who was involved in the project included everything from describing his own tasks to releasing features into production. Including working out its architecture and capabilities, writing code and tests.
We also recently redesigned the system for importing and exporting virtual machines. The developer responsible for it first assessed how the old version works and identified problems. And then I rewrote e and accelerated 3-5 times.
These are the main tasks. But the CROC Cloud is large and divided into subsystems, so the specific responsibilities of a Python developer depend on the direction that he develops. These can be networks and everything that is responsible for the communication of virtual machines with each other, or cloud storage systems. As well as managed databases — PostgreSQL and MongoDB, and so on — managed services like Kubernetes, and much more.
The degree of responsibility of the pitonist depends on the level. June, most likely, will just write the code, test it and release it into production. The senior should evaluate the task, understand which stack of technologies is better to use, determine the timing, coordinate and implement the full development cycle.
Communication with the customer and business tasks are taken over by the team leaders. They also monitor the synchronization of processes between subsystems.
Some tasks require changes in the “real world”, when you need not only to write code, but also to replace the infrastructure — for example, a network with a faster one. Then the developer has to partially assume the role of an engineer (or interact with engineers).
So, GPUs have recently appeared in our cloud. During the implementation of the feature, the team studied and tested the technology. Including manually inserting cards.
In addition, CROC cloud services are not only the creation and optimization of internal services, but also the solution of customer problems. Therefore, sometimes you have to deal with code in other languages and look at customer products.
One of our customers had extremely rare requests within the application. To deal with the problem, we had to check our code with which requests were processed, see how the internal utilities on which it relies work, and monitor the client service written in C++.
If there are not enough skills to solve the problem, you can always ask for help from colleagues with a different background. Or take the time and figure out a new area yourself — this is welcome in the company.
What does a Python developer need to know to work in the cloud?
Firstly, you need experience working with Python (you can still work without other competencies, but you definitely won’t succeed without this one). Separately, you should pay attention to asynchronous Python — it is quite popular now.
Secondly, it’s good to know Linux, because our code often interacts with the operating system. In addition, the developer spends a lot of time at the virtual machine stand, where he has to work with the Linux console: deploy the cloud, test the system, see what doesn’t work.
It’s also great if a person knows virtualization tools such as Docker and VirtualBox. And network protocols: HTTP, DNS, TCP/IP — and databases: SQL, PostgreSQL and so on
Of the soft skills, initiative, activity, a deep approach to solving problems and a willingness to understand different technologies, utilities and services are important.
It is also desirable to be sociable and competently conduct correspondence — especially if you are on a remote site.
Finally, the ability to work in a team is important. The task can always go beyond the competence, and it’s great if the developer can ask for help himself or help others if necessary.
What is the result?
The Python developer is responsible for almost the entire cycle of creating a project in the cloud. He builds the architecture of the service, writes and tests the code, releases the product into production, interacts with virtual machines and develops networks. And sometimes it changes something inside the server manually.
The list of tasks that a pythonist can do depends only on his skills: if beginners solve the tasks that the team leaders give them, then the seniors are responsible for setting goals, choosing a stack, and much more.
Finally, we are not limited to a narrow list of technologies. An unusual task can always come from the customer. And then you’ll have to look at his service — probably written in another language — and dig into utilities.
That’s it! Share in the comments what projects you were engaged in in the cloud and what tasks you solved.