Сегодня наткнулся на очень интересную статью в Интернете, повествующую о наиболее важных вещах, помнить о которых должен каждый Windows Azure девелопер. Как по мне каждый пункт действительно очень важен, а все вместе позволят сохранить вам не только нервы и время, но также и деньги, список был немного отфильтрован ибо с некоторыми моментами я был категорически не согласен. Итак вот он этот небольшой список
1. Как можно реже обрабатывайте запросы клиентов и по возможности отправляйте их на сторонние ресурсы (например в хранилище блобов за статическим контентом)
2. Используйте Shared Access Signature для прямого доступа к закрытому контенту. Доступ может носить как временный характер так и отменяться по требованию.
3. Получайте доступ к блобам посредством CDN. В таком случае контент будет доставляться конечным кастомерам максимально быстро, а количество задействованных сетевых устройств будет наоборот минимальным
4. Если Вы используете CDN не забывайте о времени устаревания элементов в сети доставки контента. По умолчанию это 72 часа
5. Если Вы используете CDN также не забывайте использовать версионирование урлов. Это значительно сократит количество проблем с кешированием данных в CDN.
6. Для наиболее “горячих” данных используйте распределенное кеширование, например, Windows Azure AppFabric Caching. С распределенным кешированием есть возможность снизить время ожидания, а также в некоторых случаях и стоимость
7. Подумайте над тем, чтобы использовать большое количество небольших инстансов, а не пару сверх производительных машин. В конечном счете Вы должны получить больший прирост производительности.
8. Используйте SQL Azure Federations для разбиения массива данных на шарды и повышения производительности системы
9. Не забывайте выполнять тюнинг производительности вашего приложения при помощи стандартных средств измерения и оптимизации
10. Для Веб-приложений не забывайте включать компрессию дополнительных типов контента (желательно,кстати, не только для облачных приложений)
11. Если Вы используете AppFabric Caching, то желательно кешировать небольшие по размеру объекты. Это повысит производительность решения
12. Применяйте VM-роль только в случаях, когда процесс инсталляции компонента затянут по времени или требует ручного вмешательства.
13. В большинстве случаев Вам достаточно будет Startup таска для инсталляции необходимых компонентов, поэтому VM-роль только для ОЧЕНЬ специфических случаев
14. Используйте асинхронный паттерн программирования и Windows Azure Queues вместо синхронного подхода в ваших ролях
15. Не соединяйте устройства напрямую с SQL Azure базой данных. Проксируйте доступ посредством сервисного слоя (SOA паттерн - идеальный кандидат)
16. Не забывайте использовать параметр /y для предотвращения появления надоедливых подтверждений (немаловажно для Startup тасков)
17. Для мониторинга определенного процесса используйте ProgramEntryPoint или NetFxEntryPoint вместо Startup таска
18. Установите NetworkTrafficRules для большей защиты ваших ролей
19. Если Вы используете Windows Azure Traffic Manager – создайте страничку для мониторинга состояния ваших приложений
20. Если Вы используете Windows Azure Table Storage – применяйте параметр SaveChangesOptions.Batch для сохранения транзакций и повышения производительности
21. Выбор размера виртуалки чрезвычайно важен. Трезво оцените вашу предметную область, уровень предполагаемых нагрузок и выберите соответствующий размер виртуальной машины
22. Не используйте аккаунт по умолчанию для AppFabric Service Bus. Создайте свой собственный аккаунт и предоставьте ему необходимый набор пермишенов. Как это сделать написано вот в этой публикации
23. Не сохраняйте логин для SQL Azure. созданный на портале разработчика, в строке соединения. Создайте свой собственный логин Для работы вам нужны минимальные права и вам не нужно использовать SA для этого
24. При использовании очередей (Windows Azure Queues) воспользуйтесь методом GetMessages(count) вместо GetMessage – это позволит значительно сократить количество транзакций и повысить производительность вашего решения
25. Если Вы используете Worker-роли, которые периодически опрашивают очередь, применяйте технику “усыпления” роли в случае если очередь пуста. Это уменьшит количество запросов и повысит производительность решения
26. Естественно если Вы пользуетесь 25-м пунктом – подумайте над тем как возвращать к жизни ваши Worker-роли. AppFabric Service Bus может быть идеальным кандидатом для этого, но стоит обратить внимание на стоимость такого гибкого решения
27. Масштабируйте ваше приложение по всем направлениям, как горизонтально так и вертикально :)
Источник: Windows Azure Best Practices
1. Как можно реже обрабатывайте запросы клиентов и по возможности отправляйте их на сторонние ресурсы (например в хранилище блобов за статическим контентом)
2. Используйте Shared Access Signature для прямого доступа к закрытому контенту. Доступ может носить как временный характер так и отменяться по требованию.
3. Получайте доступ к блобам посредством CDN. В таком случае контент будет доставляться конечным кастомерам максимально быстро, а количество задействованных сетевых устройств будет наоборот минимальным
4. Если Вы используете CDN не забывайте о времени устаревания элементов в сети доставки контента. По умолчанию это 72 часа
5. Если Вы используете CDN также не забывайте использовать версионирование урлов. Это значительно сократит количество проблем с кешированием данных в CDN.
6. Для наиболее “горячих” данных используйте распределенное кеширование, например, Windows Azure AppFabric Caching. С распределенным кешированием есть возможность снизить время ожидания, а также в некоторых случаях и стоимость
7. Подумайте над тем, чтобы использовать большое количество небольших инстансов, а не пару сверх производительных машин. В конечном счете Вы должны получить больший прирост производительности.
8. Используйте SQL Azure Federations для разбиения массива данных на шарды и повышения производительности системы
9. Не забывайте выполнять тюнинг производительности вашего приложения при помощи стандартных средств измерения и оптимизации
10. Для Веб-приложений не забывайте включать компрессию дополнительных типов контента (желательно,кстати, не только для облачных приложений)
11. Если Вы используете AppFabric Caching, то желательно кешировать небольшие по размеру объекты. Это повысит производительность решения
12. Применяйте VM-роль только в случаях, когда процесс инсталляции компонента затянут по времени или требует ручного вмешательства.
13. В большинстве случаев Вам достаточно будет Startup таска для инсталляции необходимых компонентов, поэтому VM-роль только для ОЧЕНЬ специфических случаев
14. Используйте асинхронный паттерн программирования и Windows Azure Queues вместо синхронного подхода в ваших ролях
15. Не соединяйте устройства напрямую с SQL Azure базой данных. Проксируйте доступ посредством сервисного слоя (SOA паттерн - идеальный кандидат)
16. Не забывайте использовать параметр /y для предотвращения появления надоедливых подтверждений (немаловажно для Startup тасков)
17. Для мониторинга определенного процесса используйте ProgramEntryPoint или NetFxEntryPoint вместо Startup таска
18. Установите NetworkTrafficRules для большей защиты ваших ролей
19. Если Вы используете Windows Azure Traffic Manager – создайте страничку для мониторинга состояния ваших приложений
20. Если Вы используете Windows Azure Table Storage – применяйте параметр SaveChangesOptions.Batch для сохранения транзакций и повышения производительности
21. Выбор размера виртуалки чрезвычайно важен. Трезво оцените вашу предметную область, уровень предполагаемых нагрузок и выберите соответствующий размер виртуальной машины
22. Не используйте аккаунт по умолчанию для AppFabric Service Bus. Создайте свой собственный аккаунт и предоставьте ему необходимый набор пермишенов. Как это сделать написано вот в этой публикации
23. Не сохраняйте логин для SQL Azure. созданный на портале разработчика, в строке соединения. Создайте свой собственный логин Для работы вам нужны минимальные права и вам не нужно использовать SA для этого
24. При использовании очередей (Windows Azure Queues) воспользуйтесь методом GetMessages(count) вместо GetMessage – это позволит значительно сократить количество транзакций и повысить производительность вашего решения
25. Если Вы используете Worker-роли, которые периодически опрашивают очередь, применяйте технику “усыпления” роли в случае если очередь пуста. Это уменьшит количество запросов и повысит производительность решения
26. Естественно если Вы пользуетесь 25-м пунктом – подумайте над тем как возвращать к жизни ваши Worker-роли. AppFabric Service Bus может быть идеальным кандидатом для этого, но стоит обратить внимание на стоимость такого гибкого решения
27. Масштабируйте ваше приложение по всем направлениям, как горизонтально так и вертикально :)
Источник: Windows Azure Best Practices
Комментариев нет:
Отправить комментарий