Я занимаюсь разработкой интернет проектов. Сейчас вместе с командой специалистов мы готовимся к разработке большого и высоконагруженного проекта.
Общая концепция выглядит приблизительно так:
Будет много разных баз данных, в которых будет храниться информация разного типа, текстовая, графическая, видео и аудио. Каждая база будет содержать информацию по разным темам.
Отдельно будет полнотекстовая поисковая система объединяющая информацию из всех источников.
Так же будет много различных микросервисов расширяющих сервисный функционал, например сквозная авторизация, сервис закладок, хранения паролей и т.д.
Посоветуйте пожалуйста какой стек технологий для разработки выбрать, с учётом некоторых условий:
- Язык(и) программирования современные и содержащие подробную информационно-документальную базу и популярные сообщества поддержки.
- Высокая производительность и многопоточность.
- Простая масштабируемость.
- Актуальность на ближайшие 2-3 года.
- Интеграция с проектами написанными на других языках.
Постарайтесь пожалуйста привести аргументы в пользу того или иного выбора, а так же возможные минусы.
Дополнительно:
Содержание
Корованы! Будьте бдительны!
Ответы:
Ну как бе команда спецов у вас есть - пусть и решает.
Под ваше ТЗ подходят любые ЯП - потому что ТЗ говно.
- Ну что они решают это само собой разумеется, но для объективности мне нужно понимать какие есть альтернативы и может быть нужно искать специалистов другого профиля.
"Под ваше ТЗ подходят любые ЯП - потому что ТЗ говно."
Очень аргументированно... Текущее ТЗ формальное, но достаточно информативное для понимания целей и задач. Если что-то не понятно, тогда уточните что именно, насколько это возможно я постараюсь описать. -
но достаточно информативное для понимания целей и задач
мой ответ тоже достаточно информативен - любые ЯП. Аргумент - они удовлетворяют вашему ТЗ.
А так вообще такая задача решается техлидом за очень немаленьике деньги. Или вы готовы доверить судьбу проекта рандомным челам с интернета?
-
Если что-то не понятно, тогда уточните что именно, насколько это возможно я постараюсь описать.
Так как не описано по теме вообще ничего (что и понятно - скорее всего вы описываете задачу не как специалист, а как обыватель, где-то боком зацепивший пару айтишных терминов).
На простом языке звучит так:
1) Чтобы модно, стильно, молодежно, и можно починить если накриворучим.
2) Чтобы - Вжжжух - и полетела!
3) Чтобы 2 раза не вставать, пусть еще и это, как его... а масштабировалось, ввысь или вширь не суть важно, термин просто уж очень красивый...
4) Фичи будем пилить долго, по этому пусть стек еще проживет хотя-бы пару лет...
5) И эта... интеграция, точно. Обязательно нужно. На ютубе есть, и нам надо.В вашей "общей концепции" кроме слова "большой" о реальной предполагаемой нагрузке, как и об объеме хранимых данных, вообще ни слова. Собственно то что определяет нагрузку - посещаемость в сутки, rpm, rps, пиковые, типовые и минимальные значения, объемы таблиц в миллионах строк, частые селективные выборки, типы хранимых данных, в бд много мелких таблиц или мало но с большими объемами, и еще десятка 2-3 параметров, по которым можно определить нагруженность проекта и какие инструменты использовать для конкретных задач. Нужен ли оракл или мсскуель, или справится мускуль или постгрес, или вообще нужен какой-то ноэскюэль... Полнотекст будет через средства бд или надо вешать и настраивать сфинкс/еластик... Насколько горячие должны быть кэши и что с какой переодичностью будет рекэшироваться, а что вообще должно быть живыми запросами. Какой предполагаемый рост нагрузки в месяц/год, каков план по увеличению ресурсов серверов с ростом нагрузки...
А то что озвучено в вопросе больше похоже на маректинговый план, написанный со слов заказчика, где для приличия самые затасканные маркетинговые словечки заменены псевдоайтишными терминами.
- ThunderCat, Спасибо вам большое ра разъяснения. Особенно про ТЗ мне понравилось)))
Вы очень близки были к реальной истории. Я опубликовал часть заполненного брифа и менеджер не хотел воспринимать мою критику. А я не мог подобрать слов что бы объяснить в чём ошибка. Вы очень помогли. ещё раз спасибо.
Можно я внесу немного конструктивной критики в ваш вопрос, ну и сделаю некоторые выводы, возможно вам они будут полезны...
Я занимаюсь разработкой интернет проектов. Сейчас вместе с командой специалистов мы готовимся к разработке большого и высоконагруженного проекта.
Вы же не рекламное письмо фирме пишете, говорите четко - "у нас есть 6 маркетологов, джун верстальщик и эйчар". Ну или " У нас было два пакетика травы, семьдесят пять ампул мескалина, 2 явиста мидла, 2 пхп сеньера, бухгалтерия, наполовину наполненная старушками с калькуляторами, и целое море различных специалистов по яваскрипту, цсс, хтмл и их комбинациям в ассортименте, а так же...".
Тогда понятно - что вам искать, какие спецы какого уровня у вас уже есть и стоит ли их менять или строить будущую архитектуру под уже имеющийся состав.
Общая концепция выглядит приблизительно так:
Будет много разных баз данных, в которых будет храниться информация разного типа, текстовая, . Каждая база будет содержать информацию по разным темам.
Информация графическая, видео и аудио типов чаще всего не хранится в бд. Если вы не программист/архитектор IT структур - поручите вопросы архитектуры и структурирования данных кому-либо из команды, кто в этом разбирается (если таковые есть).
Отдельно будет полнотекстовая поисковая система объединяющая информацию из всех источников.
В принципе не особо зависит от стека, тут больше архитектурно-проектировочная задача.
Так же будет много различных микросервисов расширяющих сервисный функционал, например сквозная авторизация, сервис закладок, хранения паролей и т.д.
Тоже самое - больше архитектура, нежели стек.
Посоветуйте пожалуйста какой стек технологий для разработки выбрать, с учётом некоторых условий:
- Язык(и) программирования современные и содержащие подробную информационно-документальную базу и популярные сообщества поддержки.
На сегодняшний день есть 4-5 хорошо распространенных языка, используемых в вебе: пхп, ява, жс, питон, в меньшей степени c#, руби, голанг, остальные больше экзотика, нежели мэйнстрим.
- Высокая производительность и многопоточность.
Которая в вебе не особо нужна, хотя практически все вышеперечисленные языки в той или иной мере многопоточность поддерживают. Опять же - сразу "видны уши" вашей недостаточной компетентности в вопросах разработки высоконагруженных проектов. Дело в том что в 99% случаев код именно языка программирования особо не нагружен. Больше всего процессорного времени будет съедаться запросами к бд и внешним сервисам. Код просто прослойка между фронтом и бд, чаще всего просто выполняющая задачи CRUD прослойки.
- Простая масштабируемость.
- Актуальность на ближайшие 2-3 года.
Везде подходит
- Интеграция с проектами написанными на других языках.
Ни один язык не интегрируется с другим. Есть вопросы обмена данными между различными приложениями, но они абсолютно одинаковы на любом языке, не в плане кода, а в плане методов реализации. По этому это тупой и бесполезный пункт.
Постарайтесь пожалуйста привести аргументы в пользу того или иного выбора, а так же возможные минусы.
выбор надо делать не в пользу языка, а в пользу специалистов (ну и от них плясать уже по стеку). Как пример - проще всего поднять на пхп/ноде, специалистов много, они дешевле например явистов или шарпистов, поддержка проекта не сдохнет при уходе какого-нибудь ведущего спеца. С другой стороны, если речь идет о корпоративном заказе - скорее всего вам придется писать на яве/цшарп, емнип только у них есть соответствующие сертификаты по работе с шифрованием и прочей секюрити. Так же сильно зависит от того кто вообще есть в вашем регионе, кого можно быстро/возможно вообще найти на замену уходящим сотрудникам, и еще 1000 и один вопрос, который отпадает при выборе специалиста, а не стека (после этого голова болит уже у него, а не у вас, но в своей области, что гораздо лучше).
На вашем месте я бы не лез в это вообще, если вы не являетесь специалистом айти профиля, а нанять прожект менеджера с опытом больших проектов, который определит уже что и зачем вам нужно.
- Не то, чтобы всё это было категорически необходимо, но если уж начал клепать одностраничные лендинги на тильде, то к делу надо подходить серьёзно.
пусть будет C#, Java, Php
все это подойдет
- Не могли бы вы как-то аргументировать свой выбор?
- Константин Васильев, все 3 входят в тройку самых популярных языков
У Александра Гранина был лозунг "Фри монады - наше всё!" (это Haskell).
(книга Functional Design and Architecture)
Тот, который знает ваша команда специалистов. Ну или вы готовы финансово вложиться в команду и обучить их какой-то новой технологии и в дальнейшем зарабатывать используя данную технологию по тем или иным причинам. Если ваша команда не может сделать данный выбор - в вашей команде не хватает техлида, который обладает достаточной компетенцией для выбора стека под ваши задачи. Для начала - составьте полноценное техническое задание во всеми спецификациями, требованиями и ограничениями, а далее наймите специалиста/консультанта, который сделает выбор в сторону наиболее подходящей технологии под ваши задачи и поможет команде в реализации вашего проекта. В рамках текущего описания задачи под ваши требования подходит абсолютно любой стек.
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для разработки экосистемы проектов, необходимо выбрать такой стек технологий, который обеспечит высокую производительность, масштабируемость, надежность и удобство разработки. Вот несколько популярных вариантов стеков технологий, которые могут быть подходящими для создания экосистемы проектов:
1. MEAN/MERN стек:
MEAN (MongoDB, Express.js, Angular, Node.js) и MERN (MongoDB, Express.js, React, Node.js) - это два популярных стека технологий, которые объединяют базу данных, серверную часть и фронтенд в одном пакете. MongoDB используется как база данных, Express.js - для создания сервера, Angular или React - для создания пользовательского интерфейса, а Node.js - для обеспечения обратной связи между фронтендом и бэкендом. Эти стеки технологий обеспечивают высокую производительность и масштабируемость.
2. LAMP/LEMP стек:
LAMP (Linux, Apache, MySQL, PHP) и LEMP (Linux, Nginx, MySQL, PHP) - это еще один популярный стек технологий, который широко используется для создания веб-приложений. Linux - операционная система, Apache или Nginx - веб-сервер, MySQL - база данных, PHP - язык программирования для создания динамических веб-сайтов. Этот стек технологий также обеспечивает хорошую производительность и надежность.
3. Serverless стек:
Serverless архитектура становится все более популярной для разработки приложений. Вместо того, чтобы управлять инфраструктурой серверов, вы можете сосредоточиться на разработке кода. AWS Lambda, Azure Functions, Google Cloud Functions - это некоторые из платформ, которые позволяют создавать серверлесс приложения. Этот стек технологий обеспечивает гибкость и масштабируемость.
4. Microservices стек:
Microservices архитектура предполагает разделение приложения на небольшие автономные службы, которые взаимодействуют друг с другом через API. Для создания микросервисов можно использовать различные технологии, такие как Spring Boot (Java), Flask (Python), Express.js (Node.js) и другие. Этот стек технологий обеспечивает гибкость, масштабируемость и удобство разработки.
Выбор стека технологий для разработки экосистемы проектов зависит от требований вашего проекта, опыта команды разработчиков, бюджета и других факторов. Важно тщательно проанализировать каждый вариант и выбрать тот, который наилучшим образом соответствует вашим потребностям.
При выборе стека технологий для разработки экосистемы проектов, важно учитывать несколько ключевых факторов, которые помогут определить оптимальное решение для вашего конкретного случая. Вот несколько рекомендаций, которые могут помочь вам принять правильное решение:
1. Цели и требования проекта: Прежде всего, необходимо четко определить цели и требования вашей экосистемы проектов. Какие функциональные возможности вы хотите реализовать? Какие технологии могут наилучшим образом соответствовать вашим потребностям?
2. Язык программирования: Выбор языка программирования играет важную роль при создании экосистемы проектов. Например, если вам нужно разрабатывать веб-приложения, то стоит рассмотреть популярные языки, такие как JavaScript (Node.js), Python, Ruby или PHP.
3. Фреймворки и библиотеки: Использование современных фреймворков и библиотек может значительно ускорить разработку экосистемы проектов. Например, для веб-разработки часто используются фреймворки как Angular, React или Vue.js.
4. Базы данных: Выбор подходящей базы данных также имеет значение. Реляционные базы данных, такие как MySQL или PostgreSQL, подходят для проектов с жесткой структурой данных, в то время как NoSQL базы данных, например MongoDB, хорошо подходят для проектов с изменчивой структурой данных.
5. Инструменты для управления проектами: Для эффективной работы над экосистемой проектов рекомендуется использовать инструменты для управления версиями кода (например, Git), системы непрерывной интеграции и развертывания (CI/CD), а также средства автоматизации тестирования.
Исходя из вышеперечисленных рекомендаций, вам следует провести более детальное исследование конкретных технологий и инструментов, чтобы выбрать оптимальный стек технологий для разработки вашей экосистемы проектов. Каждый проект уникален, поэтому важно подходить к выбору стека технологий индивидуально, учитывая особенности и требования вашего проекта.