Боясь веб-приложение, не будучи "в будущем"и

Я'м веб-разработчик небольшой, локальный веб-приложения SaaS. В настоящее время она насчитывает около полутора десятков клиентов.

Как я по-прежнему в разработке приложений, это'ы становятся все труднее для меня, чтобы убедить себя совершить какое-либо время к проекту, которое произошло в начале фазы. Имея привязался к этому проекту и код, который я'ве уже написано, Я'м боюсь, что все дополнительные работы я посвящаю будут отменены в ближайшем будущем, когда приложение оказывается не очень хорошо масштабируется по мере роста бизнеса.

Будучи студентом университета, претендующих на стажировки, я'вэ у работодателей вопрос мой выбор не с помощью любого веб-платформ во время интервью, которое только заставило меня сомневаться в моей предыдущей работе. Я просто не'т знаю, что любой веб-платформ, и Дон'т знаю, какой начать использовать.

Я'вэ прошел практику как разработчик полный стек в январе, где я'll начать, чтобы узнать интерфейсных фреймворков, но давление, чтобы закончить приложение установки, и я'м с учетом слома приложение полностью и начинать все сначала, что я'вэ делал раньше. Приложение в настоящее время построен на PHP и jQuery (для AJAX-вызовы) и использует MySQL в качестве базы данных. Любой мысли о том, как я могу преодолеть этот ментальный блок, и чтобы убедиться, что мое приложение будет масштабируемым? Спасибо заранее.

Комментарии к вопросу (18)

Совершенное-враг хорошего.

Или, по-другому, Дон'т беспокоиться об этом сегодня. Если ваше приложение делает то, что он должен делать, то это's прекрасно. Это'ы не плохо переписать часть программного обеспечения, далее вниз по линии; к этому моменту вы 1) знать более четко что вы'вновь пытается построить и 2) знать, какие биты являются узким местом. Вы можете потратить огромное количество времени на написание приложение, которое будет масштабироваться до миллионов пользователей, но он не'т быть лучше для вашего текущего шести клиентов, чем то, что вы've получили сегодня.

Комментарии (16)

никаких мыслей о том, как я могу преодолеть этот ментальный блок, и чтобы убедиться, что мое приложение будет масштабируемым? Суть вопроса вовсе'т масштабируемость. Суть вопроса думая, что вы получите его правильно с первого раза. Вы должны сосредоточиться на написании чистого кода. Потому что чистый код увеличивает удобство, когда (неизбежно) нужно что-то поменять в будущем. И что'реальная цель, которую вы должны иметь. То, что вы'вновь пытается сделать сейчас, это попытаться придумать идеальный код писать. Но даже если вам удастся это сделать, тем, кто говорит, что требования не'т собираюсь меняться, или вы, возможно, сделали свои выводы на основе неверной информации или недопонимания? Нельзя избежать ошибок, даже если они'повторно не виноват. Сосредоточиться на написание кода, в котором она's легкий для того чтобы изменить вещи позже, а не в надежде написать код, который вы выиграли'т необходимость изменения в будущем. выросший добавленные в проект, а код я'ве уже написано, Я абсолютно солидарна с этим мнением. Но привязываться к коду вы'вэ написано-это проблема. Единственная вещь, которая должна быть постоянной your желание решить конкретную problem. Как вы идти о решении этой проблемы является только вторичным. Если завтра новый инструмент выделяется то, что уменьшает ваш код на 80%, вы будете расстроены тем, что ваш код больше не используется; или вы будете счастливы, что ваш код стал меньше и гораздо чище/более управляемым? Если первое, ТО у вас есть проблема: вы'вновь не видя решение для кода](https://dictionary.cambridge.org/dictionary/english/not-see-the-wood-for-the-trees). Другими словами, вы'вновь сосредоточившись на код и не вижу картину в целом (решения, она призвана обеспечить). Я'м боюсь, что все дополнительные работы я посвящаю будут отменены в ближайшем будущем, когда приложение оказывается не очень хорошо масштабируется по мере роста бизнеса. Это отдельная проблема для другой день. Во-первых, вы строите что-то, что работает. Во-вторых, вам улучшить код, чтобы исправить какие-либо недостатки, он все еще может показать. То, что вы'В настоящее время делаем сдерживает на первую задачу из-за страха после того, чтобы делать второе задание. Но какой другой вариант есть? Вы не можете предсказывать будущее. Если вы потратили время на обдумывание будущих возможностей, вы'вновь собирается в конечном итоге guessing в любом случае. Догадка всегда склонен быть мертвым не так. Вместо этого, постройте приложение и prove, что это действительно проблема. И еще вопрос ясен, тогда вы начинаете ее решения. Выражаясь иначе: Генри Форд не построил автомобиль, который соответствует стандартам 2018/ожидания. Но если бы он'т модель Т, недостатки автомобиля по современным меркам, никто бы не стал использовать автомобили, не было бы автопрома, и никто бы не был автомобиль, который они могли бы потом попытаться улучшить. Я'вэ у работодателей вопрос мой выбор не с помощью любого веб-платформ во время интервью, которое только заставило меня сомневаться в моей предыдущей работе. Самая важная здесь не в том, какие рамки вы'повторно используя (любой работодатель, который сочтет вас о том, что не выполняют свою работу должным образом). Самая важная здесь часть - зная, что вы'снова делаешь и почему вы'повторно делать это. Например, вы могли бы избежать существующей структуры именно потому, что вы хотите узнать, зачем рамки полезно делать это первым способом. Или вы могли бы быть пытается сделать свои собственные рамки. Единственное, что плохо здесь ответ "Я не'т знаю", а это свидетельствует об отсутствии принятия обоснованных решений. Что значит красный флаг для работодателя. Я просто не'т знаю, что любой веб-платформ, и Дон'т знаю, какой начать использовать. Такая же проблема возникает и здесь. Решение не думать, а действовать:

  • Остановить обдумывая ответ.
  • Выбираете рамки. Если у вас есть предпочтения, выбрать случайную. Используют мишень, бросить кубик, бросить монетку, возьмите карту.
  • Используйте его.
  • Вы хотите его использовать? Было ли что-нибудь вы нашли раздражает?
  • Посмотрите, как предотвратить эти плохие элементы. Вы неправильно используете основу, или это просто, как система должна работать?
  • После того, как вы чувствуете, у вас есть сцепление на базу (независимо от того, нравится вам это или нет), выбрать новую основу и повторить цикл. Чтобы узнать больше об этом, читайте делает мышление > мышление мышление. Автор объясняет это лучше, чем я могу. но давление, чтобы закончить приложение, монтажа, и я'м с учетом слома приложение полностью и начать сначала Если текущий код является абсолютно unmaintainable бардак; вы'повторно делать прямо противоположное решение. Разработчики часто думают, что выбрасывала вещи будет лучшим выбором. Это'ы очень распространенное чувство. Но это редко правильный выбор. Бросать код и начать с нуля-это как застрять в пробке по дороге на работу, беспокоясь вы'll быть поздно на работу (опоздал), и вместо того, чтобы ехать домой и попробовать снова ехал по той же дороге. Это не'т иметь смысл. Вы можете быть застрял в пробке, но вы'вновь еще ближе к работе, чем вы были, когда вы были дома.
Комментарии (9)

Несмотря на огромное количество денег, Facebook и Google налил в маркетинг, чтобы убедить вас в противном случае, существует передний конец рамки по двум основным причинам:

  • Во-первых, разгрузка оборудования/сети требует клиентских операций путем наложения государства и логику в клиенте
  • Во-вторых, отношение к клиенту дополнительную логику, необходимую, чтобы поддержать первую точку, они обеспечивают изолированные контексты выполнения, так что вы можете втиснуть других людей's код на страницу и ничего не сломалось.

Вы, вероятно, нужно только выйти за рамки, чтобы решить эти проблемы, если ваше приложение является по своей сути состояния, если сумма заявки государство вы'повторного сохранения на стороне клиента, достаточно сложна, если вы ожидаете очень много клиентов с плохой задержки в сети (мобильной или удаленных от сервера), или если есть сильная бизнес нужно поддерживать особо продвинутых CSS или динамический элемент творения.

Основы маркетинга хочет, чтобы вы верили, что их специальный метод архитектурой увеличивает скорость разработки и упрощает обслуживание. Это явно не годится для небольших групп, работающих над простыми проектами. Код выделения и организации импорта может помочь большую команду вывести продукт на рынок. Он дает намного меньше для одной команды развития человека, работающего на уже работающего проекта.

Вы будете тратить больше времени на обучение, чтобы соответствовать существующим функциональным код в рамках, чем вы на самом деле реализации функций, и шансы довольно хорошо, что кто-то где-то обновить что-то, а код, написанный в рамках перестанет функционировать внутри 18 месяцев, если кто-то есть постоянно поддерживать его.

Ванильный JS, и в меньшей, но все еще в значительной степени на jQuery, не страдают от этих проблем. С некоторыми заметными исключениями, приложения на jQuery + AJAX, не опираясь на конкретные поведения браузера, и отказ от внешних зависимостей, где здравые, продолжаю работать 10-15 лет после того, как они были записаны изначально с очень незначительными изменениями.

Платформы отлично подходят для типичных стартапов, поддерживающих сложный, общедоступный веб-приложений. Они позволяют большие группы координируют хорошо вместе, хорошо интегрируется с продавцом добавить рамки, и поддержка кричащие новые виджеты и парадигмы дизайна, чтобы помочь вам оставаться конкурентоспособными.

Все это не важно для небольшой программы с фиксированной аудитории, что вы'ре собираюсь бросать. Взяв на основу замедляет скорость развития, как вы приспособиться к новой парадигме, и приводит к дополнительным проблемам совместимости. Ведение клиентской стороне код простой, (а в идеале самодостаточно) означает, что поверхность риск несовместимости значительно падает. Браузеры будут меняться, URL-адресов CDN перестанет работать, зависимостей пойдет устарел - но никто не трогает этот сервер, и он будет продолжать работать нормально.

Дон'т принять рамочную если она решает специфические архитектурные проблемы у вас сегодня или в скором времени можно предвидеть, и серьезно рассмотреть решения этой проблемы другим способом, а если это вообще нелогично.

Комментарии (12)

Лучшее, что вы можете сделать, чтобы "на будущее" в ваше приложение, чтобы следовать рекомендациям в дизайн вашей системы, чтобы увеличить свободное соединение и разделение. Нет ни одной части вашего приложения, которое является безопасным от устаревает, но многое вы можете сделать, чтобы изолировать код, который устаревает по причине х из кода, который не'т necessarily должны быть затронуты Х.

Тем не менее, я утверждаю, что ваша забота должна быть меньше роста/масштабируемость вашего приложения, чем темпы роста собственного опыта и возможностей. Ментальный блок, который вы опишете мне кажется, либо обучение застой или осознание многими неизвестными без стратегии или инструменты для их решения.

Структуры не особенно хорошо подходит для решения "на будущее" и бросить вызов, хотя они могут обеспечить соответствующее руководство initial для неопытных, как правило, через высокоуровневые шаблоны проектирования, например MVC. Скорее, они имеют тенденцию быть более полезным в качестве способа ускорения развития путем обеспечения тесного взаимодействия и часто в expense более жесткой муфты. Например, предположим, что вы используете какие-то рамки предоставляемых объектно-реляционная система отображения всей приложение для взаимодействия с базой данных, в комплекте с кэшированием-системная интеграция. Возможно, позже вам нужно перейти к нереляционные хранилища данных и теперь everything, что использует он влияет.

Беспорядок теперь вы не'т приходят из what вы использовали, но where вы использовали его (наверное почти везде на заднем конце). Насколько лучше вы'll быть, если код, который рендерит страницы не загружает данные, он оказывает.

Предположим, вы хотите добавить несколько маленьких виджетов на страницу, которая требует дополнительных скриптов и ресурсов, чтобы работать должным образом. Если вы're, используя фреймворк, вы можете спросить "как оно хочет, чтобы я добавить зависимости к для этого предмета?" Если вы'повторно не, тут вопрос более открытого: "Что технических проблем я трогательно, что должно быть как-то отделены?" что вопрос требует больше опыта для ответа, но вот несколько подсказок:

  • Что случится, если завтра вы переехали все ваши статические ресурсы (скрипты, изображения и т. д.) на отдельный сервер, сети доставки содержимого, и т. д., или начал пытаться упаковать их все вместе, чтобы улучшить производительность?
  • Что случится, если ты начал размещать этот виджет на разных страницах, или несколько экземпляров на одной странице?
  • Как бы вы могли начать выполнение, А-Б тестирование на разных версиях виджета?

Если все это звучит подавляющим, тогда я'd предлагает вам should использовать фреймворк для теперь, не столько ради своего приложения, но ради вашего собственного личностного роста. Дон'т должен начать хоть. Вместо того, чтобы использовать рамки в качестве учебной программы, чтобы помочь эволюции вашего приложения.

Есть только два способа, чтобы узнать. Один методом проб и ошибок, а другой-учиться на опыте других. Пробы и ошибки не могут быть устранены. Разработка программного обеспечения является по своей природе непрерывного обучения и любой код, который не'т сделать что-то новое или другое ненужное определение. (Вместо того, чтобы использовать код, который уже написан.)

Хитрость заключается в том, чтобы свести его к минимуму путем активного поиска уже существующих знаний (стратегий, рекомендаций и код/библиотеки/фреймворки) на каждом этапе процесса разработки, так что вы не окажетесь постоянно повторно изобретать колесо.

Как для приложения, вы сейчас пишете, тем не менее, ваша первая забота должна быть просто, чтобы сделать это с минимальными усилиями mundane (который вроде как код, но для процесса развития). Учитывая характер обучения человека, самый быстрый способ достичь высокого качества, чтобы начать с something. Это гораздо легче понять цель, когда вы можете формировать его по критике то, чем ты уже есть.

Если вы можете признать, что большая часть кода, который вы пишете-это процесс одноразового обучения и необходимых для find хорошие проекты, которые будут услужливо мотивировать вас, чтобы держать на него. Ведь это'ы на задачу решения проблем, что делает разработка программного обеспечения интересным, и что вызов всегда присутствует, если то, что вы're делая это целесообразным (см. "и непрерывное обучение" и заявление выше).

Комментарии (0)

Превыше всего, то"слом всего и начиная над" и это не вариант ... ведь ничего'т вы говорите, что у вас есть "а полдесятка клиентов?&и" еще ты остановился, чтобы рассмотреть то, что они могли бы думать о вашем заявление, учитывая, что они находятся сейчас (предположительно) "и полностью доволен вашей работой?!&и"

Здесь'ы аналогию, которую я люблю использовать:

  • "Мой работа-строить дома для людей, для жизни, для людей, для построения бизнеса, и так далее.&и" Моя работа заключается в том, что "Эти невероятно крошечные, по-прославленное биты песка и" выполнять полезную работу. (Просто как дома-строители дома ремесло из гипсовой штукатурки, керамической плитки, бетонных блоков и 2х4'ов.)

  • Однако, в то время как "гвоздей" Дом-строители используют не'т сильно изменилась за двести лет (кроме идти от "Квадрат" на "круглый" Ну и затем, чтобы быть полезным с пневматической гвоздезабивной машины), технологии, которые мы используем постоянно меняется и иногда происходят очень глубокие изменения. ("так оно и идет.&и")

  • "и тем не менее, каждый дом, некогда построенный, навсегда-после того, как быть жили в.&и" Вы можете'т выселить их. После того как вы построить его и передать ключи, "Это'ы не 'ваш' живет" это то, что это прямо сейчас, и он будет стоять очень долго.

Большая часть моего бизнеса в эти дни, чтобы помочь клиентам справиться с программным обеспечением, которое было построено десять, двадцать, тридцать или более лет назад, используя в "современное" и технологий, которые существовали в те времена – (и, кхм, я помню) – и которые до сих пор в строю(!) сегодня.

Комментарии (0)

Я начал писать комментарий о основы обучения, но со временем она превратилась в что-то больше похоже на ответ, Так вот это_.

Не зная никаких рамок, похоже, проблема. В принципе любой webdev нужно работу работать нужно будет с базы some. Изучая другой базы после того, как вы знаете, один это не большое дело это! - но, узнав, первая может занять некоторое время, поэтому работодатели могут позаботиться об этом. Избегая рамок может свидетельствовать о не изобретенный здесь синдром, который широко непрактичный подход.

А главное, зная свои первые рамки-это научиться общий язык, возможно, просто попробовать узнать что-то популярен среди своих сверстников. Вы можете попробовать изменить некоторые простой проект, написанный в рамках. Запуск проекта "с нуля" в рамках Вы Дон'т знаю, что это очень неэффективный способ обучения.

Теперь, ваш фактический вопрос был про конкретного проекта и перенос его в рамки. Для этого, кажется, что будет ответ: это зависит, и мы можем'т действительно сказать вам. Однако, перенос материалов в рамках Вы не'т знаю, что это почти наверняка плохая идея, поскольку в нем могут содержаться материалы't даже знаю, если это делает sense_. Следовательно, похоже, что вы должны оставить его как есть, и пересмотреть это решение в какой-то момент, когда вы знаете, как и какие-то рамки. Другие ответы содержат хорошие моменты о том, что вы должны искать при принятии такого решения.

Комментарии (0)

Что-то сделать-это в будущем практически невозможно. Проверить, что приложение является масштабируемым, хотя и не слишком жесткий. Вам просто нужно написать несколько тестов производительности для приложения и увидеть, как много клиентов он может обрабатывать. Написание тестов, безусловно, сделает ваше приложение более перспективным, так вы сможете оценить, как приложение ведет себя после того, как вы реализуете больше изменений в него.

база с миллионами, я бы'т быть слишком обеспокоены производительности/масштабируемости мудрый. Это то, что вы можете легко проверить и скорее всего исправить. Большая проблема в безопасности. Веб-фреймворки, как правило, помогают вам писать правильный код аутентификации, печенье, защиту CSRF и т. д. Особенно учитывая отсутствие у вас опыта, лучше ориентироваться в этой области.

Комментарии (0)

Эта статья получила много внимания на Хакер Новости 2,5 года назад: писать код, который легко удалить, не легко extend. этой точки зрения могут или не могут помочь вам справиться с вашего текущего кода, но в будущем это может помочь избежать разочарования, которое приходит от перфекционизма/н.э. Баумана

если мы видим ‘строк кода’ как ‘линии провел, тогда, когда мы удаляем строки кода, мы снижаем стоимость обслуживания. Вместо повторного использования программного обеспечения, мы должны попытаться использовать одноразовые программного обеспечения.

Я не должен сказать вам, что удаление кода гораздо интереснее, чем писать.

(выделено мной)

В статье'ы-нить на Хакер Новости может быть стоит читать.

Комментарии (0)

Насколько, что делает его будущее и применяя масштаб & рамочные принципы, это'ы высокая задача взять на себя, я'скорее всего, просто не беспокойтесь об этом, но если вы должны:

Сохранить ваш код чистым, следить за твердой, сухой принципам > В гугле.

Применение балансировки нагрузки как можно скорее.

Встают по крайней мере два веб-сервера, обрабатывать сценарии балансировки нагрузки в код.

И последнее, но не менее, там's лучше, стеки для обработки миллионов пользователей, чем лампа, но я'м уверена, что это's совершенно выполнимо.

Корпус и точка, см.: https://stackoverflow.com/questions/1276/how-big-can-a-mysql-database-get-before-performance-starts-to-degrade Суть верна, но 10Гб это тривиальные в качестве испытуемого.

Комментарии (0)