Соображения программирования для виртуализированных приложений
-
29-09-2019 - |
Вопрос
Есть много вопросов, так что спрашивают о плюсах и минусах виртуализации как для развития, так и для тестирования.
Мой вопрос крайне отличается - в мире, в котором виртуализация является обычным явлением, то, что программист должен учитывать, когда речь идет о написании программного обеспечения, которое может быть развернуто в виртуализированной среде? Некоторые из моих первоначальных мыслей:
- Обнаружение Если работает другой экземпляр вашего приложения
- Общение с аппаратным обеспечением (физическим / виртуальным)
- Ресурсная дросселя (приложение написано для многоядерного процессора, работающего на виртуальной машине с одной CPU)
Что-нибудь еще?
Решение
У вас есть большинство оснований, покрытых тремя широкими точками. Берегись:
- Аппаратные проблемы, связанные с связи. Скорость доступа диска сильно отличается (и могут иметь необычайно высокие крайности - представьте себе виртуальную машину, которая закрывается на 3 дня в середине диска. Доступ к сети может прервать необычные ответы
- Причудливый указатель арифметика. Попытаться избежать этого
- Тяжелая зависимость от необычно необычного низкого уровня / вспомогательных инструкций
- Олияется на машинные часы. Помните, что любые звонки, которые вы делаете в часы, и промежутки времени, могут регулярно возвращать необычные значения при работе на VM
- Однократные приложения CPU могут быть на нескольких машинах процессора, которые делают прикольные вещи, такие как Работа воровство
- Угловые случаи и необычные режимы отказа встречаются гораздо более распространены. Возможно, вам не придется беспокоиться о том, что сетевая карта исчезнет в середине вашего общения на настоящей машине, как на виртуальной
- Ручное управление ресурсами (память, диск и т. Д.). Чем более автоматизирована работа, тем лучше виртуальная среда, вероятно, будет ее обрабатывать. Например, вам может быть лучше, используя тип языка/среды, управляемого памятью, вместо того, чтобы писать приложение в C.
Другие советы
По моему опыту, есть лишь пара вещей, о которых вам нужно заботиться:
Ваше приложение не должно выйти из строя из -за нехватки времени процессора (т.е. слишком тесно используя тайм -ауты)
Не используйте постоянные приоритетные процессы для выполнения задач на заднем плане
Часы могут работать неравномерно
Не прогонять то, что говорит ОС о нагрузке системы
Почти любая другая проблема не должна решать приложение, а виртуализатором, хост ОС или ваша предпочтительная система Sys-Admin :-)