Выдержка из текста работы
Основной целью прохождения технологической практики является закрепление навыков и умений, полученных при изучении различных дисциплин за время обучения в университете.
Воспитательной целью практики является привитие культуры работы на предприятии, развитие способности самостоятельно творчески использовать полученные знания в условиях конкретного предприятия.
В процессе прохождения практики на предприятии необходимо ознакомиться с деятельностью предприятия, выполняемыми должностными инструкциями и аппаратным и программным обеспечением. По окончании производственной практики предоставить отчёт о проделанной работе.
Производственная практика проходила в web-студии «Фаворит».
Компания «Фаворит» — молодая web-студия, занимающая всем сферами создания и обслуживания сайтов. В список услуг компании входят: разработка дизайна и проектирование интерфейсов сайтов, проектирование и реализация баз данных, проектирование архитектуры и программирование сайтов, а так же последующая их поддержка и продвижение в поисковых системах.
Категории проектов самые разные – от небольших сайтов-визиток до масштабных корпоративных порталов и интернет-магазинов.
На рынке создания web-сайтов большая конкуренция, поэтому компании должны всегда использовать самые новые технологии, предлагать клиентам самые последние и технически правильные решения. Компания «Фаворит» следует этим тенденциям, но ни в коем случае не в ущерб качеству конечного продукта.
В мою задачу входила техническая часть разработки сайта – проектирование и реализация баз данных а так же проектирование архитектуры и программирование сайта.
Стоит отметить, что клиенты всегда хотят получить результат максимально быстро, так что приходилось находиться в сжатых временных рамках, так что часто приходилось отступать от, если это можно так назвать, творчества и пользоваться средствами автоматизации. Это не относится к большим проектам, где сроки не так ограничены и где по этой причине была возможность создавать оригинальные, более удобные и быстрые решения.
Проектирование и реализация баз данных
Это одна из самых важных частей при работе над сайтом, т.к. в зависимости от того, как была спроектирована база данных, в дальнейшем будет проектироваться архитектура самого сайта.
На этом этапе моей задачей был анализ информационной составляющей будущего сайта, ей структуризация и последующее проектирование базы данных на основе полученной структуры. Следующий этапом было выделение ключевых полей в таблицах, приведение базы данных к нормальной форме Бойса-Кодда а так же, если это возможно, оптимизация полученной базы данных. Последний пункт стоит уточнить: т.к. задачи и масштабы сайтов разные, то и количество посетителей у сайтов тоже разное. У маленьких сайтов количество посещений небольшое – от 0 до 100 посещений в день. У больших же, особенно социально-направленных сайтов, количество посещений может доходить до сотен тысяч в день, что ведёт к огромному количеству запросов к базе данных в секунду, что, в свою очередь, ведёт к очень большой нагрузке на эту базу данных. При стандартном проектировании базы данных это такое количество запросов в секунду не учитывается и база данных просто может прекратить отвечать на запросы, что для любого сайта критично. Поэтому используется оптимизация, в частности вводится индексирование таблиц, кэширование результатов запросов к часто используемым таблицам, распределение таблиц по нескольким серверам.
После того, как база данных спроектирована и создана, я переходил к проектированию архитектуры сайта.
Проектирование архитектуры сайта
В зависимости от того, как спроектирована архитектура, будет программироваться сайт. Если архитектура не запутанная, если правильно выбрана парадигма архитектуры, если все компоненты продуманы и нет ничего лишнего, то работа сайта будет наилучшей, а его дальнейшее функциональное расширение простым и удобным. По этой причине для больших проектов это было той задачей, над которых надо было хорошо подумать. Нужно было учесть множество факторов – мощности серверов, архитектура базы данных, предполагаемое количество посетителей сайта, ключевые задачи сайта и, конечно, сроки реализации. На проектирование одной только архитектуры могло уходить 1-2 дня, что достаточно много, и это при том, что всё, что использовалось – это ручка и бумага. Но эти 1-2 дня в дальнейшем экономили гораздо больше времени и сил на необходимую доработку и расширение сайта.
После разработки архитектуры я приступал к программированию сайта.
Программирование сайта
Это самый большой по времени промежуток в разработке сайта, особенно, если это большой корпоративный проект. Переда непосредственно программированием, надо определиться, на каком языке будет программироваться сайт, будет ли это самостоятельное написанное решение, либо уже специальное готовое решение, доделанное под требуемую функциональность (так называемые «системы управления контентом»), и, если второе, то какую именно систему использовать. Здесь очень важно не ошибиться с выбором, т.к. вполне возможно для маленького сайта выбрать тяжелую систему с большим количеством функций, которые будут только нагружать сайт.
Если задачи тривиальные, то само программирование не сложно, задачи, как правило, однотипные, лишь с небольшими различиями, поэтому можно пользоваться ранее написанными решениями (так называемые «сниппеты»).
Программирование сайта становится сложнее и, соответственно, интереснее, если появляются нетривиальные задачи, уникальные для данного проекта. Например, анализ интересов пользователя интернет-магазина по его прошлым покупкам, или автоматическое нахождение на фотографиях лиц людей, или определение языка пользователям по введённым словам или фразам и т.д. Тем не менее, такие задачи встречаются достаточно редко и поэтому, в большинстве своём, программирование сайта нельзя назвать сложной задачей.
Тестирование сайта
После того, как базы данных реализована, дизайн сайта нарисован и затем свёрстан (за это отвечают соответственно дизайнеры и верстальщики), вся функциональность сайта написана, я перехожу к заключительному этапу разработки сайта –тестированию. Это очень важная часть процесса разработки, т.к. именно здесь выявляются все возможные ошибки в функциональности (как, например, неправильная работа поиска по сайту, или неверная работа фильтра по товарам в интернет-магазине), безопасности (всевозможные инъекции, ограничение доступа к различным частям сайта, шифрование паролей и т.д.), всей работы сайта в целом. Как правило, помимо меня, тестированием сайта занимаются ещё несколько человек «со стороны», которые не принимали непосредственное участие в разработке, например, менеджер или руководитель проекта.
По итогам прохождения производственно-технической практики были полностью выполнены следующие проекты:
- интернет-магазин электротоваров
- интернет-каталог бытовой техники
- коммерческий хостинг изображений для публикаций фотографий профессиональных фотографов
Для всех перечисленных проектов мною были спроектированы и реализованы базы данных, спроектированы архитектуры, выполнено программирование функциональности и произведено предварительное и окончательное тестирование.
По окончании производственно-технологической практики был ознакомлен с последними технологиями web-разработки, а так же с разработкой высоконагруженныхweb-систем. Так же получил практические навыки проектирования, реализации и оптимизации баз данных. Помимо этого, мною были получены навыки работы с системами контроля версий (subversion,git), а так же с системами управления проектами (basecamp,teamlab) и тикет-системами (Jira). Так же, был получен практический опыт работы в команде над коммерческими проектами.