«Я беру камень и отсекаю всё лишнее»
Микеланджело Буонарроти
Добрый день, уважаемые хабражители. Сегодня я хотел бы поделиться с вами одной, как мне кажется, интересной идеей веб-сервиса.
В общих чертах, основную идею можно понять из заголовка. Я хочу построить облачную систему управления контентом баз данных (CDBCMS — Cloud database content management system). Проще говоря, это веб-сервис для обеспечения доступа к базе данных, генерирующий красивую и удобную панель для редактирования содержимого вашей базы данных.
Сразу оговорюсь, что уже есть вполне определенное видение данного сервиса и некоторые наработки, но прежде, чем будет убито огромное количество времени на его окончательную реализацию и запуск, я хотел бы спросить совета у хабрасообщества.
Итак, для чего я написал эту статью:
1. Поиск уже существующих решений (я честно пытался найти что-то подобное — буду благодарен, если приведете в комментариях ссылку).
2. Изучение спроса среди IT-сообщества.
3. Поиск желающих присоединиться к разработке.
Все знают, что такое CMS — Content management system. Говоря «CMS», мы, как правило, подразумеваем Web Content Management System и совсем забываем суть этого определения. Мы говорим о системах построения веб-сайтов, вместо систем управления содержимым.
По моему личному опыту, основное предназначение CMS состоит в том, чтобы предоставить простому редактору возможность добавления новостей на сайт. Да, там всегда можно добавить новые статичные страницы, да, можно установить навороченные виджеты, да, можно менять CSS в красивом редакторе. Но, это делаете Вы, а не заказчик и не редактор. Вы делаете это один раз прежде чем сдать заказчику веб-сайт визитку/каталог/интернет-магазин. И хорошо, если CMS позволяет спрятать от редактора все лишнее, чтобы он не выстрелил себе в ногу. Обычно, вам гораздо удобнее было бы реализовать тот же функционал при помощи базовых средств вашего любимого языка/фреймворка. И помимо всего прочего, чем сложнее и «универсальнее» CMS, тем больше граблей и костылей кроется внутри. И тем выше вероятность столкнуться с ними при малейшем отклонении от заданного разработчиками CMS направления.
Я надеюсь, вы уже поняли, к чему я вас склоняю. Если вся соль в админке, то почему бы не строить веб-сайты так, как Вам нравится, а вместо построения админки для заказчика/редактора, просто воспользоваться некой системой управления содержимым? Пусть такая система не лезет в тонкости реализации нашего веб-сайта, а просто даст возможность красиво и удобно добавлять новости на сайт. Давайте возьмем типичную CMS, отсечем все лишнее и оставим только панель управления контентом. А впрочем, давайте пойдем дальше и обзовем это облачным сервисом, который соединится с нашей БД и сам нарисует админку, не требуя с нашей стороны каких-то дополнительных серверных мощностей и установок стороннего софта. Просто разрешим одному IP-адресу обращаться по одному паролю только к определенному набору таблиц, доступных для редактирования.
Рассмотрим несколько частных случаев для потенциального использования такого сервиса.
Предположим вам нужно создать веб-сайт. Конечно ваш заказчик хочет самостоятельно добавлять на сайт новости/товар/фотографии (нужное подчеркнуть). В таком случае, у вас есть две опции:
а) использовать CMS
б) самостоятельно сделать админку
Конечно, если ваша контора или лично вы являетесь спецом в области конкретной CMS и заказчика это устраивает, то такого вопроса не стоит и вы просто делает все как обычно(разворачиваете новый экземпляр CMS и создает сайт. Все идет отлично, до тех пор, пока заказчик не захотел некоторый «Функционал». Этот «Функционал» никак не вписывается в существующую архитектуру CMS, вам приходится всячески изворачиваться и продираться через дебри таблиц с говорящими названиями «CONTENT_127» и «TABLE_45». Кроме того, есть CMS-ки c унылыми и/или непонятными простомусмертному редактору админками.
Многие разработчики идут другим путем и не используют CMS. За что расплачиваются необходимостью писать однотипные страницы с пейджерами, сортировкой и фильтрацией.
Я побывал по обе стороны баррикад и мне решительно не нравится ни то, ни другое.
Предположим, вы решили написать невиданное доселе мобильное приложение для поиска ближайшего фруктового магазина на карте. Скорее всего, вы захотите держать список яблочных магазинов в централизованном хранилище данных, с которым через веб-сервис будет взаимодействовать ваше мобильное приложение. И, вероятно, вы на коленке напишите админку для быстрого добавления новых яблочных магазинов в базу. Возможно, что это будет даже Desktop приложение. Но все равно, суть сведется к тому, что вы нарисуете еще один интерфейс к плоской табличке со справочником.
Предположим у вас есть корпоративная база данных за семью замками. Скорее всего у вас даже есть Delphi приложение, написанное для добавления новых объектов в систему главбухом. Приложение уже давно морально устарело, а вам нужно ввести новую сущность в систему. Вы устанавливаете Borland Delphi 7 на виртуальную машину с Windows XP, открываете исходники и… Form1, Button1, Button1_OnClick7, вся логика сосредоточена в обработчиках кнопок. Переписывать все с нуля? Пытаться прикрутить в этот интерфейс новую таблицу?
А теперь представьте, что вы открываете волшебный веб-сайт, регистрируетесь, сообщаете ему строку подключения к вашей БД (да, придется разрешить доступ к БД с одного IP-адреса). Тут же видите все свои таблицы. Выбираете нужные редактору таблички. Обзываете их как душе угодно (Table_75 — это на самом деле новости). Указываете доступные для просмотра/редактирования столбцы и их названия для отображения редактору… И получаете готовую админку. Админка уже умеет отображать таблицу с пейджером, сортировкой и фильтрацией, умеет редактировать записи. Выборка идет постраничная, не тянутся все данные целиком. Можно ограничить доступ для разных типов пользователей, вплоть до различных столбцов. Если вы используете CMS — просто укажите, какие CMS таблицы в БД хранят нужные для редактирования данные, сервис отобразит более удобную админку, чем то, что шло из коробки. Если вы строили веб-сайт с нуля, то вам не нужно писать однотипные страницы с пейджером. Если вы создаете мобильное приложение, то вам не нужно вникать в тонкости построения веб-приложений, просто пишите приложение, а админку сделает чудо сервис. Все тоже самое с корпоративным решением, но для обеспечения еще большей безопасности, у меня есть отдельные мысли, о которых я, возможно, расскажу позже.
Понятно, что существуют определенные ограничения и данный сервис подойдет далеко не всем, но на данном этапе, я предлагаю вам абстрагироваться от технической реализации и оценить саму идею подобного сервиса. Если не найдется годных аналогов и идея покажется кому-то интересна, то готов в следующей статье изложить свои мысли по поводу технической реализации, потенциального набора фич и прочие грязные подробности.
P.S.: Основано на реальных событиях.
P.P.S.: Все совпадения с реальными проектами и таблицами случайны.
Микеланджело Буонарроти
Добрый день, уважаемые хабражители. Сегодня я хотел бы поделиться с вами одной, как мне кажется, интересной идеей веб-сервиса.
В общих чертах, основную идею можно понять из заголовка. Я хочу построить облачную систему управления контентом баз данных (CDBCMS — Cloud database content management system). Проще говоря, это веб-сервис для обеспечения доступа к базе данных, генерирующий красивую и удобную панель для редактирования содержимого вашей базы данных.
Сразу оговорюсь, что уже есть вполне определенное видение данного сервиса и некоторые наработки, но прежде, чем будет убито огромное количество времени на его окончательную реализацию и запуск, я хотел бы спросить совета у хабрасообщества.
Итак, для чего я написал эту статью:
1. Поиск уже существующих решений (я честно пытался найти что-то подобное — буду благодарен, если приведете в комментариях ссылку).
2. Изучение спроса среди IT-сообщества.
3. Поиск желающих присоединиться к разработке.
Шо вам с меня надо?
Все знают, что такое CMS — Content management system. Говоря «CMS», мы, как правило, подразумеваем Web Content Management System и совсем забываем суть этого определения. Мы говорим о системах построения веб-сайтов, вместо систем управления содержимым.
По моему личному опыту, основное предназначение CMS состоит в том, чтобы предоставить простому редактору возможность добавления новостей на сайт. Да, там всегда можно добавить новые статичные страницы, да, можно установить навороченные виджеты, да, можно менять CSS в красивом редакторе. Но, это делаете Вы, а не заказчик и не редактор. Вы делаете это один раз прежде чем сдать заказчику веб-сайт визитку/каталог/интернет-магазин. И хорошо, если CMS позволяет спрятать от редактора все лишнее, чтобы он не выстрелил себе в ногу. Обычно, вам гораздо удобнее было бы реализовать тот же функционал при помощи базовых средств вашего любимого языка/фреймворка. И помимо всего прочего, чем сложнее и «универсальнее» CMS, тем больше граблей и костылей кроется внутри. И тем выше вероятность столкнуться с ними при малейшем отклонении от заданного разработчиками CMS направления.
И шо вы таки предлагаете?
Я надеюсь, вы уже поняли, к чему я вас склоняю. Если вся соль в админке, то почему бы не строить веб-сайты так, как Вам нравится, а вместо построения админки для заказчика/редактора, просто воспользоваться некой системой управления содержимым? Пусть такая система не лезет в тонкости реализации нашего веб-сайта, а просто даст возможность красиво и удобно добавлять новости на сайт. Давайте возьмем типичную CMS, отсечем все лишнее и оставим только панель управления контентом. А впрочем, давайте пойдем дальше и обзовем это облачным сервисом, который соединится с нашей БД и сам нарисует админку, не требуя с нашей стороны каких-то дополнительных серверных мощностей и установок стороннего софта. Просто разрешим одному IP-адресу обращаться по одному паролю только к определенному набору таблиц, доступных для редактирования.
А мане нужен етот гембель?
Рассмотрим несколько частных случаев для потенциального использования такого сервиса.
Веб-сайт
Предположим вам нужно создать веб-сайт. Конечно ваш заказчик хочет самостоятельно добавлять на сайт новости/товар/фотографии (нужное подчеркнуть). В таком случае, у вас есть две опции:
а) использовать CMS
б) самостоятельно сделать админку
Конечно, если ваша контора или лично вы являетесь спецом в области конкретной CMS и заказчика это устраивает, то такого вопроса не стоит и вы просто делает все как обычно(разворачиваете новый экземпляр CMS и создает сайт. Все идет отлично, до тех пор, пока заказчик не захотел некоторый «Функционал». Этот «Функционал» никак не вписывается в существующую архитектуру CMS, вам приходится всячески изворачиваться и продираться через дебри таблиц с говорящими названиями «CONTENT_127» и «TABLE_45». Кроме того, есть CMS-ки c унылыми и/или непонятными простому
Многие разработчики идут другим путем и не используют CMS. За что расплачиваются необходимостью писать однотипные страницы с пейджерами, сортировкой и фильтрацией.
Я побывал по обе стороны баррикад и мне решительно не нравится ни то, ни другое.
Мобильное приложение
Предположим, вы решили написать невиданное доселе мобильное приложение для поиска ближайшего фруктового магазина на карте. Скорее всего, вы захотите держать список яблочных магазинов в централизованном хранилище данных, с которым через веб-сервис будет взаимодействовать ваше мобильное приложение. И, вероятно, вы на коленке напишите админку для быстрого добавления новых яблочных магазинов в базу. Возможно, что это будет даже Desktop приложение. Но все равно, суть сведется к тому, что вы нарисуете еще один интерфейс к плоской табличке со справочником.
База данных
Предположим у вас есть корпоративная база данных за семью замками. Скорее всего у вас даже есть Delphi приложение, написанное для добавления новых объектов в систему главбухом. Приложение уже давно морально устарело, а вам нужно ввести новую сущность в систему. Вы устанавливаете Borland Delphi 7 на виртуальную машину с Windows XP, открываете исходники и… Form1, Button1, Button1_OnClick7, вся логика сосредоточена в обработчиках кнопок. Переписывать все с нуля? Пытаться прикрутить в этот интерфейс новую таблицу?
Я шо-то не понял
А теперь представьте, что вы открываете волшебный веб-сайт, регистрируетесь, сообщаете ему строку подключения к вашей БД (да, придется разрешить доступ к БД с одного IP-адреса). Тут же видите все свои таблицы. Выбираете нужные редактору таблички. Обзываете их как душе угодно (Table_75 — это на самом деле новости). Указываете доступные для просмотра/редактирования столбцы и их названия для отображения редактору… И получаете готовую админку. Админка уже умеет отображать таблицу с пейджером, сортировкой и фильтрацией, умеет редактировать записи. Выборка идет постраничная, не тянутся все данные целиком. Можно ограничить доступ для разных типов пользователей, вплоть до различных столбцов. Если вы используете CMS — просто укажите, какие CMS таблицы в БД хранят нужные для редактирования данные, сервис отобразит более удобную админку, чем то, что шло из коробки. Если вы строили веб-сайт с нуля, то вам не нужно писать однотипные страницы с пейджером. Если вы создаете мобильное приложение, то вам не нужно вникать в тонкости построения веб-приложений, просто пишите приложение, а админку сделает чудо сервис. Все тоже самое с корпоративным решением, но для обеспечения еще большей безопасности, у меня есть отдельные мысли, о которых я, возможно, расскажу позже.
И шо вы себе думаете?
Понятно, что существуют определенные ограничения и данный сервис подойдет далеко не всем, но на данном этапе, я предлагаю вам абстрагироваться от технической реализации и оценить саму идею подобного сервиса. Если не найдется годных аналогов и идея покажется кому-то интересна, то готов в следующей статье изложить свои мысли по поводу технической реализации, потенциального набора фич и прочие грязные подробности.
P.S.: Основано на реальных событиях.
P.P.S.: Все совпадения с реальными проектами и таблицами случайны.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Имеет ли смысл данная затея?
17.74% Да, я бы еще и приплачивал!11
24.19% Да, бесплатно я бы пользовался.15
17.74% Поздравляю, Вы изобрели велосипед! (в комментариях есть ссылка)11
1.61% Нет, я обожаю CMS, и подобные глупости меня не интересуют!1
3.23% Нет, я обожаю писать админки с пейджерами, и никто меня не остановит!2
24.19% Нет, давать доступ к своей базе кому попало я не буду.15
11.29% Нет! И причина совсем в другом (напишу в комментарях)7
Проголосовали 62 пользователя. Воздержались 30 пользователей.