Проблемы программистов-фрилансеров и как их решить
По данным глобального опроса Payoneer, программисты-фрилансеры зарабатывают больше многих других специалистов, работающих «на удаленке». Достаточно вспомнить историю бывшего инженера Google Джеймса Найта (James Knight). После ухода из компании 27-летний девелопер смог увеличить свой заработок вдвое, параллельно путешествуя с женой по Европе.
Фриланс постепенно становится не просто «символом дауншифтинга» — разработчики-фрилансеры зарабатывают не хуже своих коллег из корпораций, зачастую работая с большим комфортом. Но популярность этого формата приводит к растущей конкуренции среди самих фрилансеров — к примеру, на фриланс-бирже Toptal.com отбор проходят лишь 3% кандидатов.
Чтобы соответствовать предъявляемым требованиям и пройти конкурс, нужно не только иметь голову на плечах, но и пользоваться современными технологиями, упрощающими разработку.
Одной из таких технологий является IaaS.
1. Тестирование в облаке: качественный QA позволяет не потерять клиентов
По данным исследования компании AppDynamics, занимающейся APM-технологиями, 90% пользователей перестают работать с приложениями из-за технических сбоев. Поэтому тестирование ПО является критически важной частью работы разработчика.
Так как у фрилансера регулярно появляются новые заказчики, для тестов разработчикам приходится каждый раз создавать «чистую» систему, предельно схожую с целевой системой клиента. Это позволяет проверить приложение в «боевых условиях», поскольку нет гарантий, что продукт будет работать везде, если он заработал на компьютере девелопера. Для этого порой приходится перебирать различные комбинации аппаратного и программного обеспечения, на что тратится много времени и денег.
Помочь с решением этой проблемы способен IaaS-провайдер, который дает возможность быстро развернуть необходимую тестовую среду. Технический специалист и резидент Quora Спенсер Грин (Spencer H. Greene), например, отмечает, что нагрузочное тестирование приложений в системе, которая один в один повторяет целевую, позволяет наиболее точно оценить их «работоспособность».
Используя конфигуратор 1cloud, пользователи могут «поднять» виртуальный сервер за 2 минуты. В этом случае разработчику нужно лишь выбрать интересующую его конфигурацию в панели управления. Далее он может сосредоточиться на тестировании и отладке приложений.
Помимо упрощения конфигурации аппаратной и программной сред, облако также позволяет имитировать критические сценарии, недоступные в обычном тестовом окружении. Речь идет о сценариях аварийного восстановления работы сервера или, например, скачках трафика.
Согласно исследованию Gartner, в 2015 году уже 80% организаций в той или иной степени задействовали облачные структуры для своих проектов. Разработка и тестирование в облаке постепенно становятся естественной практикой в ИТ-индустрии, а потому скоро могут стать стандартом и для фрилансеров.
2. Масштабирование: когда клиентом становится крупная компания
Непредсказуемость в работе — это характеристика фриланса в целом. Приходится быстро подстраиваться под требования каждого клиента. При разработке простого приложения для конкретной ОС достаточно и одной виртуальной машины, но что делать, если стоит задача разработать веб-клиент для крупной структуры?
Одним из плюсов IaaS-провайдеров является гибкость предоставляемых услуг. Разработчики могут арендовать облачную инфраструктуру любого размера: от одного сервера до целой сети связанных между собой виртуальных машин. Стоимость напрямую зависит от мощностей арендуемого оборудования, а срок аренды может составлять как день, так и час. Такая гибкость позволяет фрилансеру экономить на инфраструктуре и платить за вычислительные ресурсы только тогда, когда они нужны для работы.
IaaS-провайдеры также предоставляют дополнительные сервисы, которые могут помочь разработчику еще лучше адаптироваться под конкретную задачу. Например, в 1cloud существует услуга «Объектное хранилище», с её помощью клиенты могут хранить практически неограниченное количество данных. Это могут быть как резервные копии файлов, так и статическое содержание веб-сайтов или записи систем видеонаблюдения (если вы, например, работаете над созданием систем обеспечения безопасности).
3. Удаленный доступ: на случай, если дома «отключили свет»
Возможность работать из любой точки мира — одна из самых приятных особенностей фриланса. Однако даже потратив время на организацию удаленного доступа к своей системе, программист вынужден следить за ее бесперебойной работой. Из-за возможных отключений электричества программист-фрилансер не всегда может надолго покидать дом. Да, существуют решения, которые в случае чего позволяют перезагрузить систему удаленно, однако даже они могут не помочь.
В конце января один из хостинг-ресурсов LKML — LKML.org — оказался недоступен. Сервер, на котором размещался сайт, стоял дома у разработчика проекта Джаспера Спаанса (Jasper Spaans). Когда Джаспер находился в отпуске, у него дома отключили свет, и из-за скачка напряжения материнская плата сервера сгорела. Поэтому он не смог подключиться удаленно и поднять сайт.
Избежать подобной ситуации помогают IaaS-провайдеры, которые предоставляют круглосуточный доступ к своей инфраструктуре. В таком решении есть несколько преимуществ:
- Разработчик не тратит время на настройку защищенного удаленного доступа.
- Инфраструктура облачного провайдера обладает высокой доступностью — 99,9% и более. При этом провайдеры, в том числе и 1cloud, предлагают денежную компенсацию в случае нарушения заявленных показателей доступности и требований SLA.
Причем IaaS-провайдер может обеспечить несколько вариантов удаленного доступа на случай неработоспособности одного из них. Недавно Microsoft заявили об обнаружении уязвимости в протоколе удаленного рабочего стола (RDP). Компания выпустила «заплатку», однако она блокирует доступ к системе, на которой патч не был установлен. При этом справедливо и обратное — обновлённая операционная система «отказывается» показывать свой рабочий стол не обновлённому RDP-клиенту.
Для разрешения подобных ситуаций в 1cloud предусмотрена возможность заходить на серверы через веб-консоль. Она отображает экран сервера даже в том случае, если другими средствами подключиться к «машине» не удаётся.
К слову сказать, после инцидента с отключением электричества Джаспер Спаанс также перенес LKML.org на облачный хостинг.
4. Защита данных: бэкапы сохраняют время и нервы
Порой даже крупные компании сталкиваются с ситуацией, когда чья-то ошибка или системный сбой приводит к потере данных. В прошлом году один из резидентов Reddit поделился историей и рассказал, как он, будучи младшим разработчиком, случайно удалил базу данных в продакшн-среде в первый же день своей работы. При этом выяснилось, что бэкапы для этой БД не восстанавливались.
Такая ситуация — кошмар для любого девелопера, особенно для разработчика-фрилансера, которому важно поддерживать свою репутацию на конкурентном рынке. Чтобы обезопасить себя, программисты-фрилансеры закупают сетевые хранилища и настраивают бэкапы, которые «отправляются» в несколько разных мест одновременно. Самостоятельно поддерживать такую систему дорого и времязатратно, плюс это отвлекает от разработки.
Облачные IaaS-провайдеры в данном случае помогают решить эти проблемы. Они освобождают программиста от необходимости настраивать бэкапы самостоятельно — достаточно указать глубину хранения копий. В 1cloud, например, параметр глубины хранения резервных копий кратен 7 дням. Само же резервное копирование выполняется ежедневно на территориально удаленный дисковый массив.
5. Коллаборация: если нужно работать над одним проектом в команде
Согласно исследованию Intuit, к 2020 году в США фрилансеры составят 40% рабочего населения. Малые бизнесы будут формировать целые сети фрилансеров, нанимая «удаленых специалистов» из самых разных сфер. В то же время 80% больших корпораций планируют значительно увеличить использование нештатной рабочей силы.
В таких условиях разработчику-фрилансеру все чаще приходится взаимодействовать с уже имеющимися в штате клиента программистами. Упростить коллаборацию также помогает облако, выступая в роли своеобразного посредника. Рабочее пространство в облаке централизованно, потому его легко сделать общедоступным. Подобное построение рабочих процессов выводит на новый уровень такие практики, как парное программирование и непрерывная интеграция.
В функциональном смысле виртуальные ресурсы не отличаются от «железных» дома или в офисе, однако при необходимости позволяют гибко управлять вычислительными мощностями. В результате фрилансер может решать широкий спектр задач, которые возникают во время разработки: от нагрузочного тестирования до облачного хранения данных.