Мен Remote Development Environments (булуттуу өнүктүрүү чөйрөлөрү деп да белгилүү) темасына салыштырмалуу кеч келдим. Негизги себеби, мен алты жылдан ашык иштеп жаткан командада иштебейм. Бирок, мен азыр Loft лабораториясында иштеп жатам жана бизде Remote Development Environment продукту бар: DevPod . Мен DevPod стенди иштеткен FOSDEMде боло тургандыктан, мен биздин баалуулук сунушубузду түшүнгүм келди.
Мурунку иштеп чыгуучу катары мен ар бир иштеп чыгуучунун өнүгүү чөйрөсүн түзүү азабын даана эстейм. Менин карьерамдын башында архитектор менин иштеп чыгуучу машинамды катуу конфигурациялашы керек болчу, ошондуктан ал анын орнотуусуна окшош болчу. Кийинчерээк мен өзүмдүн командамдын мүчөлөрүнө да ушундай кылдым. Өнүктүрүү процессине таасир этүүчү мүмкүн болгон карама-каршылыктардын масштабы дээрлик чексиз: Операция системасы, албетте, SDKлардын версиясы жана даамы, мисалы , Java's Eclipse Temurin vs SapMachine, git hooks ж.б. Бул ар бир долбоордо тер, эмгек жана кан болгон.
Көп жылдар бою мен өнүктүрүү чөйрөсүн кайра чыгаруу үчүн кызыктуу ыкмаларды көрдүм. Башында алар VMлерден, андан кийин контейнерлерден келип чыккан. Менимче, Вагрант менин көңүлүмдү бурган биринчи инструмент болду: мен 2012-жылы баяндамага катышканмын, анда спикер аны машыгуудан мурун машиналарды орнотуу үчүн колдонгонун айткан.
Колдонмонун архитектурасы жылдар бою кыйла өнүгүп, татаал жана татаал болуп калды. Бир нече жыл мурун, бир гана инфраструктуралык көз карандылык SQL маалымат базасы болгон. JVM экосистемасында биз JDBC, бардык SQL маалымат базаларында иштей турган API болгонубуз үчүн бактылуу болдук. Болгону стандарттуу SQL жазууну талап кылсаңыз, анда маалымат базасынын инстанциясын аткаруу убагында конфигурациялай аласыз. Apache Derby жана H2 сыяктуу камтылган маалымат базалары менен ар бир иштеп чыгуучу үчүн атайын Oracle инстанциясы керек болгон эмес.
Заман өзгөрдү. Колдонмолор үчүн SQL маалымат базасы, NoSQL маалымат базасы, Кафка кластери жана бир нече кошумча колдонмо кызматтары керек болушу сейрек эмес. Мындай колдонмолорду иштеп чыккан уюмдар бул татаалдыкты башкаруу үчүн контейнерге байланыштуу кээ бир технологияларды, мисалы , Docker же Kubernetes колдонуп жатышат.
Бирок, бул баштапкы маселени чечпейт: IDE, анын плагиндери, SDK(лар), гит илгичтери жана башка нерселерди кантип тегиздөө керек? Сиз аны Remote Development Environments деген аталыштан ойлосоңуз керек.
Кириш сөздө мен RDEлер булутту өнүктүрүү чөйрөлөрү деп аталарын айттым. RDEлердин негизги идеясы - булутта мүмкүн болгон нерселердин баарын сактоо жана аны бардык иштеп чыгуучулар менен бөлүшүү. Мындан тышкары, сиз алардын эң кеңири таралган Cloud провайдерлери жана эң көп колдонулган IDEлери аркылуу иштешин каалайсыз. Мындай муктаждык пайда болгондо, тармактын актерлору бир стандарттын айланасына чогула турган учур келди. Microsoft ушул максатта VS Code Remove иштеп чыгуу плагини үчүн Өнүгүү Контейнеринин стандартын демилгелеген.
Өнүктүрүү контейнери (же кыскача иштеп чыгуучу контейнер) контейнерди толук өзгөчөлөнгөн өнүктүрүү чөйрөсү катары колдонууга мүмкүндүк берет. Ал тиркемени иштетүү, коддук база менен иштөө үчүн зарыл болгон куралдарды, китепканаларды же иштөө убакыттарын бөлүү үчүн жана үзгүлтүксүз интеграцияга жана тестирлөөгө жардам берүү үчүн колдонулушу мүмкүн. Иштеп чыгуучу контейнерлерди жергиликтүү же алыстан, жеке же коомдук булутта, ар кандай колдоочу куралдарда жана редакторлордо иштетсе болот.
Иштеп чыгуу контейнеринин спецификациясы учурдагы форматтарды жалпы иштеп чыгуунун атайын жөндөөлөрү, куралдары жана конфигурациялары менен байытуунун жолдорун табууга умтулат, ошол эле учурда жөнөкөйлөштүрүлгөн, уюштурулбаган жалгыз контейнер опциясын камсыз кылуу - аларды коддоо чөйрөсү катары же үзгүлтүксүз интеграциялоо жана тестирлөө үчүн колдонсо болот. Спецификациянын негизги метадайындарынан тышкары, спецификация иштеп чыгуучуларга Функциялар жана Калыптар аркылуу контейнерди орнотуу кадамдарын тез бөлүшүүгө жана кайра колдонууга мүмкүнчүлүк берет.
Конфигурация файлы devcontainer.json
болуп саналат. Схема шилтемесин бул жерден таба аласыз. VS Code, Visual Studio жана IntelliJ өнүмдөрү devcontainer.json
файлын колдоно алышат. Провайдер тараптан GitHub Codespaces, CodeSandbox жана DevPod аны колдойт.
DevPod — devcontainer.json
рычагын колдонгон чечим. Ал үч негизги касиетти ишке ашырат:
DevPod колдонууга ыңгайлуу жана жөнөкөй болуп иштелип чыккан, аны колдонуу оңой. Мен бул постту жазууну чечтим, анткени бул продукт мага таасирленип, ойлорумду иретке келтирүү үчүн.
Биринчи кадам DevPod өзүн орнотуу болуп саналат. I'm on Mac; Homebrew рецепти бар.
brew install devpod
Орнотулгандан кийин, сиз аны CLI же GUIден иштете аласыз. Мен колдо болгон варианттарды түшүнүүгө жардам берүү үчүн, башында GUI'лерди жактырам.
DevPod провайдерлерге: контейнерлерди иштете турган жерлерди сунуштайт. Демейки Докер болуп саналат. Кошумча провайдерлерди, анын ичинде Cloud Провайдерлерин жана Kubernetes кластерлерин кошо аласыз.
Бул пост үчүн мен Dockerди сактап калам — мен OrbStack колдонуп жатам. Эми этке. Жумуш мейкиндиктеринин меню пунктуна баралы. Эгер сизде мурунтан эле жумушчу мейкиндиктери түзүлгөн болсо, алар бул жерде пайда болушу керек. Бул биздин биринчи иш сапарыбыз болгондуктан, биз аны түзөбүз. btn:[Жумуш мейкиндигин түзүү] баскычын басыңыз. Келгиле, тез баштоо мисалдарынын бирин, б.а. , Rust, аракет кылалы. Менин тандоом IDE - IntelliJ IDEA, бирок сиз өзүңүздүкүн тандай аласыз. Сүрөттү, IDEди жана камсыздоочуну тандагандан кийин, Иш мейкиндигин түзүү баскычын чыкылдатыңыз.
Бул учурда, DevPod сүрөттү жүктөп алып, IntelliJ ичинде OrbStackде иштеп жаткан долбоорду ачат.
Мындан ары, биз ар бир команда мүчөсү бир эле Rust версиясын колдонот деп ишенип, Rust долбоорубуздун үстүндө иштей баштайбыз.
Бул жөндөөнү биринчи жолу колдонгонуңузда, DevPod JetBrains кардарын да жүктөп алаарын эске алыңыз. Бирок бул бир жолку жүктөө кечигүү.
Мисалы, Git алдын ала жасалган илгичтерге да тиешелүү. Эгер сиз башка IDE ичинде иштеп чыгууну кааласаңыз, аны ишке киргизүү убагында тандаңыз, ошондо сиз жакшысыз. Күнүмдүк жумушуңуз бүткөндөн кийин, контейнерди токтотуңуз. Эгер сиз булутта иштеп жатсаңыз, анда ал акчаны үнөмдөйт. Эртеси күнү контейнерди кайра иштетип, жумушуңузду улантыңыз.
DevPod - бул сиздин инструмент куруңуздун айланасындагы жакшы курал, ал иштеп чыгуучу топ(лор)уңузга бир эле машина конфигурациясын эч кыйынчылыксыз бөлүшүүгө мүмкүндүк берет. Бул киришүү блогунда мен сиз кыла ала турган нерселердин бир аз бөлүгүн көрсөттүм. Мен сизге гетерогендүү өнүгүү чөйрөсүнө туш болсоңуз, анын күчүн колдонууга чакырам.
Андан ары баруу үчүн: