Що ви хочете, щоб розробники зробили інакше? [зачинено]


35

Як розробник я витрачаю більшу частину свого часу на роздуми про код, інтерфейс користувача, структури даних тощо, але (сміливо визнаю) я не схильний розглядати наслідки мого додатку для системних адміністраторів та DBA, поки не настане час розгортання. додаток

По-перше, мені шкода. По-друге, що ви хочете, щоб я та інші розробники, з якими ви маєте справу, зробили б інакше? Які речі полегшать вам життя, спричинить менше проблем, заохочуватимуть співпрацю та зменшують збої, проблеми з роботою та налаштування кошмарів?

Відповіді:


34
  1. Подумайте і будуйте безпеку з 0 дня.
  2. Використовуйте керування версіями для всього: вихідного коду, документації, конфігурації тощо.
  3. Документація, документація, документація.
  4. Очистіть установку та деінсталяцію, використовуючи рідну платформу
  5. Відокремлені дані конфігурації від бібліотек та виконуваних файлів
  6. Підтримка паралельного запуску різних версій для тестування та міграції
  7. Надійна, настроювана лісозаготівля
  8. Легкий, точний, безпечний моніторинг
  9. Перевірка та резервне копіювання додатків
  10. Як ваша програма реагує на проблеми: немає пам’яті, файлова система заповнена, мережа вниз, відсутні / пошкоджені файли конфігурації, перекос часу?
  11. Завжди є окремі середовища розробки, тестування та виробництва. З усім безкоштовним програмним забезпеченням VM немає виправдань!

Пам’ятайте, що ваша програма, ймовірно, має більше станів, ніж вгору чи вниз. Намалюйте схему стану. Більшість додатків мають такі стани, як:

  • вниз
  • ініціалізація
  • одужання
  • вгору, але не приймаю роботу
  • чекання
  • контрольно-пропускний пункт
  • обробка
  • закінчення
  • закриття
  • вниз

Подумайте, що станеться, якщо система вийде з ладу під час кожного стану. Як системний адміністратор контролюватиме та контролювати переходи стану?


4
Ого. Ця ідея діаграми стану - ДУЖЕ. Я висуваю його для найкрутішого фрагмента відповіді дня!
quux

Лише нітрик: безпека - це більше проблема дизайну. Спочатку слід визначити, що означає "безпечний" у вашому контексті (що повинні робити користувачі, що є секретним тощо). Інакше розробники мало що можуть зробити ...
sleske

17

Відрізнити "користувача" від СА.

"Користувач" повинен знати, як користуватися вашим програмним забезпеченням. Користувачів не цікавлять такі речі, як установка вашого програмного забезпечення.

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

Пишіть документацію окремо для кожної з цих ролей, включаючи інформацію, що стосується кожної з них.


3
Я думаю, що варто згадати, що адміністратори повинні бути миттєвими експертами з кожної сторони своєї мережі, а також робочих станцій та додатків, які працюють на них. Коли у нас є фінанси, люди запитують нас, як зробити оновлення свого програмного забезпечення для нарахування заробітної плати, це легко, коли ми маємо логістику, запитайте, чому вони не можуть виконувати своє замовлення, нам належить вже точно знати, що входить в їх процес замовлення. Я думаю, що документація про те, як кожна система насправді спілкується з іншим, легко забувається, залишаючи нас адміністраторами виглядати "дурними", тому що ми не знаємо складних деталей їх роботи
Боббі

9

Одне з моїх побажань - включення належних повідомлень у винятки та коди помилок. Це абсолютно непрозоро для того, хто не розробив додаток, що JimmyNotAtHomeException: it's late!означає.

Але таке повідомлення Unable to find jimmy - initial manual call_mother procedureдуже корисне.


2
Я згоден. Будь ласка, майте кілька рівнів журналу та задокументуйте те, що йде в журнал!
Клінтон Блекмор

На жаль, для деяких компаній криптовалютні повідомлення про помилки є частиною їх бізнес-моделі, щоб продати контракти на підтримку. Вони насправді не хочуть, щоб ти зрозумів.
knweiss

8

Спілкування, спілкування, спілкування. Кожна проблема між системним адміністратором та розробником може завжди бути відслідкована до браку зв'язку. Якщо до початку проекту системні адміністратори (або його представник) та розробники зібралися та провели гарну рамкову дискусію, SOOOOOOOOOO багато проблем можна було б уникнути вниз. Я не можу сказати, скільки речей забруднюється, тому що ви розробляєте всіх на одній коробці в процесі розробки, щоб лише спостерігати, як вона спалахує в полум'ї, тому що додаток потім розділяється на сервер додатків + сервер DB + сервер інтерфейсу тощо. Кудо за підняття цієї теми.


8

Залучіть нас на початку проекту. Як справжнє реально рано, на етапі функціональної специфікації

Хтось ще згадував про необхідність встановлення вручну на кожному ПК, але те саме стосується змін конфігурації та конфігурації. Якщо ви вирішите зберігати щось на зразок підключення рядків на стороні клієнта та потребувати їх регулярного оновлення, ми, ймовірно, захочемо вас вбити .

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

Завжди тестуйте, використовуючи найменший загальний знаменник. Це означає, що не використовується адміністратором на найпримітивнішій ОС, наборі програм та платформі браузера у загальному користуванні. Нам не подобається необхідне оновлення браузера для всіх наших користувачів, які приземлилися на нас в останню можливу хвилину.

Не стрибайте, щоб звинувачувати нас, коли справи йдуть не так. На моїй старій роботі кожен раз, коли програма ламалася, розробники миттєво вказували на нас пальцем. "Ви встановили новий патч, не оновлюєте веб-переглядачі. Ваша безпека занадто жорстка" або що завгодно. Це породжує руйнівну атмосферу. Ми, дійсно, на одній стороні, і ми хочемо з вами працювати над тим, щоб це виправити, але ми не можемо в таких умовах.


Хоч би я міг висловити двічі :-).
sleske

7

Не будьте елітарним.

"Не марнуй мого часу, приятель. Ти просто сиддмін собаки; я пишу програмне забезпечення, і ти просто його обслуговуєш. Тож просто заткнись зі своїми дрібними турботами і зроби, як я кажу, гаразд?"

Розробник насправді сказав ці слова мені один раз (1). По електронній пошті. CC'd у велику дистрибуційну групу. Наслідків було зрозуміло: як розробник він був лордом і господарем усього програмного забезпечення Всесвіту; і я був просто найманим працівником, прийнятим на вирішення завдань, надто тривіальних для нього, щоб витрачати свій цінний час. Звичайно, це майже найгірший приклад, але ви знаєте, я чув сильні та слабкі відгомони цього коментаря від ряду розробників до і після (2).

Ви можете заробити більше грошей, ніж я (але не припускайте цього!). Але для створення, роботи та обслуговування систем, на які покладаються наші користувачі, потрібна команда. Зрештою, ми всі їм служимо.

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

Я не в шаленій силовій подорожі, оскільки так багато поганих (або просто недоброзичливих) дев сказали і подумали та розмістили на різних форумах. Але мої турботи відрізняються від ваших, і мої запитання та пропозиції не служать моєму его. Дійсно, моя робота полягає в тому, щоб ви виглядали краще, підтримуючи ваші додатки у стані підгонки, доступними та чуйними для всіх користувачів. Для цього мені доводиться підтримувати решту мережі та системи, які також працюють у формі верху.

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


(1) Він також наполягав, що його програма (інструмент для написання та управління вимогами до програмного забезпечення) потребує привілеїв адміністратора домену для встановлення та запуску. Це був великий ризик для безпеки.

(2) Я також співпрацював з багатьма дивовижними розробниками, які могли навчати, коли це потрібно, і навчатися, коли це необхідно.


Боже, який ідіот. Це досить погано сказати це, але розбивати його навколо місця - це ганебно
harriyott

Домовились. Цей розробник справді повинен був ретельно пережовуватися їхнім начальником (який, сподіваємось, також CCed ;-)).
sleske

6

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

Обговоріть розробку нової системи з систематиками. Часто існує цінне розуміння. Розробники часто розглядають дискусії із систематичними системами та дають початкові вимоги як "передчасну оптимізацію". Я фактично бачив, як голова групи розробників говорив, що це марно витрачати свій час на обговорення вимог до нових серверів баз даних із систематичними системами та DBA, навіть в міру опису, чи це завантаження, яке інтенсивно записує чи інтенсивне читання, або скільки потрібно буде сховища.

Обговоріть проблеми з систематизацією. Чесно кажучи, тільки систематики здатні правильно інтерпретувати показники продуктивності в системах. Я бачив, як розробники вирішують, що Linux завжди просочує пам'ять, оскільки вільна пам'ять, про яку повідомляє "безкоштовно", завжди зменшується, навіть після 10-го разу пояснення виходу "вільного".

Не робіть висновків, не обговорюючи це з систематинами. Я бачив, як розробники зациклювалися на таких теоріях, як "бази даних завжди пов'язані з диском" (вони не знали, що іостат навіть існує), "RAID 5 швидший для транзакційних навантажень" (заснований на спогаді однієї системи баз даних, яка була переміщена від однієї апаратної платформи до іншої - це було завантажене читання робоче навантаження, рішення RAID5 все більше і швидше накопичувачів розповсюджувалося на більше контролерів. Але вони забули ці деталі і запам'ятали лише висновок.)

Не розробляйте рішення для системної проблеми, не обговорюючи її з систематинами. Я працював в одному патологічному середовищі, де розробники розробляли б рішення та приїжджали з проханням про невелику допомогу в реалізації. Члени групи Unix, окрім мене, керівник групи Unix та його начальник, хотіли ставитись до розробників як до "замовників", а не до співробітників, які намагаються зробити загальну функцію інфраструктури. Клієнт завжди має рацію - це не ставити під сумнів, що вони роблять чи чому. Я був єдиним, хто наполягав би на тому, щоб описати проблему, щоб можна було визначити правильне рішення. Не дійте способами, які створюють такі патологічні середовища, як це. Це не призводить до чистої вигоди - натомість менеджери систем будуть діяти оборонно, і всі будуть страждати.

Ти вже не в школі. Це системи реального світу, і вони не діють ідеально. Наприклад, не все має нульову затримку. Коли sysadmin попередить вас, що рішення кластеризації мають лише політичні цілі, а додаткова складність системи знижує загальну надійність, сприйміть це серйозно. Ви повинні створити режими відмов у реальному світі, наприклад, коли ви втратите сервер, з яким ви спілкуєтесь через TCP, підключення, мабуть, не буде скинуто для вас. Сисадміни розуміють режими відмов у реальному світі.

Або слухайте те, що говорить ваш системний адміністратор, або скаржтесь керівництву на те, що ваші системні адміністратори некомпетентні та їх потрібно звільнити. Ігнорувати свій сисадмін не має сенсу.

Поміркуйте, як ви будете розгортати свою програму. Зрозумійте, що обговорювати це з вашими сисадмінами має сенс. Якщо у вас 100 ідентичних серверів, які відрізняються лише на основі одного файлу конфігурації, можливо, ви захочете розглянути можливість зберігання головних копій цих конфігураційних файлів у центральному місці. Зрозумійте, наскільки краще всім, якщо ваш додаток легко повторно розгорнути. Якщо у вас є проблеми з системою, ви б краще скористатись за лічені хвилини на запасну або чекати віків, коли пошкоджена буде відремонтована? Якщо ви зможете повторно розгорнути свою програму, ОС можна буде легше та безпечніше оновити. Ви можете це хвилювати в майбутньому.

Якщо у вас є проблеми, які, на вашу думку, можуть бути пов’язані з ОС, є сенс негайно викликати sysadmin, щоб перевірити це. Але після того, як короткочасне розслідування нічого не виявить, у вас є обов'язок пояснити проблему.

Зрозумійте, що існує різниця між "відповідати повільно" і "зовсім не реагувати".


3

Налаштуйте та розкладіть речі передбачуваним способом із передбачуваними способами зміни їх для ОС (en), для якої розробляєте. Це означає все. Наприклад: OpenLDAP має дивний спосіб робити loglevels; певні сервери IMAP навіть не мають файлів конфігурації, але повинні мати параметри, зібрані в; деякі пакети хочуть, щоб їхні речі знаходилися в одному конкретному шляху до каталогу, що неминуче порушить умовності конкретної операційної системи. Усі ці речі виділяються як бородавки на моїх звичайних конфігураціях.

Це загальне правило, але не вважайте, що ви особливі, і тому благословляйте порушувати загальні умови того, як програмні пакети зазвичай працюють на вашій платформі, якщо тільки немає вагомих вагомих причин, властивих вашому програмному забезпеченню, яке цього вимагає. "Я сильно вважаю, що це повинно бути так" недостатньо добре, щоб порушити звичні налаштування кожного; це має бути причиною, пов'язаною з функцією, яку намагається виконувати ваше програмне забезпечення.


3

Коли з додатком пов'язані міжсерверні комунікації, будь ласка, включіть хоча б один системний адміністратор у фазу проектування. Крім того, чітко документуйте залежності від інших служб: SQL, SMTP, HTTP тощо ... Не змушуйте нас здогадуватися, що ви робите, або ми не можемо допомогти вам, коли щось не працює так, як ви очікували.


3

Будь ласка, зробіть можливим автоматичне розгортання програмного забезпечення в десятках чи сотнях систем. Якщо організації потрібен пакет програмного забезпечення, системні адміністратори майже напевно не встигають встановити її вручну на кожній коробці. Якщо файл повинен мати інформацію про ліцензування, документування, як його надати, було б дуже корисно.

У Adobe в минулому були деякі інсталятори, які були справжнім болем ; будь ласка, націліться вище на це!


2

Подумайте про масштабування з першого дня. Sysadmins може творити чудеса, кидаючи гроші / обладнання на проблеми з продуктивністю, але іноді жодна з них не допоможе - зокрема, подумайте про блокування - іноді ви не можете придбати себе з проблеми блокування. Дякуємо за запитання :)

О, і намагайся бути 64-розрядним, де це можливо, і багатопоточним :)



2

Крім усього іншого тут ...

  • Попросіть моделювати виробниче середовище (сервер розробки або VM з тією ж конфігурацією, що і живий сервер), а потім використовуйте його для тестування процесу випуску. Потім надайте нам цей процес випуску, включаючи перелік змін та порядок їх застосування (тобто 1. Введіть режим обслуговування, 2. застосуйте оновлення SQL, 3. оновлення джерела до версії X, 4. залиште режим обслуговування, 5. молитися)
  • Переконайтеся, що у вас є режим обслуговування, який може вигнати користувачів із збереження цілісності даних. Ви не хочете, щоб ми виконували велике оновлення системи на декількох серверах, коли користувачі входили в систему і виконували транзакції ... це рецепт помилок у більшості випадків.
  • Використовуйте модель розробки, яка дещо стандартизована. Наприклад, усі наші нові додатки на роботі (веб-група) використовують Zend Framework.
  • Надайте нам журнали змін, які ми можемо читати, включаючи список виправлених помилок, які ми можемо шукати, щоб отримати уявлення про масштаби змін. Іноді ми можемо виявити потенційні проблеми лише тому, що ми маємо іншу точку зору.

2

Хоча це нереально, було б корисно, якби розробники були змушені працювати у виробничій ролі sysadmin або dba, перш ніж бути звільненими від світу.

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


Повністю згоден. Я дев, але працював адміністратором протягом декількох місяців, і вважав це надзвичайно цінним досвідом. Це дійсно розширює ваш горизонт.
sleske

1

1) Файл журналу, який реєструє помилки в деталях. або хороша система відстеження помилок на зразок ELMAH.

2) Детальна документація по встановленню, впровадженню та керівництву SA.

3) Плюс вищевказані речі від інших дивовижних SA. :)

Це все, про що я можу зараз подумати.


1

Книга Випустіть її! є приємний вибір страшилок про те, що може піти не так у виробництві. Читання його може дати натхнення / ідеї для проектування з урахуванням операцій. (Це написано Майклом Нігардом, який працював як над розробкою, так і з боку операцій.)


1
  • Не розвивайтеся без специфікацій
  • Документ (або переконайтесь, що ті, хто робить документ, роблять це точно)
  • Не бійтеся підтримувати клієнта (як вищий рівень підтримки)

1

На мій досвід, найбільше значення має те, що розробники подумають про розгортання з першого дня. Як тільки ви почнете замислювати нову функцію у виробничому / споживчому середовищі, почніть думати про те, як вона буде розгорнута в цьому навколишнє середовище та як воно буде працювати.

Як тільки вони вступають у процес розробки, ще не пізно, але це може пройти певний час, перш ніж вони зможуть перенести свою точку зору настільки далеко; вони не розуміють, наскільки абстрактно вони переглядають кодову базу, поки не змушені протистояти їй. На їхню думку, це просто "складова". Особливий інтерес викликає те, як він буде розміщений у попередньо існуючому середовищі, запускаючи попередню (або старішу!) Версію програмного забезпечення. Обговорення розгортання може мати суттєвий вплив на те, як архітектура налаштована на нову функцію.


я згоден з вашим коментарем. Як інженер з розгортання я маю справу з неймовірною кількістю ускладнень під час розгортання, які можуть бути спрощені, якби інженер мав лише мою точку зору.
djangofan

0

Щось мені подобається, що я ще не бачив, це налаштовуватись. Якщо у вас є додаток, який використовує будь-який файл конфігурації, зробіть все, що можна налаштувати.
У своїй компанії я написав простий додаток, який експортує частину бази даних. Наступного тижня я переписував це, щоб дозволити вимкнути невелику частину. Кожен тиждень з тих пір мені доводилося переписувати деталі та перебудовувати її просто, щоб змінити невелику функцію. Я ледве додав конфігураційний файл xml, і тепер його легше перевстановити.
Я люблю конфігураційні файли.


0

Хочеться, щоб розробники мали кращий відрив від завдань із забезпечення якості. Я думаю, що приємно, коли розробник може створити тестові приклади для проекту, над яким він / вона працює, але було б добре, якби ці тести були передані QA. Насправді, це приємно, коли розробники надають невелику допомогу інженерам із забезпечення якості, оскільки це врешті приносить користь DEV.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.