Як працювати в Oracle над проектом Oracle Database – посмішки та жах

=——————————————–

База даних Oracle 12.2.

Це близько 25 мільйонів рядків коду C.

Який немислимий жах! Ви не можете змінити жодного рядка коду в продукті, не порушивши 1000 тисяч існуючих тестів. Покоління програмістів працювали над цим кодом у важкі терміни і наповнювали його всілякими лайнами.

Дуже складні логічні елементи, управління пам’яттю, перемикання контексту тощо містяться разом з тисячами прапорів. Весь код наповнений загадковими макросами, які неможливо розшифрувати, не вибравши блокнот і не розширивши відповідні набори макросів вручну. Щоб дійсно зрозуміти, що робить макрос, може знадобитися день -два.

Іноді потрібно розуміти значення та ефекти 20 різних прапорів, щоб передбачити, як код поводитиметься у різних ситуаціях. Іноді теж сотні! Я не перебільшую.

Єдина причина, чому цей продукт все ще виживає і все ще працює, – це буквально мільйони тестів!

Ось як складається життя розробника бази даних Oracle:

= Почніть працювати над новою помилкою.

= Витратьте два тижні, намагаючись зрозуміти 20 різних прапорів, які взаємодіють таємничими способами, щоб викликати цей мішок.

= Додайте ще один прапор для обробки нового спеціального сценарію. Додайте ще кілька рядків коду, який перевіряє цей прапор і обходить проблемну ситуацію, уникаючи помилки.

= Надішліть зміни до тестової ферми, що складається приблизно з 100 до 200 серверів, які б компілювали код, створювали нову базу даних Oracle та запускали мільйони тестів розподіленим способом.

= Йди додому. Приходьте наступного дня і попрацюйте над чимось іншим. Тестування може тривати від 20 до 30 годин.

= Йди додому. Приходьте наступного дня та перевірте результати випробувань на фермі. У хороший день було б близько 100 невдалих тестів. У поганий день було б близько 1000 невдалих тестів. Виберіть випадково деякі з цих тестів і спробуйте зрозуміти, що пішло не так з вашими припущеннями. Можливо, потрібно розглянути ще 10 прапорів, щоб по -справжньому зрозуміти природу вади.

= Додайте ще кілька прапорів, щоб спробувати вирішити проблему. Подайте зміни ще раз для тестування. Зачекайте ще 20-30 годин.

= Промийте і повторіть ще протягом двох тижнів, поки не отримаєте загадкове заклинання комбінації прапорів.

= Нарешті одного прекрасного дня ви досягнете успіху, якщо 0 тестів не вдасться.

= Додайте ще сотню тестів для вашої нової зміни, щоб переконатися, що наступний розробник, якому випаде нещастя торкнутися цього нового фрагмента коду, ніколи не порушить ваше виправлення.

= Подати роботу на останній раунд тестування. Потім подайте його на розгляд. Сам огляд може зайняти ще від 2 тижнів до 2 місяців. Тож перейдіть до наступної помилки, над якою потрібно працювати.

= Через 2 тижні – 2 місяці, коли все буде завершено, код буде остаточно об’єднано в основну гілку.

Наведене вище є безперебільшим описом життя програміста в Oracle, який виправляє помилку. Тепер уявіть, яким жахом буде розробка нової функції. На розробку однієї невеликої функції (скажімо щось на кшталт додавання нового режиму автентифікації, наприклад підтримки автентифікації AD), потрібно від 6 місяців до року (іноді два роки!).

Той факт, що цей продукт навіть працює, – це не що інше, як диво!

Я більше не працюю в Oracle. Більше ніколи не працюватиме в Oracle!

Спочатку ця публікація була опублікована за адресою https://www.linkedin.com/pulse/how-work-oracle-database-project-smiles-horror-mykhailo-kyrychenko/.

Mykhailo Kyrychenko люб’язно дозволив нам перекласти і опублікувати цю статтю.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: