Соображения программирования для виртуализированных приложений

StackOverflow https://stackoverflow.com/questions/4302236

Вопрос

Есть много вопросов, так что спрашивают о плюсах и минусах виртуализации как для развития, так и для тестирования.

Мой вопрос крайне отличается - в мире, в котором виртуализация является обычным явлением, то, что программист должен учитывать, когда речь идет о написании программного обеспечения, которое может быть развернуто в виртуализированной среде? Некоторые из моих первоначальных мыслей:

  1. Обнаружение Если работает другой экземпляр вашего приложения
  2. Общение с аппаратным обеспечением (физическим / виртуальным)
  3. Ресурсная дросселя (приложение написано для многоядерного процессора, работающего на виртуальной машине с одной CPU)

Что-нибудь еще?

Это было полезно?

Решение

У вас есть большинство оснований, покрытых тремя широкими точками. Берегись:

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

Другие советы

По моему опыту, есть лишь пара вещей, о которых вам нужно заботиться:

  • Ваше приложение не должно выйти из строя из -за нехватки времени процессора (т.е. слишком тесно используя тайм -ауты)

  • Не используйте постоянные приоритетные процессы для выполнения задач на заднем плане

  • Часы могут работать неравномерно

  • Не прогонять то, что говорит ОС о нагрузке системы

Почти любая другая проблема не должна решать приложение, а виртуализатором, хост ОС или ваша предпочтительная система Sys-Admin :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top