пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Проджект-менеджер в IT — это динамичная и востребованная профессия. Здесь важно владеть управленческими навыками и разбираться в специфике ИТ. По данным 2024 года, средняя зарплата проджект-менеджера
составляет
около 200 тысяч рублей в месяц. По
данным
HeadHunter, в августе 2024 года руководитель проектов занял четвертое место в списке самых востребованных профессий в IT-сфере. Разбираемся, кто такой проджект-менеджер в ИТ, как им стать и какие навыки и компетенции нужны.
Кто такой проджект-менеджер
Проджект-менеджер (Project Manager, PM) в IT — это специалист, отвечающий за успешное планирование, выполнение и завершение IT-проектов. Это может быть разработка программного обеспечения, запуск веб-приложения, внедрение информационной системы или создание мобильного приложения. Основная цель проджект-менеджера — обеспечить выполнение проекта в рамках установленных сроков, бюджета и с соблюдением требований заказчика.
PM в IT координирует работу команды разработчиков, дизайнеров, тестировщиков и других специалистов, выступая связующим звеном между клиентом и командой.
Чем занимается PM
Проджект-менеджер ведет все этапы работы: от планирования до сдачи готового продукта. Он должен организовать процесс так, чтобы проект был выполнен в срок, соответствовал требованиям и укладывался в бюджет. Его работу можно разделить на несколько этапов.
Подготовка проекта. На этом этапе ПМ определяет цели проекта. Он общается с заказчиком, чтобы понять, какой результат нужен. Затем формирует техническое задание, в котором описываются ключевые требования. ПМ оценивает доступные ресурсы, такие как бюджет, команда и технологии. Здесь важно выявить возможные риски и ограничения.
Планирование. Проджект-менеджер составляет детальный план работы. Он делит проект на этапы и задачи, определяет временные рамки. Также продумывает бюджет и назначает ответственных за выполнение задач. Важно учесть все детали, чтобы процесс был прозрачным и понятным для команды.
Исполнение. Во время выполнения проекта проджект-менеджер управляет работой команды. Он проводит регулярные встречи, следит за прогрессом и помогает решать проблемы. Постоянная коммуникация с участниками проекта — важная часть его работы. Менеджер мотивирует команду, следит за рабочей нагрузкой и предотвращает выгорание сотрудников.
Контроль процесса — еще одна важная функция проджекта. Он отслеживает выполнение задач с помощью специальных инструментов, таких как Jira, Trello или Asana. Если появляются изменения в требованиях, он оперативно вносит корректировки. Также менеджер решает проблемы, которые могут замедлить работу.
Завершение проекта — это сдача готового продукта и подведение итогов. Менеджер проверяет, чтобы результат соответствовал требованиям заказчика. Затем он организует финальное тестирование, презентацию продукта и сбор обратной связи. После этого проводится анализ проекта, чтобы понять, что получилось хорошо, а что можно улучшить в будущем.
Какие навыки нужны проджект-менеджеру
Проджект в IT должен обладать разнообразными навыками, которые мы традиционно делим на жёсткие (hard skills) и гибкие (soft skills). Жёсткие навыки связаны с технической стороной и управлением процессами. Гибкие навыки помогают эффективно взаимодействовать с людьми и адаптироваться к изменениям.
Хард скилы
Управление проектами. Проджект-менеджер должен хорошо разбираться в методологии. Это могут быть технологии Agile (Scrum, Kanban), Waterfall или их гибридные версии. Также важно уметь пользоваться инструментами для управления задачами. Например, Jira, Trello, Asana или Monday.com. Пригодятся навыки составления roadmap'ов и gantt-диаграмм для планирования и визуализации работы.
Agile — это гибкая методология управления проектами. Она основана на разделении работы на небольшие этапы (итерации). Команда часто предоставляет результаты заказчику. Agile позволяет быстро реагировать на изменения и учитывать пожелания клиента. Популярные фреймворки Agile — Scrum и Kanban.
Waterfall — это классическая методология управления проектами. В Waterfall работа делится на последовательные этапы, которые выполняются один за другим. Каждый этап начинается только после завершения предыдущего. Основные этапы: планирование, проектирование, разработка, тестирование и внедрение. Waterfall подходит для проектов с чёткими требованиями и стабильными условиями.
Знание основ ИТ. ПМ нужно базово разбираться в процессе разработки программного обеспечения. Он должен понимать этапы жизненного цикла разработки (SDLC), иметь общее представление о языках программирования и фреймворках. Большим преимуществом будет понимание тестирования, DevOps-практик, работы с API, базами данных и облачными сервисами.
Управление бюджетом. Еще одна важная часть работы. Проджект должен уметь прогнозировать затраты, планировать использование ресурсов и разбираться в ключевых метриках эффективности проектов: ROI (окупаемость инвестиций) и KPI (ключевые показатели эффективности).
Софт скилы
Коммуникация. Эффективное общение с командой, клиентами и руководством — основа успешного управления проектом. Главная функция проджекта — объяснить задачи, донести ключевую информацию и разрешать конфликты.
Организационные навыки. Важно уметь управлять временем, приоритизировать задачи и следить за несколькими процессами одновременно. Хороший тайм-менеджмент помогает избежать хаоса в проекте.
Лидерские качества и мотивация. Проджект-менеджер должен уметь вдохновлять команду, поддерживать позитивную атмосферу и помогать сотрудникам справляться с трудностями.
Адаптивность. В условиях изменчивого IT-рынка необходимо быть гибким и уметь быстро реагировать на новые вызовы. Проджект должен быстро находить решения, даже в условиях неопределённости.
Эмоциональный интеллект. Эмпатия, понимание эмоций и умение предотвращать конфликты или выгорание — ключевые навыки для комфортной работы в команде.
Сколько зарабатывает проджект в ИТ
Профессия Project Manager в России пользуется стабильным спросом. Компании ищут специалистов для работы над цифровизацией бизнеса, созданием новых продуктов и поддержкой существующих проектов. На российском рынке встречается много вакансий. Так на ноябрь 2024 года
на hh.ru
можно найти 4 758 вакансий. В крупном бизнесе такие специалисты востребованы и получают достойную оплату.
Позиции IT project manager.
Источник.
Зарплатные вилки варьируются в зависимости от региона, уровня компании (стартап, крупный бизнес), опыта и масштабов проекта.
Джуниор (начинающий PM): от 70 000 до 120 000 рублей.
Мидл (опытный специалист): от 130 000 до 200 000 рублей.
Сеньор (руководитель крупных проектов): от 200 000 до 400 000 рублей и выше.
Подведем итоги
Проджект-менеджер в IT — это интересная, динамичная и востребованная профессия. Спрос на таких специалистов стабильно высок, а рынок предлагает хорошие перспективы для карьерного роста. Эта профессия подходит тем, кто умеет эффективно коммуницировать, принимать решения в условиях ограниченных ресурсов и управлять командой для достижения целей.
Что это вообще такое?
Docker Compose является инструментом для определения и запуска контейнерных приложений. С Compose вы получаете возможность настраивать службы используя файл YAML. С помощью одной команды Compose вы создаете и запускаете все службы в соответствии с вашей конфигурацией.
Установка начинается с создания каталога проекта:
$ mkdir composetest
$ cd composetest
Создайте файл под названием app.py и вставьте в него следующие данные:
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.
'.format(count)
В нашем случае название хоста - redis, который использует порт 6379. Создайте файл под названием needs.txt в каталоге вашего проекта и вставьте его в:
flask
Redis
Теперь следует написать код для файла Dockerfile, содержащий все необходимые переменные для среды разработки.
В каталоге вашего проекта создайте файл с именем Dockerfile (файл будет определять среду приложения) и вставьте следующее содержимое:
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
Определение сервисов осуществляется при создании файла с именем docker-compose.yml в каталоге вашего проекта со следующей информацией:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
На основании содержания файла происходит запуск двух сервисов: Web и Redis, а в дальнейшем вы можете вносить в этот файл различные БД и иную важную информацию.
C помощью команды Compose создайте ваше приложение, после чего из каталога проекта запустите приложение, запустив docker-compose. Вот так:
$ docker-compose up
Creating network "composetest_default" with the default driver
Creating composetest_web_1 ...
Creating composetest_redis_1 ...
Creating composetest_web_1
Creating composetest_redis_1 ... done
Attaching to composetest_web_1, composetest_redis_1
web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
redis_1 | 1:C 17 Aug 22:11:10.480 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 17 Aug 22:11:10.480 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 17 Aug 22:11:10.480 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
web_1 | * Restarting with stat
redis_1 | 1:M 17 Aug 22:11:10.483 * Running mode=standalone, port=6379.
redis_1 | 1:M 17 Aug 22:11:10.483 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
web_1 | * Debugger is active!
redis_1 | 1:M 17 Aug 22:11:10.483 # Server initialized
redis_1 | 1:M 17 Aug 22:11:10.483 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
web_1 | * Debugger PIN: 330-787-903
redis_1 | 1:M 17 Aug 22:11:10.483 * Ready to accept connections
Compose извлекает образ Redis, создавая образ для вашего приложения и запускает выбранные службы. В этом случае код копируется в образ во время сборки. Как вам такое?
Теперь попробуйте ввести http://localhost:5000/ в браузере, чтобы чекнуть запущенное приложение.
Если вы используете Docker для Linux, Docker Desktop для Mac или Docker Desktop для Windows, то теперь веб-приложение должно "смотреть" на порт 5000 на хосте Docker. Введите в своем веб-браузере адрес http://localhost:5000, чтобы увидеть сообщение Hello World. Если не сработает, вы также можете попробовать зайти на http://127.0.0.1:5000.
Если вы используете Docker Machine на Mac или Windows, используйте ip MACHINE_VM docker-machine для получения IP-адреса вашего хоста Docker. Затем откройте http://MACHINE_VM_IP:5000 в браузере.
Вы должны увидеть сообщение в своем браузере:
Hello World! I have been seen 1 times.
Переключитесь на другое окно терминала и введите docker image ls, чтобы вывести список локальных образов/контейнеров. Вывод на этом этапе должен показывать redis и web.
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
composetest_web latest e2c21aa48cc1 4 minutes ago 93.8MB
python 3.4-alpine 84e6077c7ab6 7 days ago 82.5MB
redis alpine 9d8fa9aa0e5b 3 weeks ago 27.5MB
Важно: Вы можете просматривать запущенные контейнеры с помощью Docker Inspect Tag или ID
Запустите docker-compose из каталога вашего проекта во втором терминале, либо нажмите CTRL + C в исходном терминале, где приложение уже запущено и отредактируйте файл Compose.
Отредактируйте docker-compose.yml в каталоге вашего проекта для внесения той или иной правки в веб-службе
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
environment:
FLASK_ENV: development
redis:
image: "redis:alpine"
Новый ключ редактирует каталог проекта на хосте внутри контейнера, что позволяет изменять код без необходимости перестраивать весь образ. Ключ среды устанавливает переменную FLASK_ENV, которая сообщает о запуске в режиме разработки и перезагрузке кода при изменении. Важно: этот режим должен использоваться только при разработке.
В каталоге проекта введите docker-compose up, чтобы создать приложение с обновленным файлом Compose, и запустите его.
$ docker-compose up
Creating network "composetest_default" with the default driver
Creating composetest_web_1 ...
Creating composetest_redis_1 ...
Creating composetest_web_1
Creating composetest_redis_1 ... done
Attaching to composetest_web_1, composetest_redis_1
web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
…
Поскольку код приложения теперь добавляется в контейнер с помощью тома, вы можете вносить изменения в его код и мгновенно просматривать изменения без необходимости перестраивать образ.
Измените сообщение в app.py и сохраните его:
Hello from Docker!:
return 'Hello from Docker! I have been seen {} times.
'.format(count)
Обновите результат в вашем браузере (нажмите F5 или Ctrl + F5) . Приветствие должно быть обновлено, а счетчик должен увеличиваться.
Вы можете поэкспериментировать с другими командами. Если вы хотите запускать свои службы в фоновом режиме, вы можете сделать следующее:
docker-compose up and use docker-compose ps to see what is currently running:
$ docker-compose up -d
Starting composetest_redis_1...
Starting composetest_web_1...
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------
composetest_redis_1 /usr/local/bin/run Up
composetest_web_1 /bin/sh -c python app.py Up 5000->5000/tcp
Команда docker-compose run позволяет вам применять одноразовые команды к вашим сервисов. Например, чтобы увидеть, какие переменные среды доступны для веб-службы:
$ docker-compose run web env
Выполните команду docker-compose –help, чтобы увидеть весь список доступных команд.
Если вы запустили Compose с помощью docker-compose up -d, то нужно будет остановить ваши службы после работы с ними, для этого поможет команда ниже:$ docker-compose stop
Если хотите полностью уничтожить контейнер, используйте команду down.
Итак, у нас загрузилось ядро операционной системы. Далее отрабатывают системы инициализации операционной системы. Три варианта: SysV, systemd, Upstart.
Init в стиле SysV
Init в стиле SysV данная процедура инициализации, самая старая она более классический Unix вариант инициализации операционной системы. Для того, чтобы понять, как происходит инициализация необходимо понять, что такое режимы загрузки (они же runlevel), разобраться как между ними переключатся, рассмотреть работу со службами.
Обычно есть 7 уровней выполнения по умолчанию:
Выключение
Однопользовательский режим (чаще всего используется для отладки и настройки операционной системы)
DebianUbuntu по умолчанию
RedHatSuse по умолчанию текстовый режим.
WildCard (программируемый режим, можно сюда поставить любой)
RedHatSuse GUI (Graphical User Interface)
Перезагрузка.
Но существуют операционные системы, где 10 уровней по умолчанию. Конечно речь идет о самых распространенных ядрах и сборках *nix образных операционных системах.
Для дальнейших пояснений, как работает инициализация в стиле sysV нам необходим операционная система CentOS 5.4 или ниже, потому что в более новых операционных системах данный процесс давно уже заменен. Отроем файл настроек текстовым редактором vi или любым другим удобным для вас.
Мы можем увидеть содержание файла. Те самые уровни о которых шла речь выше. Плюс прописан уровень используемые при загрузке по умолчанию. Строчка id:3:initdefault:
Мы данный параметр можем отредактировать и например сказать, чтобы операционная система загружалась по умолчанию в Single Mode например.
Если мы посмотрим далее файл, мы можем увидеть настройку, которая описывает действия нажатия клавиш Ctrl+alt-delete. А также наглядно прописано, что запуск определенного уровня - это запуск определённого скрипта. Все скрипты запускаются из папки /etc/rc.d/
Все дальнейшие варианты инициализации растут, вот из этого варианта. И этой процедуры инициализации. Перейдем в директорию, где лежат все скрипты инициализации и выполняются данные скрипты при старте системы.
В данной папке куча скриптов, которые запускают определенные службы, например, ssh запускает демона ssh для подключения клиентом по 22 порту. Т.е здесь куча служб и запускаются они этими скриптами. Если мы например хотим остановить какую нибудь службу то набираем ./rsync stop , ну и соответственно ./rsync start для запуска данной службы. Аналогично мы можем управлять через команду service, например: service rsync restart . Поднимемся на уровень выше cd ..
Найдем все файлы, которые начинаются с rc. Для этого набираем: ls -l | grep rc. В результате мы увидим несколько скриптов.
Посмотрим rc3.d . А для этого перейдем в эту директорию. В ней можно увидеть кучу скриптов. В вариации Ubuntu современной и затем в вариации CentOS 5.4
Те скрипты, которые начинаются с буквы K, эти скрипты при старте убивают сервис, те скрипты, которые имеют первой букву S запускают сервис. Ну и соответственно порядковый номер исполнения скрипта в очереди. Для каждого runlevel свой набор скриптов.
Основные команды
Init управление инициализацией с помощью нее можно перемещаться между runlevel.
Telinit управление процессом init , в старых дистрибутива использовалась именно эта команда.
Wall вывод сообщения пользователям системы
Halt - выключение компьютера
Reboot перезагрузка компьютера
Shutdown - запланированное выключение
Service service_name start|stop|reload|restart
Для того, чтобы перемещаться по уровням загрузки, нам необходимо понять на каком уровне мы находимся сейчас. Набираем runlevel . Соответственно, если мы хотим переключится telinit 1 отрабатывают скипты мы попадаем в однопользовательский режим 1.
Для того, чтобы послать сообщение все пользователям на данной машине необходимо набрать с соблюдением регистра wall "Abrakadabra". У всех пользователей появится данное сообщение на экране.
Для выключения сейчас компьютера можно использовать shutdown h now.
Init в стиле Systemd
Init в стиле Systemd более современная система инициализации операционной системы Linux.
Необходимым элементом работы системы systemd , являются Unit. Unit- это модуль которыми оперирует systemd:
.service службы
.mount точки монтирования
.device устройства
.socket сокеты
Если при работе в консоли мы не указывает расширение юнита, то в принципе system может догадаться в каком случае, что используется. В операционной системе существуют 2 папки в которых хранятся Unit:
/usr/lib/systemd директория с Units по умолчанию, в которой создаются units при установке какого либо программного обеспечения.
/etc/systemd директория с управляемыми Units. Тут лежат те Unit которыми может управлять админ, добавлять , редактировать.
Посмотрим, что находится в данных директориях переходим в /usr/lib/system
Нам интересны 2 директории system и user.
Содержимое папки system выглядит вот так. В данной директории лежат все необходимые Units для системы в директории user для пользователя. Картинка будет примерно аналогичная.
Директория /etc/systemd.
Тут точно также есть две папки system и user, а также конфигурационные фалы. Данные конфигурационные файлы и отвечают за настройку systemd. Это те файлы которые пришли на замену /etc/inittab, предыдущей версии инициализации операционной системы. Файлы юнитов в директориях system и user мы можем редактировать для каких-то своих целей и даже писать targets.
Далее мы можем посмотреть запущенные Units. Для этого мы можем выполнить systemctl команду, она отвечает за все действия с systemd. Для примера команда systemctl list-units нам выведет все запущенные Units, сокеты ,устройства ,точки монтирования.
Можно посмотреть юниты, которые не стартанули systemd failed. А также мы можем управлять юнитами systemctl status|start|stop|restart crond.
Так же Systemd работает с Target (целями).
Есть target которые работают так же как runlevel в классической процедуре инициализации, они не пронумерованы в отличии от runlevel у них есть конкретные имена. В табличке можно посмотреть какие target соотносятся с какими runlevel. Их этих target может быть несколько, потому что target бывают не только загрузочные. Данная система использования target обратно совместимая с системой инициализации. Для переключения мы можем использовать команду telinit. Сами по себе target есть некая группировка юнитов, последовательность вызова юнитов. Это может быть target последовательного вызова нескольких служб и ниже стоящий target.
Текущий уровень мы можем посмотреть командой runlevel. По умолчанию это будет 3. Далее мы можем написать systemctl list-units --type=target
И можно увидеть, что находимся на 3-м уровне также т.к target соответствует. Так же мы можем переключатся между runlevel командой telinit. Например, для перехода в однопользовательский режим telinit 1. А так же мы можем использовать через синтаксис systemctl isolate reboot.target.
Для того чтобы поставить какой-то загрузочный target по умолчанию, необходимо отредактировать загрузчик, вставить параметры ядра, которые будут запускаться. Или сделать проще командой systemctl set-default f multi-user.target (использование например 3 runlevel по умолчанию).
Одной из особенностей system является интересная система журналирования journald. Демон журналов. Эта система уникальна тем, что собирает информацию из разных источников событий и привязывает их к конкретным юнитам и сервисам. Благодаря этому мы можем всю диагностическую информацию просматривать в одном месте. Соответственно находить неисправности и их устранять.
Работает следующим образом:
Journalctl f - показывает события по мере их возникновения.
Journalctl n 10 вывод последних 10 событий
Инициализация Init в стиле
Инициализация Init в стиле upstart это система инициализации, в том стиле которая задумывалась для Ubuntu, и заменила процедуру инициализации, которая пришла из Unix стандартную init процедуру. Процедура инициализации upstart контролирует инициализацию демонов и служб в течении загрузки системы и их остановку если у нас система выключается или нужно переключится в другой режим. Основное отличие от классической процедуры инициализации в том, что задачи и службы останавливаются по событиям и сами события могут генерироваться задачами и службами, могут приняты быть от любого процесса системы. Могут быть службы перезапущены в автоматическом режиме если они вдруг были завершены в аварийном режиме. Еще одно отличие в том, что у данного режима инициализации есть задачи (tasks). Основными понятиями являются службы и задачи. Основное отличие службы от задачи в том, что служба перезапускается если была аварийно завершена, а задача нет.
Процесс инициализации системы по upstart берет конфигурацию из файлов каталога /etc/init каталог файлов-заданий (jobs). Каждый файл отвечает за запуск каждого задания или службы и должен заканчиваться с расширением .conf . Уровни инициализации остались те же самые. Определение и переключение между уровнями выполняются теми же командами, описанными выше. Изменился файл, в котором мы описываем runlevel запуска по умолчанию. И для управления upstart используется утилита initctl.
Как мы видим в каталоге /etc/init находятся конфигурационные файлы Jobs. Каждый отвечает за запуск отдельной службы. Смотрим файл конфигурации простейшего файрвола операционной системы cat ufw.conf
Как мы видим ufw стартует при условии, описанном start on, выключается на определенных runlevel. Файл конфигурации с runlevel по умолчанию находится в файле cat /etc/init/rc-sysinit.conf
Управляются службы простыми командами status ufw start ufw stop ufw. В данной статье мы рассмотрели различные вариации инициализации. Думаю, информация будет очень полезной.
