Вопросы программирования для виртуализированных приложений - PullRequest
3 голосов
/ 29 ноября 2010

В SO много вопросов о плюсах и минусах виртуализации как для разработки, так и для тестирования.

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

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

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

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

У вас есть большинство основ, покрытых тремя широкими пунктами.Не упустите:

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

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

  • Ваше приложение не должно завершиться сбоем из-за нехватки времени ЦП (т. Е. Слишком мало времени ожидания)1005 *

  • Не используйте всегда выполняющиеся процессы с низким приоритетом для выполнения задач в фоновом режиме

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

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

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

...