SharePoint 2016 для архитекторов

Месяц назад SharePoint 2016 стал RTM. Это значит, что изменений в функционале SharePoint в ближайшие полгода мы не увидим.

SharePoint 2016 еще не GA (General Availability), то есть вы не сможете получить полноценный лицензионный ключ, только триал. Но уже пора думать о переходе на новую версию.

В SharePoint 2016 мало изменений с точки зрения пользователя или разработчика, зато много с точки зрения администратора и архитектора.

Подробнее рассмотрим новшества.

Project Server

Это первое о чем вы узнаете еще до установки SharePoint 2016. SharePoint и Project Server теперь одно целое. Ставятся они вместе, таблицы project хранятся в контентной базе SharePoint. Для включения Project Server 2016 достаточно одной команды PowerShell. С точки зрения маркетинга и продаж это все еще разные продукты.

Непонятно хорошо ли Project Server будет от такого тесного соседства с SharePoint. Раньше прожект пытался дистанцироваться от шарика, были рекомендации иметь для Project Server отдельную ферму, заказчики не всегда знали, что для Project Server нужен SharePoint eCAL. Посмотрим что будет в новой версии.

Нет больше Foundation и не поддерживается SQL Express

Огромный удар для кучи партнеров Microsoft, которые продавали змеиный яд решения на бесплатной версии. Microsoft решил отказаться от беслатной версии, приучая клиентов платить за SharePoint. Помоему очень хорошее решение, так как большинство разработок на Foundation по большей части состоит из неумело повторенных фич платной версии SharePoint.

У Microsoft была стратегия, что бесплатная версия Foundation должна продавать платную. WSS 2.0 даже включили в состав Windows Server 2003R2. Получилось ровно обратное - при наличии бесплатного Foundation заказчики даже не рассматривали платную версию.

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

SQL Express иногда использовали для разработческих\демонстрационных сред. Но теперь SQL Server Developer Edition бесплата для всех зарегистрированных разработчиков, поэтому потребность в Express-версии гораздо ниже.

Минимальные требования

Процессоров и памяти для SharePoint 2016 требуется столько же, сколько для 2013. Я бы рекомендовал иметь один сервер минимум с 16 гб оперативки и 4 ядрами для SharePoint+SQL для 300 активных пользователей, которые заходят на портал и что-то делают минимум раз в день. При росте количества пользователей масштабировать службы, которые не выдерживают нарузки.

Требования к софту изменились сильно - минимум Windows Server 2012R2 и SQL Server 2014 SP1, а лучше SQL Server 2016, чтобы поставить Reporting Services и PowerPivot. Минимальная поддерживаемая версия IE - 10, видимо потому, что используется CSS 3.

Нет больше Standalone режима установки

Еще со времен WSS 2.0 (может и раньше, я не в курсе) в SharePoint было два режима - Ферма и Standalone. Ферма могла быть развернута на нескольких серверах и требовала доменных учеток, а Standalone работал с локальными учетками и мог ставится даже без AD.

В SharePoint 2010 без AD стало невозможно установить SharePoint, а в Standalone было огромное количество багов. При этом ферму, поставленную в Standalone, было практически невозможно масштабировать. Надо было еще в 2013 отказаться от этого режма, но почему-то его оставили и убрали только сейчас.

MinRole

Во время запуска Configuration Wizard спрашивают какя роль будет у сервера. Указав роль вы получете набор Service Application на этом сервере без возможности этот набор изменить. Кроме роли Custom, при которой вы сможете настроить службы на сервере самостоятельно.

С одной стороны это упрощает настройку. С другой - отказоустойчивая ферма теперь требует 8 серверов SharePoint (4 роли * 2 сервера), это в дополнение к двум серверам для баз данных и двум серверам для Office Online Server.

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

Распределенный кэш

В SharePoint 2013 была проблема. Он использовал AppFabric Cache 1.0, который содержал утечки памяти. Надо было руками патчить его до последнего Cumulative Update. В SharePoint 2016 теперь ставится AppFabric сразу с CU7.

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

При полностью рабочем кэше на односерверной ферме в Azure без нагрузки странцы отдаются за 1,5 секунды. Если кэш не работает, то время может доходить до 7 секунд.

На technet есть официальный гайд по настройке тайм-аутов, он акутален как для SharePoint 2013, так и для 2016. Но в 2016 появились еще несколько кэшей (ContainerType):

  • DistributedSharedWithUserCache
  • DistributedUnifiedGroupsCache
  • DistributedFileLockThrottlerCache
  • DistributedResourceTallyCache
  • DistributedHealthScoreCache

Для них тоже стоит увеличить тайм-ауты, особенно в случае односерверной фермы.

Site Masters и баг в личных сайтах

Для создания личных сайтов в SharePoint 2016 используется новый механизм, называемый Site Masters. Вместо создания новой сайт-коллекции и активирования фич с запуском кода, создается одна скрытая сайт-коллекция (master), а из нее новые коллекции получаются просто копированием на уровне базы данных. Можно самостоятельно добавить мастеры для шаблонов сайтов, если надо будет массово создавать коллекции по этим шаблонам.

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

Как раз в личных сайтах в SharePoint 2016 есть ошибка. Шаблон по-умолчанию не содержит фичи для социальной ленты. В зависимости от последовательноси действий это может привести к тому, что личные сайты не будут создаваться вообще или создастся мастер без нужной фичи (еще непонятно что хуже).

Я сделал фикс для этой проблемы. Надо скачать себе все файлы из репозитария, запустить build.cmd и установить на ферму полученный WSP-файл. Это обязательно надо сделать до первого захода на личный сайт. Когда Microsoft багу починит можно будет WSP не отключать, он не помешает.

Подробное описание бага - https://thesharepointfarm.com/2016/03/unable-to-provision-social-features-in-sharepoint-server-2016/.

Нет больше FIM в SharePoint

User Profile Sync Service, который по сути FIM Sync Service, появился в SharePoint 2010 и … не работал. Потом вышел CU, который его чинит, а следущий CU сновал ломал UPS. В SharePoint 2013 UPS стал работать стабильнее, но все равно было сложности с настройкой и отладкой.

В SharePoint 2016 окончательно решили этот вопрос - выпилили FIM из SharePoint. Теперь для простых сценариев есть AD Import, а для сложных можно отдельно установить Microsoft Identity Manager (MIM, теперь FIM так называется) и настроить синхронизацию в нем. Microsoft подготовил скрипты для настройки MIM - https://github.com/OfficeDev/PnP-Tools/tree/master/Solutions/UserProfile.MIMSync.

С точки зрения лицензирования MIM Sync Engine требует только Windows Server CAL, поэтому не увеличивает лицензионную нагрузку.

Продолжение следует

В следующий раз я расскажу про Office Online Server, Excel Service и PowerPivot.
Кто хочет научится устанавливать и настраивать все возможности SharePoint - приходите на тренинг.
Описание и регистрация по ссылке https://gandjustas.timepad.ru/event/317082/.



Блоггинг и электронная коммерция без сервер-сайд

За 7 лет я написал более сотни постов. Все посты выводятся на главной с разбиением по страницам, по 5 постов. Всего 32 страницы. Угадайте сколько человек добиралось до десятой ? Ни одного. Это значит, что две трети того, что я написал, можно найти только в гугле или яндексе. Позиции у блога в индексе не очень высокие. Значит примерно половина блога просто не существует.

Старые посты

Чтобы до старых постов можно было хоть как-то добраться придумали категории и теги. Один клик по тегу и подборка постов на эту тему под рукой, даже если посты написаны давным-давно.

На Jekyll это оказалось не так просто. Теги к постам добавлять можно, а вывести на страницу все посты по конкретному тегу - задача нетривиальная и не полностью автоматизируется. При добавлении тегов надо будет руками добавлять страницы.

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

Но теги не всегда помогают, когда много пишешь на одну тему. У меня по теме SharePoint больше сотни постов, половина из которых написана три года назад. Даже если все посты по тегу выведу на одину страницу, то сомневаюсть что кто-нибудь доскроллит до конца.

Рекомендации

Гораздо интереснее, чтобы читателю предлагали перейти к наиболее интересным и\или похожим постам. Для этого нужен механизм рекомендаций.

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

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

Шаринг

Почти треть трафика у меня приходит из соцсетей. Чтобы автоматически постить обноления в соцсети я использую IFTTT. Чтобы посты видели только те, кому интересно, сделал для блога страницы на FB и G+.

Поиск и прием платежей

Тут помог яндекс. У яндекса есть поиск по сайту, я его прикрутил к блогу. Для приема платежей в магазине прикрутил формы быстрой оплаты яндекс-денег. Один недостаток - берут коммиссию с покупателя.

Автоматизировать бекенд магазиа можно с помощью zapier. Он умеет парсить сообщения электронной почты от яндекс-денег и реагировать на них.

Заключение

За две недели в свободное время я поднял блог со всей полезной функциональностью на Jekyll и GitHub. Работает он быстрее, чем blogger, и я могу полнностью контролировать разметку.

Если интересно как устроен блог - можно посмотреть исходники на github.



Встреча сообщества по SharePoint и Office 365

7 апреля 2016 года состоится встреча сообщества по SharePoint и Office 365. Будем обсуждать SharePoint 2016, который недавно стал RTM. На встрече расскажем про новые фичи, особенности миграции и апгрейда, project server и DSC. Встреча пройдет в Microsoft Technology Center на Лесной. Начало встречи в 18:30.

Доклады

Что нового в SharePoint 2016
Станислав Выщепан
В докладе я расскажу что нового появилось в SharePoint 2016 и как это полвияет на архитектуру решений. Посмотрим вживую на некоторые возможности их применение. Разберем фичи и баги новой версии.

Апгрейд и миграция на SharePoint 2016
Борис Журкин
В докладе я расскажу о своем опыте апгрейда c SharePoint 2013 до SharePoint 2016, и о миграции на Project Server 2016 с 2013. Посмотрим, какие баги и проблемы удалось обнаружить в процессе и как их обойти.

Project Server 2016
Дмитрий Волковский
Project Server – незаменимый инструмент в деле управления проектами. Он помогает планировать ресурсы, считать бюджет, управлять портфелем. Теперь Project Server стал частью SharePoint. В моём докладе мы посмотрим какой путь прошёл PS за эти 3 года, какие тенденции развития и какая выгода от Project Server.

SharePoint Desired State Configuration
Виталий Жуков
DSC (Desired State Configuration) - новая возможность PowerShell 4.0, которая позволяет задавать конфигурацию, отслеживать изменения и исправлять её, приводя к изначально заданной. В докладе разберем применение PowerShell Desired State Configuration для развертывания и управления фермой SharePoint.

Для участвия обязательна регистрация, иначе вас не пустят в здание.
Чтобы зарегистрироваться перейдите по ссылке.



Новый блог на Jekyll и GitHub Pages

Семь лет назад я выбрал blogger как платформу для блога, потому что он поддерживал Windows Live Writer и был бесплатным. Сейчас Live Writer уже не поддерживается, стал модным “отзывчивый” дизайн и язык разметки markdown. Пришло время что-то менять.

Блог должен быть быстрым

Когда пользовался blogger меня изрядно бесило, что страницы открываются по 4-5 секунд на компьютере. На планшете можно было скроллить страницу только секунд через 10 после открытия. Хотелось, чтобы блог открывался менее чем за секунду и ничего не мешало сразу его проскроллить. Нужен был движок в котором я смогу контролировать разметку.

Блог должен быть бесплатным

Я, как и любой человек, люблю халяву. Ставить свою CMS и платить за хостинг мне не хотелось, но все бесплатные платформы - крайне медленные. Отличный вариант - GitHub Pages. По сути это бесплатный хостинг, но без бекенда. Вместо бекенда можно использовать статический генератор сайтов - Jekyll.

Jekyll и GitHub Pages

Для программистов это известная последовательность действий. Надо закидывать файлы в репозиторий на github и они автоматически превращаются в посты блога. Jekyll сам собирает список постов и rss-ленту по шаблонам.

Посты можно писать в html, markdown и textile. Этот пост, например, написан в markdown. Для публикации фрагментов кода можно использовать github-flavored markdown, например так:

window.myappName$ = window.myappName$ 
                    || jQuery.noConflict(true);
                    
(function($) {
    if (!_spBodyOnLoadCalled) {
        _spBodyOnLoadFunctions.push(pageLoad);
    } else {
        pageLoad();
    }

    function pageLoad() {
        $('#pageTitle span').text('Hello from jQuery');
    }

    RegisterModuleInit(
            _spPageContextInfo.webServerRelativeUrl 
                + '/appname/script.js', 
            pageLoad);
})(window.myappName$);

Разметка генерируется на сервере и больше не нужны javascript-библтотеки для подсветки.

В итоге удалось добиться, что страница полностью отображается и работает менее, чем за секунду. Даже на мобильном телефоне.

Дизайн блога

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

Остановился на теме Clean Blog, которую нашел одной из первых. Для нее есть готовый Jekyll шаблон. Над темой пришлось пошаманить - добавить вторую колонку, сделать русские шрифты, переделать less в scss стили.

Только картинку в шапке из шаблона оставил без изменений.

Недостатки

GitHub Pages не поддерживает плагины для Jekyll, кроме небольшого набора. Из-за этого, например, нельзя сделать даты на русском яызке. Надо будет шаманить в JavaScript, это негативно скажется на скорости загрузки страницы.

Из-за того, что нет бекенда, сложно сделать поиск или просто фильтровать список постов по тегам. Надо весь функционал выносить во внешние сервисы, как disqus для комментариев.

Заключение

Если вам интересно как делать сайты без бекенда, то посмотрите курс на Pluralsight “Web Applications Without a Server”. Меня во многом вдохновил этот курс.



Итоги 2015 года

Предыстория

В середине 2014 года я бросил работать по найму и начал развивать свой бизнес по консалтингу и разработке программ. До конца 2014 года я работал один. Иногда аутсорсил небольшие проекты знакомым, где риск был минимален.
За полгода мне удалось заработать больше, чем работая “на дядю”. Но для этого пришлось много вкалывать. Пришло понимание, что такая деятельность плохо масштабируется и я начал искать людей.

 

Все хотят бизнес, но никто не хочет рисковать

Год назад я написал пост, в котором написал что ищу партнеров, которые смогли бы развивать бизнес вместе со мной.  Искал людей, которые будут разделять мои ценности (об этом ниже) и захотят развиваться как бизнесмены.
За неделю собрал 500 просмотров в блоге и еще неизвестно сколько через RSS и получил только 3 (три) отклика. Это удивило больше всего. На хабре и форумах постоянно все пишут, что не хотят работать “на дядю”, хотят свое дело и т.д.
На практике оказалось, что готовых рискнуть гораздо меньше. Никто не хочет покидать зону комфорта.

 

Ценности

Ниже список того, чего я придерживаюсь сам и требую от всех партнеров и сотрудников.

Win-Win

ИТ-шники не всегда разделяют эту позицию. Для них есть “мы” и “они” и если “они” выиграют, то “мы” проиграем. Из-за этого нет доверия между ИТ-шниками и клиентами.
Я всегда говорю: “Не бывает так, кто клиент хочет странного. Бывает так что ты чего-то не понимаешь”. Казалось бы просто – разбирайся в проблеме, управляй рисками заказчика, и доверие к тебе возрастет. А это означает, что ты будешь долго работать с клиентом и заработаешь достаточно денег, да еще тебя рекомендовать начнут.
Но не все так могут.

Профессионализм

Профессионалу платят деньги за решение проблем. Не за то, что он задет кучу ненужных вопросов, не за то, что он начинает перекладывать проблему на клиента, не за то, что “я работала, но не шмогла”.
В моей команде все люди разбираются. “Разбираются” это не состояние, а процесс. Даже если область совершенно новая, то находишь литературу, видео-уроки, задаешь вопросы, ковыряешь исходники. Делаешь что угодно, но проблему решаешь.
Обратная сторона профессионализма – ответственность за то, что ты делаешь. Если накосячил – исправь. Даже если ты не понял клиента – это твой косяк.

Хороший клиент – довольный клиент

Клиент может получить пользу от твоей работы, но не получить удовлетворения. Такое бывает чаще, чем кажется. ИТ-шники работают с компьютерами, а компьютеры эмоций не испытывают. Многие начинают с клиентами общаться как с компьютерами.
У меня так нельзя. С клиентом надо говорить на языке клиента, не спорить, не проявлять высокомерие, не считать тупее себя. Если клиент нервничает – позвони, выясни что не устраивает. Не можешь устранить причину – найди обходной вариант, который устроит всех.

 

Развитие бизнеса

Я нашел трех человек, которые начали работать со мной. Далее они нашли нескольких человек и мы смогли “прожевать” несколько крупных проектов. Команда составляет 7 человек, все работают part time. Двое из них - ключевые партнеры, которые находят проекты, продают проекты и управляют ими.
Проекты стали меньше, но их количество выросло. Стало сложнее продавать консалтинг и обучение.
Выручка за год составила 6,5 миллионов рублей, причем в декабре был рекорд – чуть более 2 млн. Бизнес вырос в 4 раза за год и это в кризис.
При этом я не потратил ни копейки на рекламу. Продаем через личные контакты, рекомендации знакомых и партнеров (компании с которыми я ранее сотрудничал).
С одной стороны это хорошо показывает силу личных связей, а с другой стороны серьезно ограничивает рост бизнеса. Но из меня никудышный маркетолог. Все мои знания о маркетинге ограничиваются курсом маркетинга МБА и парой книжек.

 

МБА

В университете я получил образование программиста и был крайне далек от бизнеса. Когда начал развивать свой бизнес мне не хватало знаний почти во всех областях.
Заработанные деньги я вложил в обучение и пошел учиться на программу МБА в ИБДА РАНХиГС.
На МБА обучают менеджеров крупных компаний, и сложно знания применить для малого бизнеса. Но я продаю крупным компаниям и стал гораздо лучше понимать процессы, которые там происходят, и где можно создать ценность.
А еще МБА учит считать деньги. Или, как моднее говорить, “управлять финансами”. Теперь я считаю варианты в Excel прежде чем принять решение.

 

Снова ищу партнера в команду

Под конец года я проанализировал бизнес и понял, что нужно инвестировать прибыль в маркетинг. Из меня маркетолог почти никакой, поэтому мне нужен партнер или даже наставник, который поможет мне привлекать новых клиентов.
Я ищу человека, который имеет опыт в интернет-маркетинге и в продвижении услуг в b2b, готов на себя взять маркетинг или помочь составить конкретный план по привлечению клиентов. Готов делиться частью выручки с каждого нового клиента, а в дальнейшем включить в состав учредителей.
Также буду рад продавцам с клиентской базой и специалистам по Microsoft Dynamics CRM с выходами на клиентов.
Если вам интересно или вы знаете людей, которым может быть интересно – пишите на stanislav.v@vnextsoft.ru.