Немного про Еолимп
Всем привет! Меня зовут Колодяжный Сергей и я один из основателей сайта Eolymp. Сегодня я хотел бы поделиться с Вами историей того, как мой учитель информатики Жуковский Сергей Станиславович (@zss) и я создали один из крупнейших украинских сайтов для изучения информатики и подготовки к олимпиадам. Конечно, за годы существования множество неравнодушных людей помогли сайту. Эта публикация упоминает лишь некоторых из них, но я бесконечно благодарен каждому, кто внес свой вклад.
В школе мне всегда нравились точные науки и я всегда с радостью ходил на уроки математики и физики. В 2004 году я поступил в Житомирский городской лицей №1 и открыл для себя новый предмет — информатику. Я сразу полюбил новую науку и начал частенько засиживаться за компьютером в классе информатики после уроков. Я до сих пор помню синий экран QBasic и мою первую собственную программу, которая рисовала интерфейс подобный к экрану форматирования жесткого диска. Не знаю, получилось у меня напугать этим моего учителя Сергея Станиславовича, но он точно подметил мой интерес к предмету и предложил мне присоединиться к команде по подготовке к олимпиадам по информатике. Так началось мое знакомство с олимпиадами, алгоритмами и спортивным программированием.
Следующие несколько лет я тщательно изучал алгоритмы, решал олимпиадные задачи, участвовал в олимпиадах по информатике и понемногу изучал новые языки программирования и технологии. В процессе я создавал игры и программы для всего подряд. Я даже создал программу для изучения неправильных глаголов в английском языке. С английским у меня было не очень и моя учительница сказала, что я не получу зачет, если не выучу неправильные глаголы. Благодаря моей простой программе неправильные глаголы я все же выучил и зачет получил.
В то время еще не было HackerRank или Codechef. Мы решали олимпиадные задачи на дополнительных уроках информатики, а в конце урока получали дискету с тестами и ответами к ним, чтобы проверить правильные ли решения. Так один за другим мы копировали тесты на компьютер, а затем запускали каждый и сравнивали ответы.
Еще была Житомирская Интернет-олимпиада, которую проводил Дидковский Владимир Леонидович из Новоград-Волынского. Участники олимпиады отправляли свои решения по электронной почте, а организатроы проверяли их вручную. Также была Винницкая Всеукраинская Интернет-олимпиада NetOI. На сайте олимпиады размещали задачи и небольшую форму, через которую можно было загрузить решение. Результаты мы узнавали после завершения каждого тура.
2007
Летом 2007 года я начал работать над сайтом, который улучшил бы процесс проверки решений на дополнительных уроках. Все началось с простой формы, через которую пользователь мог загрузить решение. Когда сервер получал запрос, он сразу же компилировал его и проводил тестирование. Конечно, этот процесс занимал некоторое время, а пользователю приходилось ждать пока страница загрузится. Понадобилось время, чтобы отшлифовать и наладить процесс проверки, но к концу лета у меня уже была готовая система.
Осенью 2007 мы начали активно использовать систему на уроках и она получила название E-Olimp. Olimp, потому что мы использовали систему для подготовки к олимпиадам, а E по аналогии с E-Mail, ведь теперь тестирование выполнялось онлайн.
Чуть позже мы создали сайт в интернете и разместили тестирующую систему на одном из компьютеров в классе информатики. Сайт вызвал интерес у учителей из других школ и понемногу к нам начали присоединяться новые пользователи.
Одним из них был Присяжнюк Анатолий Васильевич (awpris), учитель информатики из Бердичевской СШ №17. Анатолий Васильевич просто загорелся идеей сайта, он создавал десятки, а то и сотни задач, активно отвечал на вопросы пользователей, помогал решать задачи, писал статьи и организовывал соревнования. Невозможно переоценить вклад, который Анатолий Васильевич сделал в развитие сайта. К сожалению, его уже нет с нами.
2009
В 2009 году на сайте уже было зарегистрировано более 1600 пользователей из разных школ и городов. Небольшой сайт перерос в сложную и запутанную систему, которая уже не выдерживала нагрузки. Поэтому сайт был полностью переработан с нуля. Новый дизайн, новые возможности и новая тестирующая система.
Сайт продолжал существовать и набирать популярность в Украине. Появлялось все больше и больше задач, соревнований и пользователей. Нами заинтересовалась кафедра прикладной математики и информатики Житомирского государственного университета имени Ивана Франка и начала всячески содействовать развитию сайта.
К нашей команде присоединился преподаватель Киевского национального университета Медведев Михаил Геннадиевич (medv), ныне профессор АДА университета в Баку. Михаил Геннадиевич начал активно поддерживать сайт, публиковать задачи и организовывать соревнования. Благодаря ему об украинском сайте узнали в Турции и Азербайджане. Мы добавили азербайджанский язык к интерфейсу сайта, а благодаря усилиям преподавателей из Азербайджана нам удалось перевести множество задач. Сегодня Азербайджан является третьей по количеству пользователей страной на сайте.
2014
В 2014 году сайт получил очередное обновление, система была вновь переписана с нуля с использованием современного, в то время, фреймворка Symfony 2. Тестирующая система была значительно обновлена и начала использовать технологии контейнеризации Docker. Веб-сервера и тестирующая система были перенесены в облачный хостинг, то есть вместо физических серверов мы начали использовать виртуальные. А тестирующая система наконец получила сервер в дата-центре, вместо небольшого персонального компьютера в уголке кафедры информатики.
Сайт был переименован в Eolymp и переехал на новый адрес www.eolymp.com, ведь английский я все же подтянул и узнал, что правильно писать Olympic, а не Olimpic. Хотя старый адрес www.e-olimp.com до сих пор доступен.
Мы начали использовать новую систему для проведения городских, районных и областных олимпиад по информатике в некоторых районах и областях Украины. Для того, чтобы олимпиады проходили как можно лучше, мы начали создавать отдельные, пустые и полностью изолированные копии Eolymp, доступные только участникам олимпиад.
2020
В начале этого года я снова полностью обновил тестирующую систему и переписал ее ядро на Go - новом, современном и мощном языке программирования. Также я начал использовать Linux контейнеры для того, чтобы запускать решения в разных средах. Это такой специальный метод изоляции процессов в операционной системе. Это позволило добавить новые языки программирования, упростило поддержку и обновление системы и значительно уменьшило расходы на содержание серверов.
Сайт тоже претерпел значительные, хотя может и не очень заметные изменения. Были обновлены версии PHP и Symfony. Я переписал и оптимизировал много внутренних процессов, таких как подсчет рейтинга, индексация задач для поиска и т.д. Также на сайте появились некоторые новые возможности, например, возможность просмотра кода учителями.
Мы также перенесли сайт и тестирующие системы в AWS. Это один из крупнейших и самых мощных поставщиков услуг по хостингу в мире. Благодаря AWS мы смогли значительно повысить безопасность сайта и данных наших пользователей и перейти на принципиально новый уровень сетевой безопасности.
А в этом месяце, мы начали активно использовать технологии автоматического масштабирования в AWS. Теперь при увеличении количества пользователей на сайте мы автоматически добавляем новые сервера к системе, а при уменьшении эти сервера удаляются. Таким образом наша инфраструктура автоматически адаптируется под нагрузку, повышая надежность работы сайта в часы пик и минимизируя расходы в другое время.
Но кроме технических обновлений, в этом году мы наконец стали официальной организацией, зарегистрированной в Украине согласно действующему законодательству. Мы наконец получили статус, который де-факто имели все эти годы - неприбыльная организация. С самого начала сайт был бесплатным и поддерживался благодаря людям, которым было не безразлично, кому хотелось сделать свой вклад в развитие науки в Украине. Поэтому Сергей Станиславович и я создали некоммерческую организацию "Благотворительный фонд ЕОЛИМП", целью которой является поддержка работы сайта и развитие науки в Украине и мире. Вы можете узнать больше о целях и задачах организации на сайте фонда.
У нас есть множество идей на будущее, мы очень хотим как можно больше помочь учителям и их ученикам в учебе, создать инструменты для проведения уроков и дополнительных занятий по информатике. Поэтому если у Вас есть идеи, пожалуйста, поделитесь с нами, расскажите, как Вы используете сайт, что вам нравится и чего не хватает. Эта обратная связь очень важна для нас.