Full transcript
Вступление
0:00But for DevOps , it wasn't clear to me what that actually includes . I moved to another company because my boss went there . And they also ask us about it , like ... Like , yeah , I was just supporting someone there . Well , I wish it would start already . Not a problem , but it's just like ,
0:16you're not good enough , we're not hiring you . If you want to participate in a mock interview for a DevOps engineer position , at any grade , starting from intern , junior , middle , to senior — it doesn't matter — then write to our Telegram channel . All links will be in the description under this video and also in the channel
0:33description . Every one of our mock interviews includes , of course , the classic part of any interview , such as the introduction , the technical part , and questions on topics related to a specific discipline or technology , be it Linux , Ansible , CI / CD , and so on . But the most main and important part is
0:50the last one — the feedback . That is the feedback we give to the candidate after they have shown their best during the interview . Feedback allows you to see your strengths , your weaknesses , areas for growth , to notice some mistakes , or perhaps , conversely , to have those details pointed out that you hadn't noticed , but which are positive
1:09features . If you are interested in mock interviews , resume reviews , DevOps best practices , and the specifics of passing interviews in the DevOps field , then be sure to subscribe to the channel , like the video , and join the Telegram group . Well , I also started my journey in IT a
Introduction
1:30long time ago , starting with telecom , then I decided that I knew enough about networks . I needed to level up a little bit with computers . Back then , there wasn't really any kind of plan . I got a job at a company as an admin . Yeah . And then , somehow , through word of mouth ,
1:52some clients appeared . I realized I could try my hand at any-key IT support and combined it by finding a job with a 24 / 7 - on-call shift , but not as a security guard , also in IT . So I combined it with IT support , but then I realized that support wasn't my path ,
2:14because the clients are all different , everyone has their own thing , and there's no way I could develop a single solution and install it for everyone , so to speak . Yeah . And so , at one of my support jobs , in the corporate chat — or rather , a mailing list — I saw an
2:35opening for an on-duty Linux administrator and realized that this was a way to get away from general support , to smoothly transition out of it , and start moving along the path of Linux . And then it turned out that there was less on-duty work there than I had expected . Yeah . I eventually
2:58switched to a five-day week and realized that Linux was the right path . I’d worked with Linux in IT support , but only at a basic level ; this was full-blown enterprise . I realized I’d only seen the tip of the iceberg and finally saw the whole thing . I started
3:22developing in that direction , and then I moved toward DevOps , also somewhat by accident , because projects came up that required Kubernetes knowledge . I thought , " That's interesting , I should learn it . " And you know , once you know Kubernetes , you start getting pulled
3:44into DevOps tasks , like application deployment . I’ve been moving in that direction bit by bit , and it feels like I’ve found a path that’s comfortable , allows me to grow , earn money , and keeps my brain sharp . So , something like that . That was a bit
4:06long . Sorry . No , it was actually good . Yeah , yeah , it was great . Yeah . Okay . And regarding various introductions . Many people , well , some people talk about their marital status or what they’ve been up to . Right .
4:31Basically , everyone positions themselves however they want . Okay . Are you working from the office or remotely ? Currently fully remote . Actually , that format is a bit uncomfortable because ... Seriously ? Full remote can be a bit depressing
4:51because you're at home , and home is your workplace . Right . And a full-time office is also depressing because , unfortunately , I live quite a way from Moscow , so I have to commute for about 2 – 3 hours . Round trip . That’s a lot
5:14of time , and it’s a shame to waste it . That’s why at my previous job we had a hybrid model . Meaning you could come in whenever you wanted ; you could work from home or show up at the office . And it was perfect , because if you woke up with a headache , you’d just
5:29work from home . Or if you missed your colleagues , you’d say , " I'm going to the office today , let's grab coffee or something . " And chat about the news . Then you go to the office . Right . Switching back and forth depending on things — sometimes you have chores to do right after work , and if you have to
5:51commute , the time is already gone . So , I’m a fan of the hybrid model . Uh-huh . Cool . I think the last time I worked from an office was back in the fall of 2015 . And I haven't been there once since then . I was in the office
6:12once the year before last in the fall . I even had a kind of culture shock . I was honestly horrified , to be fair .
Опиши идеально место работы
6:20Yeah . Uh , well , okay , fine . So what does a workplace that is , like , truly ideal look like in general ? What is even in it , in that workplace ? What are its main parameters ? Well , it's hard to say , I'm a fairly undemanding person ,
6:40so I can work in any conditions . Yeah . I don't know , is it okay to name companies here or not ? Yeah , however you like , okay ? You can name companies if you want , or talk about , well , some tasks maybe that you performed there or something else . Well , I mean ,
6:54well , I'm only talking about the office and the workplace . Well , if I can't name the company , I'll just say that if you want , go ahead , name them , no problem , it's your call . It's CROC . Yeah . Uh , in terms of the office and the whole organization there , I really
7:14liked it . Like , it was the best thing that ever happened to me , not that I've worked in many places , but it's definitely number one . Yeah . Uh-huh . And why ? Yeah . Ah , well , the office itself is beautiful , the location is convenient , plus the cafeteria is in the building ,
7:34well , right there . In general , well , I was really comfortable there . Uh-huh . And yes , perhaps that's what influenced me to start liking hybrid work . I see . Ah , good . Uh , so , I'll try to change it up a bit , uh , maybe you'd
7:56like to talk about this future job from the perspective of what role you would perform as a specialist or what kind of tasks you would solve ? So , from that point of view , how would this job look perfectly in general ? I can't say . I
8:19don't have that vision yet . Uh-huh . Well , it's not like I want a job with such and such parameters . So far , the jobs I've had , everything was basically fine there . I'm like , " Well , it's natural that there's a water cooler and cookies here , for example . " Yeah .
8:38Uh-huh . That's how it is everywhere , right ? If there's no coconut milk coffee in the office , I feel like it's not even an office at all . It's just terrible . Yeah . Okay . Well , basically , as for the format , yeah , it's just like a regular interview where we talk , but
8:56at the end we'll have a feedback session , and during the process I'll be typing away mercilessly on my keyboard . And , well , that will probably be audible , but it's not because I'm chatting with friends , it's just that I need to , you know , jot down some notes . So there . Okay . Alright then . Let's go .
9:16There are a lot of different technologies written in your resume . I'll probably start our technical part with the things that are written right in the resume . Right . You mentioned
Администрирование репозитория Harbor
9:28Harbor repository administration . Tell me , why was it chosen , what did you do there , and in what capacity was it selected ? It wasn't me , it was chosen by my predecessor , and I inherited the task of maintaining it . And , actually , like , now another environment is being
9:52set up , for which I decided not to reinvent the wheel , but to use that same Harbor . Basically , just because the environment is isolated from the internet , everything necessary needs to be uploaded there in advance , so we need some kind of local repository . I took a look , and , well , in principle ,
10:12it deploys quite easily , but , well , I poked around the repositories , the repositories . Uh-huh . Okay . And where does it store the data ? Unfortunately , for now , it's in a mounted directory on a separate disk . Uh-huh . Right . So , there's no talk of fault
10:32tolerance there . Uh-huh . And how could that be improved ? Well , set up another Harbor and synchronize the disk somehow via well , if you use some network storage , then we'll run into the fact that the network storage itself can fail . So ,
10:53it's easier to just set up another one . So , and one Harbor . Well , then you'd need to organize a full-fledged cluster with Pacemaker , I guess , or maybe proxy it somehow . Through all of that . Well , because I don't know if Pacemaker can
11:13even manage Harbor , probably not . Right . Well , overall , I'd probably set up something behind , you know , a Virtual IP , and two Harbors with shared storage ; if one host dies , the Virtual IP comes up on the other , and DRBD
11:33switches to the second node . Well , something like that . Uh-huh . But that's only possible in networks where you can directly assign your own IP addresses and have , well , the entire L2 domain . And if you can't manage , well , the network subsystem , maybe Harbor has other data storage
11:54options , not just on disk ? It's not specified , but I’d guess it might be a hint about S3 . Uh-huh . Right . But then S3 would need to be made fault-tolerant somehow . Well , or use a cloud one , but in an isolated environment , everything is local here . Just getting a bit ahead of things . Our
12:17project also plans to have its own S3 . Yeah . And it's organized using MinIO there . I haven't studied how it's set up yet . So , well , I looked at MinIO , yes , looked at S3 , how to deploy and scale it . Right . But I haven't had practical experience with it . Actually ,
12:38that's why I took this job , because there are many interesting things to get hands-on experience with . Yeah . And I put it on my resume because I've already tinkered with them . Well , it depends on the questions and how deeply you need to know it . Uh-huh . And generally , does Harbor have any other , well , maybe additional
12:57capabilities for image storage , or can it do anything else with them ? Well , as I understand it , it can store everything , charts , some artifacts that are created by other systems . But
13:18I didn't go into those details . The specific task was to store images . Can it perform any security scanning on those artifacts ? I saw something like that in the settings , but I didn't look into how it works . Uh-huh . I think they even , uh , yes , they
13:39suggest installing something , but it's disabled by default . I didn't turn it on to avoid any surprises for now . Uh-huh . Okay , good . All right , then . Mm . So , you also have a description of
Вопросы по Мониторингу
14:01Prometheus , Grafana , and Alertmanager . A monitoring stack like that . Why exactly this monitoring stack ? Historically , it’s the most popular one in all projects . I actually started with Zabbix and , like , I even used Zabbix for my own
14:26projects . Uh , because I knew it better back then . Right . But practice shows that new projects come along , and it's Prometheus and Grafana everywhere . Well , you can attach Grafana to Zabbix . Right . But it's mostly Prometheus , Grafana , and Alertmanager . Uh-huh . Right . So I had to learn it . And , well ,
14:45some points I know well , some not — well , what I've encountered , I know well , and what I haven't , I know it exists . I don't even know , it depends on the situation . Okay . So , what are the advantages of Prometheus compared to Zabbix , or , you know , the other way
15:02around , Zabbix versus Prometheus ? Well , honestly , I think if you want to , you can set up either one exactly how you need it . Yeah . And , in my opinion , at Zabbix I didn't get to use Zabbix Agent 2 . But , I think it basically acts as a universal exporter that can pull out
15:22anything you need . What do you mean ? So , well , how what do you mean ? What does " pull out anything you need " mean ? What do you mean by that ? Well , for instance , what an exporter provides for metrics from a host , the Zabbix agent probably can too . I had to
15:46set up monitoring for Postgres databases , but it basically boiled down to just configuring a template and entering the credentials to connect to the database . Yeah . And it returned the same things that , say , some Postgres exporter would . So that’s why , wait ,
16:07let me think , Docker also needed monitoring , and Zabbix Agent 2 handled that with a template too . It pulled some information about the containers there . Yeah . Well , I set it up , and then I handed it off to my colleagues for ongoing support and monitoring .
16:28Yeah . But , there is some data , and they never came back saying that something was missing or stopped collecting . So that’s why Uh-huh . So does that mean there’s no point in using Prometheus for new projects at all ? Should we just install Zabbix for everything ? No , no , not having to install a bunch of these
16:50exporters for different applications . Just Zabbix . Makes sense . And he can't answer that . Yeah . Okay . Alright then . Probably , probably just whoever knows Prometheus well , they’re the ones who install it .
17:10Yeah . Uh , well , from my experience , it feels like Zabbix is better suited for , uh , hardware monitoring , or something non-standard like that . Yeah . And Prometheus is more geared toward cloud technologies . Something like that . But ,
17:32uh-huh . There's such a fine line , I don’t know , I can't really draw it . Uh-huh . Yeah . Because I've had to set it up in different ways . Uh , let me finish quickly . Uh , at my previous job , there was a Zabbix system that was provided
17:53as a service . Yeah . So we offered customers , uh , to install a Zabbix proxy on their end . And then we’d set up , roughly speaking , Zabbix and monitor the base state of their hosts , and if needed , there were a couple of cases with Postgres and Docker . Yeah .
18:15And , actually , even if it turned out that Prometheus would be better at collecting something , there was no option to install it , so we had to ... monitor all of that with Zabbix , even if it turned out that Prometheus would collect something else better .
18:35Cool . And how does automatic discovery of new resources for monitoring actually work in Prometheus or Zabbix ? Well , in Zabbix , it's pretty simple .
18:55You need some kind of script . There are standard scripts for monitoring and discovering file systems , network interfaces , and other things . Yeah . Basically , you write a script yourself that finds ... Yes , you write it yourself , it finds the resources you need and , I think , it returns them as JSON . Uh-huh .
19:17It returns them to you in JSON format . Yeah . And then you do whatever you need to with them . Yeah . In Prometheus , there are lots of different types of discovery , but honestly , I haven't configured a single one . I’m planning to look into Consul and its discovery a bit better today . Yeah . But you just
19:39know that they exist in Prometheus and can be configured if necessary . Uh-huh . Got it . All right , then . So , there’s Grafana , and there’s Alertmanager . Uh ... what is better for sending alerts , for example , and why ? Well , I know you
20:00can send alerts from Grafana too , but it seems that Alertmanager ... can handle that more flexibly . Yeah . But I haven't had such cases , usually it’s just one or two channels , at most email and some chat , I don't know . It used to be Slack , now it’s
20:20Mattermost . Yeah . Well , sort of ... why that happened , right ? Yes . What happened . So , our project isn't large enough to need complex setups , like sending some alerts to one team and others to another . Like
20:40depending on severity , or time of day , or day of the week ; we just send everything to different chats based on the environment , but there’s no sorting by severity or anything ... like that . Are you doing that with Alertmanager or Grafana ? Yes , that’s Alertmanager . And how do you do it in Alertmanager ?
21:01Well , you set it up so that some alerts go to one channel , and others to another . By using labels . By labels . Okay . Super-duper . Nice . And how is fault tolerance handled ? With Prometheus , Grafana , and Alertmanager . How , well , do you ensure that the
21:23monitoring stays up ? Well , Alertmanager supports fault tolerance right out of the box . You specify the neighbor nodes at startup , and it connects to them on its own . There you go . And for Prometheus , well , for Grafana , you just spin up two separate Grafana instances and connect them to Prometheus . It
21:44doesn't store any data itself . All right . What about all those dashboards ? Fine . That’s possible . I've connected Postgres to Grafana for dashboard storage . Uh-huh . Yeah . And you can even connect some directory for Grafana , I think , so that dashboards get provisioned there , for
22:06example , and datasources get provisioned too . Yeah . Let's say like that . And as for Prometheus , well , actually , they recommend using VictoriaMetrics instead of Prometheus for that , right ? I was just thinking , when you were comparing what's out there besides Prometheus and mentioned Zabbix , I was wondering why you didn't mention
22:28VictoriaMetrics , but okay . Well , that's because I've only worked with it a couple of times as a user just to check something . Yeah . I've never set it up once . I know it exists and I know that , oh , gosh , basically , you can set up fault tolerance . Yeah .
22:50But that's just at the level of knowing it exists , and I don't know how to do it . Yeah . But with Prometheus , if we're talking about pure Prometheus , you either have two Prometheus instances scraping the same thing , and each has its own Grafana , and you get roughly identical results . Yeah . Or one
23:09Prometheus scrapes the other . But then , of course , you won't get fault tolerance . Well , to be more precise , if the main Prometheus goes down , the one collecting the metrics directly stays alive , and you can later restore the main Prometheus and retrieve those metrics after all . Well , I suppose
23:31it’s probably better to just spin up two Prometheus instances , and each stores roughly the same data . They scrape at the same time . Yeah .
Внедрял ли что нибудь с нуля?
23:41Okay . All right . Tell me , have you ever set it up ? I mean , I understand that Prometheus , Grafana , Alertmanager were things that already existed , and you were just maintaining them . We talked about Harbor , too . You said someone else set it up , you were maintaining it , and now you're trying to reproduce it
24:02in a new environment . Uh-huh . Can you give any examples where you had a task that required choosing a technology , coming up with how to implement it , deciding on the implementation , and then actually executing it ? Are there
24:23any examples like that ? Could you throw some of those out ? Just thinking . Uh-huh . Well , probably not in a big , global sense , because my entire career path has been tech support , and tech support is about maintaining what others have already built . That’s why
24:45projects where I’m the one making the decisions , I’ve only really reached that at this current job . And even then , when trying to ask , " Why do we need to do this ? " Well , how should I put it , yeah ? Why something was done a certain way , or why we’re using this specific
25:04database or something else . I’m often told now that it’s an architectural decision . I mean , there are architects who say , " We’ll do it this way , set us up a Postgres database . " So. And I don’t think about whether to choose Postgres , MySQL , or some other exotic
25:25option anymore . I just go and do it . Oh , that makes sense . But still , there must be tasks where you had to deploy a service from scratch , configure it , and figure things out . Can you give any
25:46examples of that ? I suppose there might be some . I can't recall right now . If it comes up later on , then I’ll let you know immediately . Okay . Okay . Uh , yeah . Uh , okay . Alright then . So , we talked about deploying new
26:09services . Let’s talk about horizontal
Вопросы о горизонтальном масштабировании
26:14scaling . How do you perform horizontal scaling ? Any examples of horizontal scaling ? In general , or in relation to something specific ? Basically , right now we’re doing this thing where I read your resume and ask questions about it . You have " horizontal scaling " written there . I
26:34see , it's definitely listed as a separate point . It’s in parentheses under your current job . I mean , you have " infrastructure modernization " written down , with " deploying new services " in parentheses . I tried asking you about that . Right , everything is clear . I'll have to do something about that later . And is this
26:58all within a Kubernetes cluster ? Well , horizontal scaling here , I just meant adding new worker nodes . Aha . Okay . Okay . Alright then . Uh , good
Вопрос по БД
27:15. So , let’s talk about databases . You mentioned choosing between Postgres , MySQL , or something more exotic . Which databases have you actually worked with ? Uh , well , MySQL , I worked with that a long time ago and barely remember anything now . So. But at my current job
27:36, we use Postgres extensively . Uh-huh . Yeah , mostly that , and ClickHouse . I have to work quite closely with those two databases . not in terms of tuning , but in terms of deployment . And developers often like to ask for a dump before they roll out changes , just in case they need to revert everything .
28:00Something like that . I see . And how does PostgreSQL differ from ClickHouse ? Or rather , in what situations is it better to use ClickHouse , and when is it better to use PostgreSQL ? I can't say for sure . ClickHouse stores data as files and
28:24groups them somehow , so some operations are performed much faster there . That's actually why we seem to use both ClickHouse and Postgres on our project , so ClickHouse does its part of the work quickly , and Postgres does everything else . Yeah . But , uh , I can't answer that
28:47question . Uh-huh . Okay . Let's talk about Postgres then . In Postgres , there are schemas . What is the difference between a database and a schema ? Yeah , I understood it as just a way to logically separate tables within a single database . Our developers it's a schema .
29:07Uh-huh . Our developers love using schemas . That's why I even had to memorize the dump flags , that you don't need to dump the whole database , but just one schema is enough , because , well , there are
29:28different teams working on microservices . And one team really loves it ; they have several microservices they're working on , and they create a separate schema for each microservice within the same database . They've really taken a liking to that . But honestly , if there are no stored
29:53procedures or anything like that , I guess a database and a schema would work the same way . It's just that , well , can a table exist in a database without being tied to any schema ? No , they are all in the public schema . Yes , exactly . Well , if you just create a table
30:15without specifying a schema , it will be in the ... public public . And if you specify a schema , it will be in that schema , right ? Yeah . You mentioned that you've done these Postgres schema dumps , and learned to dump just one schema . What is the custom format in dumps ?
30:35I think , well , there is the plain format , and there is the custom format , I think it's just for compressing it right away , like archiving , basically . But from what I remember from the documentation , it definitely compresses . What other perks it has , I can't recall .
30:56Yeah . And right now I prefer the directory format , because then you can run it in multiple threads and from what I've observed , it's like it dumps each table into its own file in a separate thread , and accordingly , if
31:17you have many tables , it goes faster . There . Uh-huh . Awesome . That's awesome . Okay . Ah , alright . So you need , you have PostgreSQL , right ? You need to add a new user . How would you do it ?
31:37Well , it depends on the task . Let's discuss it . Since our Postgres is installed and configured using Ansible , everything is kept in GitLab . So , to add a user , I go in , find the host vars for the
32:00necessary host , add the user there , run the role , and check that the user was created . That's beauty . But since the role is written for Postgres , and we also have a government client using Postgres Pro ,
32:21unfortunately , we have to do it manually for now because Postgres Pro stores things in slightly non-standard locations . Well , more precisely , not non-standard , but in different locations . And so , if you just run the Postgres role , it will do something completely different from what is needed . I've set a goal for myself in
32:43my spare time to try and configure the Postgres role's host vars so that it works for Postgres Pro as well , without creating directories where they aren't needed , but configuring the correct files . Well , like Uh-huh , the pg_hba.conf is stored in a
33:04different place , postgresql.conf is stored in a different place . The data directory is in a different place there . In general , Uh-huh . Many , many settings that specifically , yes , are set by default in the Postgres role , they are not the same in Postgres
33:24Pro . And , well , you need to find them all and set them . Yeah , that's cool . Listen , let's talk about the databases ; when you want to add a user to Postgres , you run a role , and it adds the user . What is it actually doing ? Well , really , what's
33:47happening there ? Judging by the fact that it was written in Python , some script just executes a query in the database . Yes , I'll put a query . Well , CREATE ROLE or CREATE USER . And how is access granted to them ?
34:08Ah , I don't know exactly , but I know Postgres has some sort of socket . A socket . There . And users connect to it to gain access to the database . There . How it works in detail , I probably
34:28can't say . There . But I know that you need to specify it in the Postgres role for such cases if Unix sockets are used . Uh-huh . What to specify ? Sorry , I didn't quite hear that . Specify the become user . Ah , the user . Uh-huh . Well , yeah , to
34:51like ... dash-e . All right then . Let's
Вопросы по Ansible
34:55move on to Ansible . We haven't really started talking about it yet . So , what is the difference in Ansible , or when do you use playbooks , when do you use roles , and when do you use collections ? Actually , I don't like using other
35:16people's roles because roles are usually written by people over a long time , they end up being bulky , and when you run them , a bunch of tasks get executed that you might know nothing about . That's why I try to use third-party roles with caution . Yeah .
35:37But , essentially , a role , as I see it , is just a well-structured playbook . Yeah . A role is just a well-structured playbook , right ? I mean , you have templates in a specific directory , files in a specific
36:00directory , variables declared in a specific directory , tasks in a specific directory . That's all . If it were all in the form of one long script , it would probably be hard to find things and read through it all . Yeah . Other than that , I think it's more or less
36:20the same thing , yeah . And , as for collections , well , I only know how to install them via the AUR a little bit . So , the main advantage of roles over playbooks is that things are neatly organized into folders , which is
36:41why people write roles . Well , let's say so , yeah . In practice , I've encountered otherwise . Uh-huh . Okay . Let's leave it at that , yeah . Well , about collections then .
37:03Well , about collections , I only know that you install them . But , how they work inside Ansible . Well , they're probably just some Python scripts that do something , and you reference them somehow , but I don't know , I'm just fantasizing . Or are they Python scripts at all ?
37:26Well , probably . And what language are these playbooks written in ? Or ? No , well , they are written in YAML format . In YAML . Where are the Python scripts there ? No , but YAML is clearly not enough to
37:47do anything on the server . So. So. How does it work under the hood ? It's some kind of Python magic . Pythonic Python magic . And when you write your own playbook , do you do any Python magic ? No. The magic happens when I run it for
38:08execution . Uh-huh . Okay . All right , good . So , collections we just sort of install . There’s something inside them . Playbook . And roles are like , a more structured playbook . But why ? Can you try to reason why they came up with
38:30three different entities ? Oh , oh , that’s a tough question . Just try to , well , obviously I’m asking a question you don’t know the
38:51answer to . Or maybe it just slipped your mind because I sprung it on you unexpectedly . In general , well , nobody knows , but it’s 10:00 PM right now . I mean , at 10:00 PM , people aren't usually at their most productive . So , the exercise here is just to try and show your line of reasoning , to show
39:12yourself from that side . Uh , well , maybe , maybe this will help you . Why do they write roles instead of playbooks ? Or , well , why were playbooks invented , why were roles invented , why were collections invented ? When is it
39:32better to use playbooks or when is it better to use roles for some reason ? Why did people , well , they weren't using them , why did they go and create new entities ? Uh , for some reason . Well , I think a role is just a logical continuation of a playbook . My , my , my
39:55thesis is still the same , that a role is a well-structured playbook . It's just that they kept writing playbooks , they became huge , and they decided , well , something has to be done about this . So they took and invented roles , like yeah . And you said something
40:15interesting , I also noted it for feedback . I use other people's roles with caution because God knows what they stuffed in there . I'm relaying it in my own literary words , you said something really elegant . And , uh so it
40:38turns out , when , what would it actually be cool to use someone else's roles for ? Well , what are the advantages of that ? The advantage is , why reinvent the wheel if it’s already been invented ? It’s just that in this case , you need to spend some
40:59time to , say , read the manual for the bike , where to sit , where the handlebars are , where the pedals are . So , well , and how should I say , a well-written role is very flexibly , in my opinion , customizable . That's it . And , accordingly , you want to get the
41:20result that I need , and not the one that you get when running it with default values . Uh-huh . Accordingly , you have to go and see what the values are , what tasks are being executed , and so on . Well , um , from my recent experience , I had a
41:40couple of cases where I really had to dive deep into all of this , for instance , a project with a government client using Astra Linux , where I couldn't install the ClickHouse role right away . Uh-huh . So I started reading the errors , and it turned out
42:03the role checks for the OS Family . It’s either RedHat or Debian . Right . And Astra Linux turns out to have a different OS Family . What Astra Linux ? Hm . I’ve never worked with it . Damn ,
42:23tough one . Right . Even though it’s basically Debian in disguise . Right . But you see , they have their own OS Family . And , well , once I realized what the issue was and found the task that checks this , I figured I’d just pass the required OS Family when running the
42:44playbook . Right . Only then did it work . Right . And the second case was also with ClickHouse , also with that role ; it turned out that the variable was simply missing in the playbook . It was some user property , I can’t recall exactly which one , I think . Oh , I won't guess . Well , let’s say it was a list
43:05of databases the user is allowed to connect to . Something like that . And there was simply no variable to control that . And there was no block in the template to set it either . Ah , yes . And I needed that to be configured for this
43:26user . So I had to — since all our Ansible roles were localized — I had to edit the role , add this variable to the custom vars , so not to the role directly but to custom vars , and then in the role’s template , add logic : if
43:48it exists , then take it and run it through a loop to add those databases . Right . And if not , then don't do anything . That’s why , well , that’s why I don't like using third-party roles ; because you have to sit down and figure out if the role can actually do the specific thing you need .
44:09Figure it out , right ? Great example . Cool example . Nice . Alright then . And what are handlers in Ansible ? Handlers are certain tasks that need to be executed . If a certain condition is met . So , I mean , if if another task , I
44:30don't know , not to lie , but finished successfully , for example . Uh-huh . And what are they needed for anyway , these handlers ? I mean , what is their function ? Ah , well , they are most often used for reloading or restarting services . Right . They are needed so that at once , well
44:49, if we change config in ten places , there's no point in reloading the service every time . You can do it just once . That's why we specify which handler to use if this one completes successfully . And then , in a separate list , the handlers that follow . Uh-huh . Beautiful . That's beautiful .
45:12Okay . Alright then . And we have a great interview today because , uh , in short , I can just read the technologies written in the resume and ask something about them . This is , actually , a big gift . So , tell me something about
Вопросы по Terraform
45:29Terraform . Why is Terraform needed ? What is the general benefit of it ? Well , if we look at it globally , it's roughly like Ansible . Uh-huh . You store some configuration of something somewhere , and you can easily restore
45:50it if it's lost . And at the same time , if nothing has changed , then nothing will change during deployment . Meaning idempotency , that's the smart word . Right . And Terraform is needed for managing infrastructure . Right . Uh-huh . Ah , well , I guess it's
46:11something like that . Why are Terraform modules needed ? Oh , I've only encountered Terraform modules in one place . And even then , uh , I was just stepping in to help a colleague . In general , I haven't had much practice with Terraform modules . Right . But my
46:31colleague and I concluded that they are evil . Again , just like with roles , if you didn't write them yourself , because we also inherited a Terraform module that was clear to the person who wrote it . And what does it do ? What does it do ? Uh it somehow lets you not write a
46:54bunch of code , probably , but somehow write one module that will work in different ways . Honestly , I might be lying here . Right . But the thing is that , again , a situation arose where I needed to deploy a VM with a non-standard template , but it wasn't
47:14obvious where to specify this template . And I had to open all those files of this module , look at how variables are passed there , to understand , yes , where to stick this new variable that wasn't originally intended , so as not to break the whole infrastructure during deployment .
47:36Again . That's why I just don't have much practice . My first impression is like , well , it's questionable , but okay . And , and , and , and , what are workspaces ? I have no idea what they are at all .
47:57Okay . What is state ? Ah , the state that Terraform remembers , what the structure should be there . Uh , damn , I tried to wrap my head around it , but I never really got it . We have three states . What we described in the
48:19manifest , in the Terraform manifests , the Terraform state , and the infrastructure state . And I forgot what is compared with what and in what sequence when we apply it . So , Terraform state is , apparently , the state that the last Terraform applied . Uh-huh . Yes . Uh-huh . Okey-dokey .
48:41Alrighty . Super-duper . So , need to ask something about phone . And what are , uh , locks or lock files , or how is the
49:04lock mechanism actually implemented in Terraform ? So that two people don't apply their changes at the same time . Uh , I probably can't say , but , uh , well
49:24, it's probably necessary that they indeed don't start making changes at the same time . I know that Terraform can store something in GitLab and on S3 . I think , or Git , but to be honest , I've never looked into that question . Yeah . Well , it's not like we often have
49:47to use it in our project ; I mean , it's needed periodically , but not every day . That's why collisions don't occur . In larger projects , we probably would have had to deal with this issue . Yeah , exactly . Okay . And let's talk
Вопросы по Linux
50:12about Linux troubleshooting . Let's talk about problems with Linux . In general , what utilities are used for troubleshooting Linux ? Well , I would start answering this question from another angle .
50:33Uh-huh . Ah , in general , uh , eh , so , let me think . But the main troubleshooting method is , if the host is accessible ,
50:54to log in and look at the logs , for example , look at the latest logs , either logs of a specific service or kernel logs . Yeah . Uh-huh . And that's probably the first thing I do . Problems often arise from running
51:17out of space , so I check with df , whether there is any space left . Aha . And that classic question , when they say , look , you check with df , there is space , but for some reason you can't write a file . And I'll tell you another case , besides
51:37the one that everyone has probably already learned . I encountered this with SoE , and the same thing happened with Postgres , by the way . Postgres says it can't create a file in the directory . So , I check , I check the
51:59space , everything is fine , the inodes are fine . Yeah . But the file really can't be created . Yeah . Here's another case for you : it turns out there's also a limit on the number of files . In the directory , four . Beautiful . Yeah , beautiful . Yes . Perfect . Perfect . It
52:18turned out to be some god-forsaken forgotten replication that was creating files . And , actually , when we connected a proper replication , the two of them quickly filled up that space — well , actually , the normal replication wasn't creating them , or rather it created them and then immediately picked them up , the replica took them . Yeah . But
52:40that replication that wasn't working , it started to prevent the normal replication from creating files . Actually , that's how we figured it out — that the space didn't run out because it was full , but because you just can't create that many files in a directory . Uh-huh . Yeah . Also , another case from my
52:59practice , uh , when you mount something into a non-empty directory , and du shows you the space of the mounted disk , but df will show it taking into account the
53:22populated , unmounted one . Yeah . Yeah . I mean , it's from that same series of " space ran out , " we went to check , and du shows one thing , while df shows another . We scratched our heads until , well , in the end , we were given carte blanche to mess with the server however
53:44we wanted . And it turned out that the directory where something was mounted — I don't remember how , I think at some point the mounting failed , and some data managed to be written into the directory that was , relatively speaking , on the SDA disk . And then , when the mounting was restored , and
54:05data started being written to the other disk , that data hadn't gone anywhere . Yeah . And , actually , later , when it filled up somewhere else and we started cleaning , we looked and saw that everything was already cleaned , but the space wasn't being freed up . Uh-huh . We had to scratch our heads there too .
54:24Uh-huh . Totally . Listen , do you have any experience with arrays ? I set up MDADM a long time ago , but I haven't done anything like that for a long time . Yeah . Well , I mean , uh , since moving to Linux
54:46, I've practically not worked with physical servers . Yeah . And if I did have to work with them , it was usually a hardware RAID , which is already seen as a single block device . Yeah . Uh , for fault tolerance , well , it makes no sense to keep it on one host , so the main solution in those projects
55:07was DRBD . Uh , okay . Okay . Mm . Alright then . Let's ask something else about Linux to solidify this part . Uh , m - maybe what
55:29kinds of exit codes do processes have ? Well , zero and non-zero . Uh-huh . And how do you check it ? In a variable , I think , a question mark . It’s stored in ` echo $ ? ` . Uh-huh . Well , more precisely , if you
55:50ran a command and it did something , then you can check its exit code . Right , and if some arbitrary process started and then finished , I can't say how to check it . Alright then . So , there are some server
Вопросы по CI/CD
56:09names here that we won't mention in this recording . Yeah . And let’s move on to GitLab CI / CD . Writing GitLab CI pipelines . Let's ask something about that , I guess . What are the most common
56:30main stages of a pipeline ? Well , some tests , some build , packing into Docker images . Uh , deploy . Well , probably those .
56:50Uh-huh . Ah , okay . And what mechanisms or practices are used to make a pipeline run faster ? Mm , I can't say . This is one of the areas I’ve encountered at my new job .
57:14And I don't have much practice or knowledge yet , so ... Maybe , maybe you could try to reason it out ? Well , maybe parallelize something . Yeah . Yes . But hmm , out of everything I listed , I don't know what could be parallelized .
57:34Uh-huh . Anything else , perhaps ? Speed it up . How to speed it up ? No , probably no ideas right now . Uh-huh . Okey-dokey . Mm , and how ,
57:59generally , do you choose so that , for example , build or deploy happen on different machines , like , well , how is it done in GitLab ? There’s a pool of
58:20runners . Yeah . And oh , you can somehow , damn , I think they have labels too , and you can somehow specify which runner to run them on . Something like that , probably . Uh-huh . Okay . And what are GitLab CI
58:42What ? Triggers . What are triggers ? I don't know , I haven't encountered them , or maybe I did but didn't know they were triggers . Uh-huh . Well , it’s logical that it’s some action , probably , that executes under a certain condition , but I don't know .
59:02Uh-huh . Okey-dokey . All right , fine . So
Bash
59:09, there are also Bash scripts here . I can't help but ask , why do people write " set - e " in Bash scripts ? " Sed - e " ? No , not " sed " , it's " set - e " . It writes . Something like that existed , I don't remember what it's for .
59:29Uh-huh . And how do double square brackets differ from single square brackets ? Uh . In double square brackets , I think conditions are structured a bit differently . And I think you can do more and have more flexibility there . Uh , I can't say . I've used both
59:54depending on the situation , but I don't remember the differences by heart . Uh-huh . All right then . So , Vlad , go ahead and take some initiative , ask something too .
Вопросы по контейнеризации
1:00:06How is containerization implemented in Linux ? By what means ? Any specific features , well , by using namespaces and control groups , and sometimes overlayfs is also added here . Uh-huh . There . And how , well , you just gave
1:00:29such a cool example about how mounting one filesystem over a populated one caused the data to be hidden . What caused this process to happen ? How does it occur ? If we go down to a slightly lower level , I probably can't explain it .
1:00:50Uh-huh . Well , I just know that there's a virtual file system that basically takes all the write and read requests and then somehow , using a driver , translates them to the actual file system on the device . So , it seems that
1:01:10when we mount , all requests are directed to the file system that's on the other device , and not not to the one we mounted it onto . Something like that , probably . And it's also interesting that you
Вопросы по lvm
1:01:25mentioned RAIDs , what about LVM ? Surely you've worked with it . What kind of so-called parts or entities exist in this context ? Well , there are physical volumes , volume groups , and logical volumes . Uh-huh . But , well , there's a physical volume and there's , like , just a device
1:01:47, how are they ... I mean , well , there is just a block device , we can mount it directly to a directory . But if we specifically want to use LVM , we need to create these entities . But why do we need to create them ? Like , what does a physical volume actually do ? Well ,
1:02:02based on what it was created for , to somehow get around the limitations of physical disks , well , there must be some sort of entity , to , well , uh ,
1:02:23roughly speaking , some kind of tag , to understand that this device is used for LVM . Uh-huh . That's why , well , Physical Volume , its essence is probably just that it creates this tag somewhere on a block device , I guess . Uh-huh . Uh , and in principle , how are
Вопросы по kubernetes
1:02:46these concepts related , Docker and Kuber ? How close are they to each other ? Kubernetes simply brought container management to a higher level than Docker . Because in Docker , well , how does a container start , well , in the
1:03:07simplest case , on one host , but if you want to start it on another , you have to connect to the other host and somehow move the image there , or , well , okay , via a registry , let's say , well , uh ... you need to know if the host is unavailable and the container needs to
1:03:28be started somewhere else . Also , well , in general , well , uh-huh . Docker doesn't have such tools , which is probably why Kubernetes I agree , was probably invented . And what is used in Kubernetes for working with containers ? Docker ?
1:03:51Ah , well , some container runtime is used there , I remembered that word . Yeah . And , well , I think now Docker is probably not used anymore . Now containerd is replacing it , and some other words I've heard , cri-o ,
1:04:12something like that . But in fact , I probably haven't worked with anything other than containerd . Uh-huh . Well , more precisely , like I just see that it is being used . Yeah . And how do you evaluate your experience , do you have more experience working with Kubernetes as a containerization
1:04:34and orchestration tool , or do you also have a lot of experience purely with Docker ? Probably less experience with Docker because it's a kind of thing where , well , in some of my , say , pet projects , I needed to build something , so I started Docker quite quickly , saw how it works ,
1:04:56but if something is more complex , well , from what from what I've dabbled with , helping a friend , it's Mailcow , a custom mail server . It's on Docker Compose , well , a little bit better than Docker . You can specify dependencies
1:05:17there , and , um , I think , some liveness / readiness probes , to use Kubernetes terminology , can also be configured there . Yeah . Well , and then , like manage it all with one command , rather than starting each container individually . Yeah .
1:05:38And I haven't really had to work with pure Docker at work everywhere . Well , more accurately , at my current job it's all Kubernetes . Uh-huh . Yeah . Well then , uh , tell me , how can one limit , well , and generally regulate resources in , say , a pod ? How
1:05:58is that done ? What can be set ? Limits and requests can be set . Uh-huh . And you know , when you specify limits and requests , for example , specifying CPU , and it's not just one , you can specify that ... Yeah , milliCPUs . Uh-huh .
1:06:19Yeah , that was cool when I found out about it . And why is it done like that ? What , how is that ? What is that ? Well , uh , to flexibly manage CPU time . Basically , we need , like , all processes require some time to process their
1:06:44work . Yeah . And to differentiate all that , you can divide the core time , conditionally , even more finely . Uh-huh . Uh-huh . And what if a situation occurs where limits weren't set anywhere , but a service was launched ,
1:07:05and it just started devouring memory , and it totally ran out on the node , and everything around it stopped . What happens if we don't specify limits ? Well , like , all the memory will just be eaten up by some process . We actually
1:07:29had a case where a node disappeared from monitoring . Yeah , and we found out that some process , some pod , was running on it Uh-huh . I don't recall what exactly . But it didn't have any restrictions set in the
1:07:52deployment . Yeah . And it , basically , ate all the memory . Yeah . And the node stopped responding . Yeah . And I had to , well , I figured it out from the logs later , because then I had to restart it , because I couldn't even connect to it . And how did you fix this problem
1:08:14eventually ? Oh , yeah , yeah . Well , we just set the limits . Uh-huh . Uh-huh . And how , generally , well , let's list the entities in Kubernetes , the main pillars ? What does the cluster actually rest on in principle ?
1:08:35Do you mean pods or deployments ? Like that . Yeah . Well , not just pods and deployments , but ... yes . What is the cluster composed of , in principle , those basic components ? So , in the cluster , the main thing is the API
1:08:55server , which actually receives requests and responds to requests from other components . It has the standard ETCD storage . I honestly didn't know , and I don't know , maybe there could be something else , but I've only encountered ETCD . Uh-huh . And there's a controller that is trying
1:09:18to bring the cluster to the state that is described and stored in the API . There's a scheduler that assigns pods . And then on the worker nodes , the kubelet is responsible for starting the pods .
1:09:38There are also network plugins , but networking is kind of my weak spot . Yeah . Uh-huh . Okay , good , got it . And here's a question in connection with that . What will happen ? To the pods ? In case ETCD
1:09:59fails , they will continue to run . But if we try to deploy something at that moment , nothing will happen ; we probably won't even be able to connect to the cluster .
1:10:20Uh-huh . But the pods and so on , everything will stay alive , right ? Well , they are , how should I say , managed by the kubelet , which gets commands — from whom does it get commands ? From the scheduler , probably . Yeah . And since the scheduler won't be able to access the API server to check
1:10:40if a pod needs to be deployed somewhere , and the controller won't give it a command to deploy a certain number of pods , it won't do anything . I had a situation just like that . No. Some time after I had just started and began to
1:11:02get hands-on with everything in the project , I was given an environment where my predecessor had somehow deployed ETCD on two nodes . Uh-huh . Yeah . And I didn't know that . And it so happened that on one of the nodes where ETCD was , it was also doubled up — it
1:11:23was simultaneously a worker node . And it suddenly ran out of space . So ETCD stopped . Yeah . And it's a good thing it was a test environment , so nobody died or ran around in a panic , but I had to rack my brain on how to restore everything and deploy another node so
1:11:45that ETCD could form a quorum . Yeah . And , well , I don't know , I got a lot of gray hair back then , because nothing was working , and although it was a test environment with no critical impact , the developers were like : " Is it not ready yet ? " " Still not ready ? When will
1:12:06it be ? " Yeah . Uh-huh . So , yeah , well , I mean , something works , but nothing new will appear . And again , if something happens to a node , no one will know the pod is no longer available , but it needs to be restarted elsewhere . Right , well , it's good ,
1:12:28I’d certainly like to end the technical questions on this happy note , but I still want to ask : is there any way to secure it , maybe do something , for example , with ETCD ? I mean , it's critical if it gets lost , dies — and that's it . What are the options ? ETCD has snapshots , you can take
1:12:48snapshots . There you go . Plus , what actually saved me was that our cluster was deployed using Rancher . Right . And some smart people there set it up so snapshots are taken every 6 hours . Yeah . And so , not much was lost in the end .
1:13:11Uh-huh . Exactly . Right . It turned out you can actually point Rancher to that snapshot . Well , it had to be copied to the nodes that were supposed to be launched , where it would be running . Yeah . And tell it to restore from that snapshot . I just
1:13:32checked which one was the latest , because it takes snapshots on different nodes at different times , it’s configured somehow like that . So , the snapshot is taken every 6 hours , but not on every node , just on one of the nodes that has ETCD . Right . And I had to copy it to all three nodes and
1:13:54tell it to restore from it , and it just recovered . That’s a good ending to the story , a positive one . Well , I think I'll wrap it up on the technical side here . Sasha , the floor is yours , I suppose . What’s next , are we moving on to another part , right ?
1:14:14Yes , another part . Yes , yes , yes , in principle , yeah , we'll probably start moving toward
Feedback
1:14:20feedback . You know what I'm curious about ? And you , um , uh if we're talking about the level , I keep trying to talk to you about the ideal way
1:14:41of working and about that . So , uh the level you're aiming for , what is it , for example , junior , middle , senior , principal , something like that . How do you evaluate yourself , anyway ? Well , I think I don’t quite reach
1:15:03senior level yet . Uh-huh . Right . But maybe something like middle plus . Uh-huh . Okay . Yeah . Yes , that’s about right . Excellent . Sounds good . Alright then , let’s go ahead . Oh , I clicked something by accident . Yes , I was opening the feedback window and
1:15:26missed . So , let's move on to the feedback , I guess . And we’ll talk about that . Right , I'll start here then . Well , look , first of all , I always mention this , the basic requirements were met : good internet , video and
1:15:46audio connected right away , no issues with cameras or anything like that . Nobody is running around in the back , no one is rushing in . You even have a cool board with sticky notes behind you . And it looks like it's , well , not a fake background . I mean , it’s a real
1:16:07working atmosphere , honestly . That was an attempt at Kanban , but , anyway , I decided that electronic is better after all , so these are just some leftover tasks . Uh-huh . Yes . Yes . So , the basic requirements are definitely met . That’s super cool , that’s super
1:16:28good . Yeah . You lead the discussion well , no questions there . You know how to make a good impression . Often , when people do interviews or when someone is being interviewed , they keep in mind
1:16:49that the interviewer is trying to hire people they would personally want to work with . I mean , you’re not just choosing people who match your technical needs , but also those who are more or less compatible with you . So in
1:17:10that regard , you’re doing great , you know how to be likable and you answer questions quite honestly . If you don't know something , you just say , " I don't know . " Here , perhaps there is some room for improvement in that , well , sometimes I had to , if not pull words
1:17:30with pliers , at least really insist that you try to reason through it . Yeah . I mean , it’s an important part of the process during an interview or any kind of technical talk . It’s important to show that , even if I don’t know , I’m going to try to
1:17:52figure it out , because , well , that's important . Well , I don't know , at work there’s always something that you don’t know , it doesn’t matter how many years of experience you have in a specific project or in general and so on . So , like , well , you need to work on this a little bit . And if you are asked
1:18:13a question and you don't know the answer , but you think that , well , you could roughly do something with it , well , you can say something like : " Guys , I don't know , but I can reason a bit , make a guess , " — well , like , if they say : " You don't know — okay , let's move
1:18:27on . " That's , well , like , okay , you don't know , but they might give you a chance to think it through , and that way you can also position yourself a bit better . So that’s , ah , well , probably a small recommendation
1:18:49like that . Ah , a good resume , I mean , there were many different technologies listed there . It was a gift for me , because , like , I didn't need to moderate anything , just read from the sheet what was written and ask about it . That's it . Mmm , eh , it would probably
1:19:07be good to write in the first line what people or the employer is most interested in , or what you could really talk about well . Because , well , it's highly likely that people read from top to bottom and
1:19:27their eyes will catch on that . Well , actually , I did exactly that exercise . I asked you about Habr , which is in your second line of the resume . I see , I see . Yes . Yes . And you tried several times during the , uh , resume [ discussion ] ,
1:19:47you tried to veer off , tried to veer off to these databases . Uh , and I didn't veer off on that story , because , well , like , it's interesting experience , but it's not always , well , not often used , in short . That's it . Ah , well , can I make a remark ?
1:20:07Go ahead , go ahead . I once watched , uh , this video about how to go through an interview in general , and I remembered thoughts from it , that you should , in theory , write your resume for a specific job vacancy , along the lines of what you were saying . That's what ,
1:20:29like , and I even tried to do it once , but unsuccessfully . And , in general , then I sort of forgot about it . Well , what you just said reminded me that , you know , if an employer is looking for a specific employee for certain tasks , why not write that you know how to do
1:20:45them , instead of mentioning a bunch of other things you do ? That means it won't be useful here . Yes . Yeah . Yes . When we were doing the introduction , I tried to present myself as someone who is involved in some kind of education . Although , I definitely spend less than 10 % on that . 5 % of my
1:21:06life . There . Just for fun , to practice in the interview . We have an educational project , so I talked about my experience in education . So , anyway , the second point is about Habr . Some minor difficulties arose there , in short . Need to , uh , work on that a little bit . Uh Next , we had monitoring :
1:21:31Prometheus , Zabbix , and so on . The funny thing is that this theme keeps recurring ; throughout everything we asked , it’s clear that you have practical work experience . It’s clear that you , as they say , touched it , dug into it deeply , and you definitely
1:21:52understand it . But with how it is , uh , how to discuss it , or how , uh , um , uh , well , how should I put it , with this description of the technology , there is
1:22:13, well , some difficulty . I mean , the problem : what is the difference between Prometheus and Zabbix ? You really advertised Zabbix , which is very good because , on one hand , you talked in detail about how you use Zabbix , its features , and demonstrated your practical experience , but it turned out that Zabbix seems better than
1:22:32Prometheus . I won't say that it is 100 % not so , but in my experience , or where things are heading , everyone uses Prometheus or VictoriaMetrics , and they don't really use Zabbix , because the auto-discovery problem in Zabbix is poorly solved . So. It is clear that you work with Alertmanager ; you
1:22:53demonstrated that . You demonstrated deep , unexpected experience with Grafana and storing dashboards in Postgres . You mentioned data sources and everything else . So that is very good . Uh and next , we discussed , we
1:23:14discussed database questions . And here again , it's clear that you worked with both Postgres and ClickHouse . And this is my favorite question : what is the difference between a schema and a database ? I said right away that yes , I know , there's blah blah blah , and explained it all in detail . You talked
1:23:36about the differences with Postgres Pro , and it was actually a really cool story about how you explained that there's a certain role for managing Postgres , but it doesn't work for Postgres Pro . So that’s why , that’s why I want to improve it in this specific way . That is just , of course ,
1:24:00uh — the heart of an employer who wants to hire someone who constantly wants to improve things , it should definitely beat a lot faster at stories like that . That is wonderful . As for custom formats , or pg_dump with custom formats , it didn't work out , but you proposed
1:24:21an alternative . Also very good . And here , there are , like , no questions . It's clear that the experience might be average , but , in short , it is present . You managed to demonstrate it . Yeah . Then we talked about ... um , actually , this is interesting too : regarding
1:24:42Postgres , ClickHouse , Harbor , or Prometheus , the way you positioned yourself was a little , uh , mm a little bit out of sync with how you rate yourself . You say : " I'm like , well , a mid-plus , maybe one step away from
1:25:04senior , " and that , like , followed from your resume . That's why , well , I chose those kinds of questions . But when we tried to talk about , say , the level of choosing a technical solution or building a service , you were just — I don’t know , like someone from the
1:25:26crowd set it up and you just maintain it . Yeah , tell me something , I mean , I noticed it several times and started asking you directly : " Okay , so what did you actually set up yourself ? " And I think that if you prepare for this question in advance , it's impossible
1:25:47not to find an answer . I mean , 100 % you have the experience , because from what you’re telling me , surely there’s some service you set up from scratch . Well , it can’t be that there isn’t . There definitely is one . That's why you just need to be a bit better prepared on this topic , so that when they start
1:26:08asking you : " Tell us about your biggest project , your greatest achievement , what you did there , just something like that , " you have a pitch ready and don't end up saying , " Yeah , I just supported someone else's work . " Although , that , uh , immediately hurts your grading significantly . I mean , a person who
1:26:31supported someone else's work and a person who can talk about how to build something technologically from scratch — that will , of course , lead to a very , very different assessment of the person .
1:26:52It's just , uh — this , well , it's not even really about hard skills , it's about soft skills and how you position yourself . I mean , just this positioning of yourself , how you worked , and how you might , uh , refine that a little bit . Yeah . Mmm . Moving on , well , the reason
1:27:16I say again that this isn't a hard skill thing is because there were many cool stories where you draw things from your experience that , uh , show you as , well , a specialist , right . I mean , for example , we were , uh , talking — yeah , we had an unexpected snag there , of
1:27:38course — about these roles , playbooks , collections . But at the same time , you're explaining it in great detail : " There was this role , I passed the OS Family to it , there's this certain thing I used , ' Become Postgres ' . " " I ran Ansible using CI / CD there . " And
1:28:01generally , that's a cool approach , because that word everyone uses — I mean , the experience you're talking about , the " I did this with my own hands " part — it says that with your hard skills , everything should be , well , pretty good . That's why I , well , started , uh , at the end of that hour ,
1:28:21even though I usually ask for longer , I started to wrap things up , because , well , it felt like everything was clear . And , well , sort of , mmm , It's just about positioning ; I mean , it’s easily " googleable " : what playbooks are , when to use roles , when to use
1:28:39playbooks — it’s , like , a 5 - minute job . Yeah , yeah , about code reuse and its advantages in terms of performance , like , you know , just getting things done faster . So , you just need to state that . The same thing happened with Handlers , right ? I mean , what is a
1:28:57Handler , exactly ? Just some conditions you can set , effectively . But what kind of conditions ? I mean , what exactly can you do with a handler ? Well , no . You might say : " Well , with a handler , you can reload or restart services so you don't have to restart them ten times . "
1:29:15I mean , again , from a practical standpoint , you're saying that 90 % , well , in 90 % of cases , handlers are used like that . Everyone uses them that way , but from the perspective of discussing technology , it’s , like , well , condition operators , even though , well ... Uh-huh .
1:29:36It’s called something slightly different , which isn't a problem , but it might happen that the person interviewing you just won't want to dig into that . Like , I don't know , maybe they didn't get enough sleep , they just came from another call , they're hungry , or whatever else , and they just , well ,
1:29:57they won't want to dig into it . So , you just need to handle the presentation a little better . There you go . With Ansible , by the way , there was also a funny story , well , for me personally , it’s just ... When there's that story like " I use other people's roles with
1:30:17caution because I don't know what's in there , I prefer them to be reviewed , they need to be fixed , I write them myself , " and so on . That’s a very good story , because when people come to an interview — especially these Helm programmers , these YAML developers — who are like , " Tell me how you deploy a
1:30:36service in Kubernetes . " They say , " I find a Helm chart , edit the values , and deploy . " " It doesn't work . " " What do you do if it doesn't work ? " " I look for another chart . " " And you keep doing that until it works . " You think : " Well ,
1:30:55that's fine , of course , but from an engineering perspective , that doesn't really seem like an engineer's job . " You , well , several times , uh , when you talk about , uh , different stories , you speak in detail that , like , I prefer to dig into this , I prefer to do it all
1:31:13myself , I'm into this — that's , well , a very good way to position yourself , it's very good . From the Terraform part , well , it's clear there was some initial experience here . Well , apparently not that much , because , well , these are basic concepts , right , like modules , workspaces , state files , locks
1:31:34, and so on . There's something to look into here . Well , usually this experience is held by those who deal with AWS , Google Clouds , and , well , those kinds of , uh , cloud-oriented things . Uh-huh . Well , we have a cloud , my God , it's VMware at work .
1:31:54Right . And besides , it's some old provider , something like that . A colleague looked into it and was complaining . Right . But otherwise , uh , in practice , during my training , I mainly worked with Yandex . And , well , there aren't really any complex things there . Well , I didn't do
1:32:13any . Well , I had to create a few virtual machines there , uh , the most complex thing was that Yandex introduced application load balancers , I tried to play with them , and tried to play with network balancers . Well , for now , the way I do it is I just look ,
1:32:34Google how it's done , then I open the documentation , look at how it's specifically configured , and then I roll it out , see if it works or not , and move on . Uh-huh . Yes , yes , yes . Well , anyway , with Terraform , it is what it is . Regarding GitLab , I said everything
1:32:53honestly , I just started . Basically , well , from these answers , it's also clear . I mean , you guessed that maybe something can be executed in parallel or about caches . You still need to remember a little bit about runners , right , and pipeline triggers , yes . You need to
1:33:13google that a bit too . Right . Well , as for networking , in general , you said everything correctly there . With bash scripts , it's an unexpected trap . I mean , it seems like there's not that much . I mean , I asked something about set - e , it seems , and about the
1:33:31difference between square , round , double square , and single square brackets . These are also frequent questions . Usually , that's what they ask , so they didn't ask me . If they had , I would have learned the answer . Yes . Yes , yes . Yes . Well , there are a lot of those top 10,000 questions on
1:33:52the internet about all sorts of different things . Well , they use them quite often . So , uh , looking at Linux , it's clear the knowledge is very good , like , really good . Things like exit codes , all those funny stories about mounts , and all those answers about what Vlad was talking about . Well ,
1:34:14I’ll pass the floor to Vlad now , like . Ah , and they asked about Loverich . He likes to ask . About Yes , yes , yes . You're just like , I start asking you about inodes , like , what is an inode ? Hold my beer . Well , an inode is understandable . And there
1:34:32was another case . That was , of course , really cool . I mean , I think that's a really good prepared answer . Apparently , there was some kind of prepared answer for Loverich too . I regret not asking . Yes . My colleagues recently started inviting me to interviews as well , for people we’re hiring into our own team
1:34:50. So. And , well , I also see that we ask about Loverich too . Well , yeah , yeah , I usually ask too , because it might even be that I don't care if the person knows the answer or not , but it's interesting how they talk about it . So. Because , like , it's just
1:35:15a chance to , well , get to know the person a bit better , because it's important to know . M. Mm , who you will be working with ? If you have any questions , Andrey , you can ask them . We'll answer them . Well , actually , I wanted to write , but I got tied up and forgot . But regarding
1:35:37the DevOps stack , it wasn't clear to me what's included in the technology stack , because , well , I'm subscribed to some bot with job postings that positions itself as being for DevOps . So. And , well , I have a rough understanding of what the vacancies are , but once you get into the detailed
1:36:00description , you see who has what . I honestly haven't seen Terraform many places , although it's probably assumed that it should be there . Well , uh , how should I say , sometimes when you look at a brief job description where the technologies are listed , you're like , "
1:36:20Oh , I know 99 % of this list , " but then you finish reading the vacancy , and it turns out that was only the beginning of the list , and there's something else entirely . So that's why , what is generally included in DevOps ? Like , in your opinion ? Well , since my microphone is on , I'll
1:36:42go first , then Sasha can speak . I remember you asked about the stack when I messaged you on Telegram . Uh , what I meant by that was , you know , there are guys who , for example , don't want a long interview covering everything like Linux , Ansible , and so on . They are
1:37:00interested in just leveling up in Linux , understanding it , or maybe just k8s , and so on . That's why I asked , you know , which of these common technologies would you like to , uh , cover ? Right , yes . So here , uh , the question strongly depends on the grade the person is applying for . So , like , uh ,
1:37:25mm , firstly , the question is as follows . I mean , every company , obviously , has its own stack and its own specific stuff . If a person , for example , is applying for a level — uh , say , senior , for example , right — then it's less
1:37:45about the experience with a specific technology , a specific cloud , or anything else , and more about having a deep understanding or experience with some technology that is related to it .
1:38:08Meaning , a person should have a clear grasp or clear skills in some tool . I mean , what Vlad is saying , yes , this is mainstream , what everyone uses . But again , if , for example , for some reason you use Salt , or Puppet , or if you're
1:38:30some kind of Chef expert , don't know where you came from , but let's assume so , that will also work . That will also work . That's also fine . And if , for example , you didn't use Terraform , but used CloudFormation instead , that's also fine . But if you don't have Terraform or CloudFormation , but have ,
1:38:51say , something else , that's fine , provided it's at a level where , you know , we can talk about it in detail . Meaning , at least one thing should be well-chewed , so that you can have a good discussion about it . Like , about the fact that there are certain modules , that there are static inventories ,
1:39:10dynamic inventories . In the case of Ansible , for example , how roles , collections , and all that stuff differ . Basically , the concepts of some tool must be understood quite deeply . Well , if you're choosing what to learn , of course , you need to learn . And if we are talking about some infrastructure
1:39:28matters , yes , then some databases are definitely necessary . And if it's a database with clustering options , the concept of replication types — synchronous , asynchronous , when each is better , how automatic failover works , and how voting works . You told that cool story about etcd , right , where you
1:39:50made it clear that you shouldn't gather with fewer than three . Right . But , yes , things of that nature , you need to know them , right ? I mean , for example , you might have experience with Postgres , but on a project , they might be using MySQL , right , or something similar . Or
1:40:07you might have had experience with ClickHouse , but the project will be using MongoDB . But if you have a good understanding of at least one SQL and one NoSQL story , like Postgres and MongoDB , or Postgres and ClickHouse , for example , that's very good . There must definitely be an understanding of some message bus , right ? I mean , we
1:40:29have two standard stories : RabbitMQ and Kafka . So , it's good to tinker with one of those or at least understand the concept ; and if it's cloud , then maybe some cloud-native tools , or Yandex Cloud . Well , they probably have something too . And , of course , you absolutely need an understanding of web
1:40:50servers , the ones we aren't mentioning first in this recording . And maybe , well , HAProxy , right , what you've written down , that's cool . Uh , yeah , yeah , yeah , I wrote down proxy , but actually , I didn't do anything
1:41:13super complicated there . Right . I mean , I tried reading their documentation , but their configuration syntax is somehow quite , let's say , not similar to generally accepted conventions . So ,
1:41:33that's probably why it's difficult , mainly because of that , right ? Anyway , right now , it doesn't mean that I'm going to ask you about HAProxy . In short , there was no need to get defensive , no need to say , " I don't know anything about it . " So , this was unnecessary , you know , like , again ,
1:41:54this is , well , this is about positioning yourself , like , how you rate yourself , you should position yourself the same way . Right . Of course , all these things like containerization , I mean Docker and Kubernetes , those might not be there . I mean , it's not a must-have , even for a
1:42:16senior level it’s not a must , it’s desirable and things are moving that way , but even for seniors , it’s not a must . There are plenty of positions and places where , uh , people live without it , including on-prem and cloud . And , uh , and it's standard . But , of course ,
1:42:39if you're going to learn , you definitely should learn it . I mean , if it's missing , it's probably for others , like , for those who don't have it , it’s not exactly a blocker . In principle , any one of the things I’ve listed is not a blocker . Well , it's just , it's good to know . You definitely
1:43:00need to know some CI / CD tool . If you don’t have one , you should learn GitLab CI . It's the most popular , most widespread one right now . Um , if there's already one , even if it's something like Jenkins with that wonderful , uh , language it's written in , loved by all , you just need to know
1:43:20it well , know the basic concepts , how things are done , because you can obviously apply that later to whatever specific CI / CD tool the company uses . I mean , if you know GitLab CI and how everything is launched and optimized there , you can look for similar
1:43:44functionality in the tool that the specific project uses . Right . That's probably , probably it . And some concepts , yes , related to scaling , related to high availability , I mean , how that is applied , how it's done . You
1:44:08just need to know that in some way . Like you mentioned the " pricemaker " earlier , that was a good point . And , you just need to figure it out so you can reproduce it in the stack that the project uses .
1:44:28Uh-huh . Roughly speaking , again , if you look at the flow of job openings , the vacancies differ significantly from one another . Some people need Postgres , while others don't . Some people need ClickHouse , others don't . Some people are using Caka , for goodness ' sake .
1:44:49Where are they going to find a specialist for ClickHouse , for example ? It's unclear . Some people use Spinnaker , some use Scylla , others use Nomad . Where to find a lot of Nomad specialists in the market is unclear . Everyone used AWS , now they need Yandex
1:45:10Cloud specialists . Uh , where do you find them ? That's also a big , well , question : can a person who worked with AWS do Yandex Cloud ? Well , they probably can . Yeah . And if they have a deep understanding of it and experience , well , they'll surely figure out another cloud . And that's why , uh , well
1:45:35, it's impossible to know everything , I suppose . It's important to dig deep into what you have and be able to talk about it well . Because in the case of levels , at some point it becomes more important not just to solve a problem ,
1:45:57but to determine what the solution should be . I mean , for that , you need deep experience with whatever you're working with , right ? So , yeah , you have , say , this Kubernetes , so , in
1:46:18principle , you can already build a good profile from that . Uh-huh . Yeah . I hope we answered that . No , very insightful . Go ahead . Okay . Listen , you know what I wanted to ask ? Like , how are you how to put this politely , why did you come , like , why
1:46:41did you need the interview ? What is your goal , actually ? Well , in general , I'm not afraid of interviews . Uh-huh . Yeah . Because , uh , at my current job I've been working a little over half a
1:47:01year , and before that I worked for 10 years , six years in one company , and over three in another . And , well , I worked for six years , so I wasn't looking for a job . Yeah . And I switched to another company because my boss went there and invited me . So , there was an
1:47:20interview , but it was more like a friendly chat . Yeah . And so , well , it's scary to go when people ask you things . Yeah . And every interview asks about things differently . Some people ask one thing , others ask something else . Like ,
1:47:41I’ve had them give me ps , then awk , everything through pipes , and then ask : " Tell me , what will this command output ? " I mean , Uh-huh . right away , well , knowledge of several utilities and their flags . It’s even come to that . Some people just make up questions : " What if this
1:48:03situation arises , how would you act , or something else ? " Yeah . And , well , my heart is pounding every single time , and I’m just thinking : " I wish this would start sooner . " But as it goes on , I kind of shift my focus to the questions and calm down a bit . Yeah . Uh
1:48:22, well , I’d like to understand , how to put it , regarding what you said about resumes , that the company likely conducts interviews based on what they need . They check what’s , you know , there . But I wanted a general understanding of what they ask , like ,
1:48:45regarding the DevOps stack : what do they ask about Linux , what about Docker , K8s , CI / CD , I’d like to understand . Uh-huh . Yeah , probably for that reason . Uh-huh . Well , yeah . When I conduct an interview , I usually ask things along those lines , but sometimes I can ask
1:49:07other things if the project needs it . Yeah . Uh , okay . Well , yeah . I mean , mock interviews are , in principle , designed so you can , you know , chat and ask questions in an absolutely safe environment . Nobody will judge you or
1:49:29say : " Oh my , you’re bad , we’re not hiring you . " That is , like , really good . Yeah . But overall , this is the other side of the coin ; when you are conducting an interview , one of the interviewer's tasks is to leave , well ,
1:49:50if not a pleasant impression , you know , of the interview process , then at least a neutral one , so that even if the person doesn't take the job , they might recommend this opening to someone else .
1:50:11Yeah . Because if you start , as they fashionably say now , " grilling " the person during the interview , trying to expose them , and all that other terrible stuff , then , well , if they have self-respect — and professionals usually do — they won't want to work there at all . So , does that mean I’ll
1:50:30be getting roasted at the interview too ? Like , these roasters , they’re just like , " Hey , go work with someone else . " So yeah , that happens quite often . Well , the goal of an interview is not to scare the person or offend them in any way , but just to have a conversation ,
1:50:51find out what they can do , and make sure they don’t leave feeling , well , too dissatisfied . That’s why , usually , more or less professional interviews are conducted in a way that , you know , they won't really ... ... try to belittle
1:51:13you or anything like that . I saw , well , Vlad also heard about that interview recently . Yeah , that one was definitely a nightmare , but it’s an exception . Otherwise , interviews are usually very friendly , so there’s no need to be afraid of them . Yeah . So , are you looking for a job ?
1:51:35Uh , no . Well , look , wait , it all depends on how you look at it . I’m satisfied with my current job . Uh-huh . But if someone says , " There's an opening where you'd do more or less
1:51:57the same thing , I’m a good fit , the salary is higher , or there are other better perks , " then I’m what you’d call always in a passive search . Yeah . Uh-huh . Actually , I said I’m not demanding , and that probably plays a
1:52:17cruel trick on me in the sense that if unhealthy trends start in the company , like funding for a project drops , or maybe ... honestly , I’ve never worked with toxic people , I’ve only read about it on the internet . All my colleagues have always been excellent . Yeah . But if a situation like that
1:52:37arises , I’ll just keep putting up with it . Until , I don’t know , the last drop overflows the cup . So that’s why , how should I put it , I , well , fine , maybe I should be more proactive about
1:52:57it . Alright , I understand . We’ll talk a little more about it later if possible . Some , okay , fine . Come on . Yeah .