Өнім беті онда API бар деп мәлімдейді, ал интеграция жиналысы екінші сұрақта тұрып қалады. Қандай операция, қандай нысанға, кім шақырады және не сәттілік саналады? Өнімдерді салыстырмас бұрын осы төртеуіне жауап беру әдетте үміткерлердің жартысын алып тастайды. Бұл қалған салыстыруды да тест шеше алатын нәрсеге айналдырады.

API бар деген тұжырымды бір операциямен алмастырыңыз

API — тасымал, қабілет емес. REST соңғы нүктесі, жергілікті сокет және пәрмен жолының қабығы, барлығын API деуге болады, бірақ олар баламалы операциялар ұсынбайды.

Құжаттаманы ашпас бұрын операцияны сөйлем түрінде жазыңыз.

Жергілікті қосылымды бастау — алдында пайдаланушы тұрған клиент жақты әрекет. Құрылғы профилін шығару — артында тізілім тұрған жабдықтау әрекеті. Пайдаланушының рұқсатын өшіру — аудит ізі бар әкімшілік әрекет. Бұл үшеуі әдетте әртүрлі компоненттерде, әртүрлі топтардың меншігінде және әртүрлі өкілеттікпен өмір сүреді.

Шартты тексерілетін ететін төрт өріс

Әр операция үшін төрт өрісті толтырыңыз: нысан, әрекет, шақырушы және сәттілік шарты. Өрісі жетіспейтін шарт — тек тілек.

Кесте — бүкіл жұмыс парағы:

FieldQuestionExample
ObjectWhat is being acted on?One enrolled device
ActionObserve, create, change, start, stop, or revoke?Revoke
CallerWhich identity calls it?Deployment service
SuccessWhat observable state proves it?Future sign-in denied

Сәттілік шарты — адамдар аттап кететін өріс, және интеграцияның жұмыс істейтінін де сол шешеді. Сақталған параметр — белсенді туннель емес, өшірілген тіркелгі — аяқталған сессия емес.

Егер екі операцияға әртүрлі шақырушы қажет болса, бұл екі интеграция. Оларды бір қызметтік тіркелгіге біріктіру әдетте екеуінің де қажеттілігінен артық өкілеттік беруді білдіреді.

Интерфейсті оның нақты қабатына сәйкестендіріңіз

OpenVPN-нің қауымдастық басқару интерфейсі демонмен TCP немесе Unix сокеті арқылы сөйлеседі. Оның пәрмендеріне күй бақылауы және демонға сигналдар кіреді.

Бұл оны демонды басқару арнасына айналдырады, хостингтік жазылым API-сі немесе пайдаланушыларды тіркеу қызметі емес. Оның құжаттамасын мұқият оқу нысанға ие емес қабатқа құрудан сақтайды.

Сол құжаттама протоколдың өз шифрлауы жоқ екенін де айтады. Сокетке жеткен кез келген адам демонды басқара алады, сондықтан оны метрика ағыны емес, сезімтал басқару ретінде қарастырыңыз. Оны loopback немесе Unix сокетіне байлаңыз, ал қашықтағы шақырушыға қажет болса, шектеулі тәртіптің артына қойыңыз. Ыңғайлылық үшін оны интернетке шығару басқару арнасын оқиғаға айналдырады.

Шақырудан кейінгі мінез-құлықты анықтаңыз

Қабылдау — аяқталумен бірдей емес. Демон туннель көтерілмей тұрып қайтуы мүмкін, сондықтан құжатталған аяқталу немесе сәтсіздік оқиғасын күтіп, оны жіберілген сұраумен байланыстырыңыз.

Жауап жоғалса, шақырушының не істейтінін шешіңіз. Жасауды немесе қайта қосылуды соқыр түрде қайталау — бірінші сұраудың әсер еткенін тексерумен бірдей емес.

Рұқсатты жою — кемінде үш түрлі әрекет: болашақ кіруді бұғаттау, белсенді сессияны тоқтату және тіркелгі деректерін кері қайтару. Саясат шынымен талап ететіндерін сұраңыз және шартта қайсысы қайсысы екенін айтыңыз. Дәлелсіз бір сәтті тіркелгі жаңартуын толық кері қайтару деп атамаңыз. Айырмашылық оқиға кезінде, сағат жүріп тұрғанда маңызды.

Шартты пилотпен тексеріңіз

Шағын бекітілген пилот сәттілікті, бас тартуды, үзілісті және қайта әрекетті, содан кейін рұқсат етілуі немесе тыйым салынуы тиіс қолданба операциясын қамтуы керек.

Демон деңгейіндегі интерфейс үшін екі пәрмен бақылау мен сигналды жаттықтырады:

echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505

Тек операция талап ететін өкілеттікті беріңіз. Құпияларды күнделікті журналдардан тыс ұстаңыз және қай нысана зардап шеккенін және қалай аяқталғанын айтуға жететін жеке мәліметтерді жазыңыз.

Басқару API-інің өзі істемей қалған жағдай үшін қалпына келтіру жолын жазыңыз. Нысанға және оның өмірлік цикліне ие интерфейсті таңдаңыз; өнім бетіндегі автоматтандыру тұжырымдары оның орнын баспайды.

Қатысты мақалалар