Изграждането на гъвкаво и годно за употреба приложение за кратко време може да бъде предизвикателство. Добре познатите облаци като AWS, Azure и GCP помагат за доставянето на мащабируеми уеб приложения с ниски разходи в рамките на няколко седмици. Изберете управлявана база данни, преместете кода на приложението в контейнери Docker или back-end функции и внедрете всичко при всяка промяна на кода. Така изглежда съвременната разработка на приложения, нали?
В тази публикация ще опиша най-важните неща, необходими за разработване и доставяне на софтуер с невероятно темпо, с приложение Next.js, написано на TypeScript, внедрено чрез Vercel и подкрепено от безсървърна база данни, наречена FaunaDB. Ще обясня подробно всяко от тези неща, като добавя няколко примера тук и там. Горещо препоръчвам да ги изпробвате всички. Всички те имат щедри безплатни нива и могат да бъдат използвани от малък екип от разработчици с до трима членове.
Използването на платформи за ориентиране към разработчици в комбинация с безсървърни предложения е обобщено като Jamstack. „JAM“ означава JavaScript, API и маркиране. Повече за Jamstack можете да намерите на //jamstack.org/.
Внедряването е подробност за изпълнението
Броят на услугите, които мога да използвам в облак, е огромен. Към този момент AWS разполага с 250 различни услуги. Трябва да дефинирам как да се свържа и да настроя внедряване за новите си функции, за непроизводствената си среда и за производствената си среда
Ако работя по проект с множество разработчици паралелно, бих искал просто да предам URL адрес на моя колега, за да споделя текущия ми клон на функциите.
Освен това трябва да настроя домейни и поддомейни, да мащабирам услугата, да свържа обществени крайни точки, да управлявам връзки с база данни, да настроя управление на тайни и т.н.
Платформата Vercel се свързва безпроблемно със системи за контрол на версиите като GitHub или GitLab. Просто свързвам хранилището си и адаптирам настройката на името на хоста на сървъра на имена и приключих.
В настоящия си проект съм дефинирал някои удобни npm задачи, които се използват във всяка компилация, за да гарантират, че нашият софтуер едновременно работи и отговаря на софтуерните стандарти и най-добри практики:
{"скриптове": {
"tsc": "tsc", // проверяваме типа-безопасност
"lint": "eslint", // направете статичен анализ на кода
"lint: ci": "eslint --max-warnings = 0",
"lint: fix": "eslint --fix",
"test": "jest --watch", // изпълняваме тестове
"test: ci": "jest --ci",
"test: покритие": "jest --coverage",
"проверки": "npm-run-all lint: ci tsc test: ci",
"dev": "env-cmd next dev", // стартиране на локална среда за разработчици
"start": "следващ",
"start-port": "следващ старт -p $ PORT",
"build": "следващо изграждане",
"now-build": "npm-run-all checks build", // CI изграждане
"serve": "следващо начало",
}
}
По подразбиране Vercel изпълнява now-build
задачата при всяка компилация. Това задейства някои други задачи, които статично проверяват нашия код, изпълняват всички тестове и изграждат нашия софтуер.
Поради факта, че всичко просто работи, получавам много функции на платформата за внедряване от кутията. Ползвам се от предстоящи подобрения, без те да ми създават проблеми в бъдеще.